的实数,这样可以加快序列的收敛速度 。c语言代码如下:【数学术语 开方】// 2015-12-24// By: ChenYu#include "math.h"#include "stdio.h"#define ABS(a) ((a)<0?-(a):(a))#ifdef _WIN32 typedef unsigned __int64 uint64;#else typedef unsigned long long uint64;#endif// calculate a approximate valuestatic double calcInitRoot(double x, int n){ const uint64 exptMask=((uint64)1<<11)-1; const uint64 fracMask=((uint64)1<<52)-1; uint64 xInt=*(uint64*)&x; int xExpt=(int)((xInt>>52)&exptMask)-1023; xInt=((uint64)((xExpt+1024*n-1)/n)<<52)+(xInt&fracMask)/n; return *(double*)&xInt;}double calcRoot(double x, int n){ int i, j, s=1-((x<0)<<(n&1)); double a=ABS(x); double x1, x0=calcInitRoot(a, n); double err=x0*1e-14; if(x==0) return 0; for(i=1; i<50; i++) { double xn=1; for(j=0; j<n-1; j++) xn*=x0; x1=((n-1)*x0*xn+a)/(xn*n); // printf("x%d=%.14f\n", i, x1); if(ABS(x1-x0)<=err) break; x0=x1; } return s*x1;}void main(){ double x=-31141.592653589793; int n=11; double y=calcRoot(x, n); printf("root(%g,%d)=%+.14f\n", x, n, y); printf("root(%g,%d)=%+.14f\n", x, n, pow(ABS(x), 1.0/n));}
- 法国数学家拉普拉斯提出的一种科学假设 拉普拉斯妖
- 程式开发中的术语 Profile
- 七年级数学下 中华一题
- 2010MBA联考备考教程:数学分册
- 第2版 工程数学线性代数
- 胡泽春
- 2下 国小数学高分拔尖提优训练
- 小学生数学速算训练卡:三年级
- 德国数学家 约翰·卡尔·弗里德里希·高斯
- 名师点拨课课通:2年级数学