热门回答
不论用matlab, java, c, c++, n=300时算出来的结果都是雹则
0.97310803806268
这几种语言的都是采用IEEE-754的64位双精度浮点数的,精度是约15位十进制数
Fortran默认的应该也是双精度的浮点数,不过有些版本也支持128位精度的浮点数
其他语言一般不支持128位精度,如果你一定要,要下载附加的package,C/C++可以用
MIRACL
http://www.shamus.ie/GMP
http://gmplib.org/matlab还没有见过,如果只是要用你上面的程序,其实只需要用到加减乘除和exp(),自己写一个也不算难
补充:
我说的自己写一个的意思是自己写一个使用128位精度计算的加法、减法、乘法、除法、指数函数。
MIRACL, GMP就是这样用128精度计算的C/C++函数库,MATLAB没有见过这样的函数库,可能需要自己写。
既然你用Fortran可以支持128位精度计算,那最方便的就是用Fortran直接计算,或者使用Matlab对Fortran的接口,这个话题太大了,这里讲不来
补充二:
http://www.mathworks.com/matlabcentral/fileexchange/22725这个是matlab里的高精度计算toolbox,精度可以任意调整
我使用100位十进制的精度计算,结果是
y{1} =
+.97310803806267328229195014415098271682317000718648226587062665151441784458895e0+0i
和用判肆闷double精度计算没有差掘弯别,请检查你用fortran计算的程序是否有错1