- 博客(21)
- 资源 (3)
- 问答 (1)
- 收藏
- 关注
原创 高精度反正切函数的实现
高精度反正切函数的实现反正切函数的根本实现方法还是泰勒展开式逼近,但它不能单独采用,必须使自变量X趋进这个函数曲线的平滑度最高的点,这个点的收敛速度最快,反正切函数arctan(x)的这个点是0和无穷大。这里采用趋近零的方法,arctan(x)中的x的值大多是没法用泰勒展开式计算或计算量太大,时间太长。这里需要通过反正切公式推导出合适的新的公式,把对 Arctan(x)的直接运算转换成arctan(0.000…xxx)运算,然后通过公式反算回去:公式原型:Arctan(x)=Arctan(y)+Ar
2020-12-20 11:24:39 2057 1
原创 大数(正整数)除法之多精除以单精
大数运算中会经常遇到多精除以单精的情况,有时也会把某些除法分解成多精除以单精加快运行速度,这里所说单精数是不超过cpu位长二分这一的数,32位机是65535,在此以千进制数为例讲解一下具体实现, For i = 1 To 被除数数组长度 运算结果(i) = 被除数(i) \ 单精数 被除数(i + 1) = (被除数(i) M...
2017-08-05 15:04:28 550
原创 高精度加,减法算法
大数加,减法目前我所知道的算法:1)对于用子符串形式表示的数,可以直接相加,减,例:1 的ascii码为49,2 的ascii码为50,1+2的字符串相加为49+50=99 ,再减去一次48等于51,51是3的ascii码。2)对于直接用数的值表示的数,可以直接相加减,也可以换算成大的进制表示形式进行运算,理论上大进制表示的数运行效率更高,如:1234+4567,当十进制时要运行4次加法,...
2017-07-30 10:03:55 773
原创 大数除法之迭代法
上一篇文章讲到了估商法的原理,有了一个不错的效率,但在要求精度较大时,速度和迭代法相比差距很大。 除法:u/y=u*(1/y); 先讲一下倒数迭代式:x1=(2-y*x0)*x0,x0是y的倒数的近似值,它必须要小于y的倒数。另外迭代式中的乘法子程序要选用快速乘法(如FFT算法的乘法子程序)。 否则迭代法的除法速度是很慢的,远远小于估商法。 以...
2017-07-25 09:15:25 2057 1
原创 大数除法之估商法源码
Public Function myEXCEPT(str1 As StrToZx, str2 As StrToZx) As StrToZx '除法子程序 Dim a() As Long Dim b() As Long Dim i As Long Dim ysjg() As Long
2017-07-22 10:13:15 585
原创 大数除法之估商法
我用VB完整的实现了估商法,支持正负,小数,科学计数法,之所以说完整实现,是因为这个程序是我写的(落叶高精度表达式计算机)的子程序,能够和其它计算程序配合,实现高精度加减乘除,阶乘,乘方,开N次方,函数等混合运算.例:能够运行万位精度,开10000次方根正确运算,开N次方根是用的迭代法,为什么举这个例子,因为参入运算的子程序如果有问题,是计算不出正确结果的,现在这个计算机已完善:另外我再...
2017-07-22 10:04:43 3759
原创 落叶高精度表达式计算器1.2版
落叶高精度表达式计算器1.2版,针对1.1版有了以下改进:1:速度在以前的版本基础上有了大的改进,三角函数以前的万位精度6秒,提升到现在有2秒,对数函数以前的万位精度6秒,提升到现在的3.5秒,乘方程序原14秒左右,现5.5秒左右,整指数乘方提升了十多倍,反三角函数以前26秒,现提升到4-5秒。exp(x)以前的9秒, 现提升到2.3秒。2:针对原乘方程序中最大指数的限制,
2017-04-28 09:12:58 474
原创 发布两个高精计算公式
我在写高精函数时推导出两个数学公式,在我的程序算法中有比较重要的应用,特分享出来,因在网上没找到相同的公式,所以我以原创的方式发布:这两个公式都是先找到实例应用,再求理论推导的。公式原型:Arctan(x)=Arctan(y)+Arctan((x-y)/(1+x*y)),x和y的符号必须相同,且x≠0;当x>0;y正无限大时:Arctan(y)=pi/2,(x-y)/(1+x*y)=-1/x...
2017-04-12 19:54:21 335
原创 用倍角公式解三角函数, 反三角函数.
研究出一个非常有意义的方法,虽然速度很慢,以sin函数为例:精度取32,sin(1.23e-15) = 1.2299999999999999999999999999997E-15sin(1.23e-16) = 1.23E-16sin(1.23e-31) = 1.23E-31,这个计算结果表明,当自变量足够小时(和精度直接相关),sin(x)的值就是x本身,假如用三倍角公式(sin3x...
2017-03-13 14:08:54 2619
原创 落叶高精度表达式计算器v1.1版
落叶高精度表达式计算器v1.1版 针对1.0版作了以下更改: 纠正了开立方程序某一些特殊数精度不够的问题,纠正了自然对数函数中的一个辅助子函数的问题,万位精度自然对数运算时间由1.0版的7秒,变回现在的6秒, 纠正了乘方运算符和阶乘运算符运算等级定位不准的问题,填加了乘方程序对一些特殊值的判断。纠正了乘方运算小位数,高精度运算过慢的问题,例:123^10000万
2017-01-30 21:56:56 497
原创 高精度表达式计算器V1.0版
落叶高精度表达式计算器V1.0(32位)版 本计算器程序是在win7 32位系统上,使用VB6.0开发的,本程序的主要特点是:1) 高精度,支持万位精度的有理数常用运算; 包括:加,减,乘,除,乘方,开N次方,三角函数,反三角函数,双曲三角函数,反双曲三角函数等。2) 表达式运算,本程序没有采用常用计算器的边输入边计算,而是输入完所有数据或算式后,解析表达式,分
2016-12-28 10:28:12 1414
原创 多精度通用加法子程序源码
Type StrToZx '高精度数的结构头 ZhFhBz As Boolean '正负号标志,正为1,负为0 XsdWz As Long '小数点右边数字的长度。例1234.56中这个数是2
2016-12-12 22:12:19 507
原创 高精度乘方二
上面只是说到整指数,如果指数是小数,情况就复杂多了,有一种方法是先把小数化成分数如2的1.2次方就等于2的5分之6次方,等价于2的6次方,再开5次方,yroot(5,2^6)=2.2973967099940700135972538935559这个方法缺点很大,如2^0.1111111111111111等于2的10000000000000000次方,然后再开1111111111111111次方这...
2016-06-17 14:04:13 852
原创 高精度乘方一
先说说整指数乘方,百度上搜到一个程序,效率很高,代码简洁:int pow(int x,int n){int temp(x),res(1);while(n){if(n&1){res *= temp;}temp *= temp;n>>=1;}return res;}把2^61代入运算,内存变化图是这样的:61的二进制形式是111101res = 2 2...
2016-06-17 14:01:33 1554
原创 高精度反三角函数的实现
本帖最后由 落叶 于 2016-6-5 09:16 编辑 经过了几天艰难的查资料,对高精反三角函数实现并运行成功,分亨一下, 主要资料参考:http://blog.163.com/shikang999@1 ... 962012426103454943/ 因为加入了我的改进,和我自已的方法,所以我在原创中发布: 这里反三角函数的根本实现方法还是泰勒展开式,但它不能单独...
2016-06-05 09:22:33 4568 2
原创 对反正弦函数的泰勒公式的转换加速
反正弦函数的泰勒公式为:arcsin(x)=x+1/2*x^3/3+ 1/2*3/4*x^5/5+ 1/2*3/4*5/6*x^7/7+............. ∑(n=1~∞) [(2n)!]x^(2n+1)/[4^n*(n!)^2*(2n+1)] 设 Gb 为 2 4 6 ....的最小公倍数 ,Ga 为 3 5 7
2016-05-30 14:53:13 8789
原创 高精度对数函数的实现二
针对泰勒展开式:ln(1+x)=x-x^2/2+x^3/3-……+(-1)^(k-1)*(x^k)/k(|x|转换成:ln(1+x)=x(1-x(1/2-x(1/3-x(1/4-x(1/5..........)))))这样转换并没有提高效率,但可以预算1/2 1/3 1/4 1/5.....针对一万精度,因为经过了开方优化,这里只需要10000\70=133次泰勒级数运算,所以可以预制133个万位...
2016-05-25 21:05:15 1771
原创 高精度对数函数的实现
针对高精对数,我目前已采用了容易编程和高效的方法。就是开方分解Ln(x)中的X(早先调试开方程序时就发现,大于零的数进行开方运算,当开方次数无限增加时,开方值无限接近1),当然开方不是乱用的,必需有理论或已有公式的支持,这个公式就是:,其实这个算法本身并不会使对数运算获得本质的提升,提速的根本是开平方有快速算法,这个和傅里叶变换对乘法的加速是一个原理,傅里叶变换本身也不会使乘法变快,提速的根本...
2016-05-22 18:39:11 3028
原创 如何调用GMP大数库中的开N次方函数mpz_root()
这个函数原型mpz_root(mpz_t rop,mpz_t op,unsigned long int n),它只提供N次根整数部分,这个函数在PDF文件中并没有注明传参的要求(也许是我没查到),即使是正整数不进行一些处理也得不到正确答案,如果要对小数开方,和需要更高的精度,也需要一些前期和后期的处理,因为我曾写过手工开N次方程序,昨天经过调试,发现两个函数前后处理大致一样,方法如下: 例:
2016-05-16 10:23:21 3156
原创 基于泰勒展开式的高精三角函数实现,方法三
对sin()的高精算法又进一步改进,分享一下,欢迎吧友们指正。还是针对sin()函数的泰勒展开式进行计算:用到改进公式:sinx=x−x⋅x^2(4⋅5⋅6⋅7⋅8⋅9−x^2(6⋅7⋅8⋅9−x^2(8⋅9−x^2)))/9!............. 此公式为本人原创,适合泰勒展开式中一部分公式加速运算,缺点是需要预先根据精度估算出所需的泰勒级数,程序变得复杂,冗余量很大,我在程序中最后没有...
2016-04-16 20:46:25 3991
原创 基于泰勒展开式的高精三角函数实现
以sin()函数为例谈谈我的三种实现:公式是sinx=x−x33!+x55!−x77!+x99! ∑n=1∞(−1)nx(2n−1)(2n−1)!第一种是在硬算的基础上简单优化:下面是流程码 x2 = x*x 'x*x
2016-04-16 20:37:42 4568
落叶高精度表达式计算器v1.0(内含VB运行库)
2016-12-26
落叶高精度表达式计算器v1.0
2016-12-25
MPFR库的log和sin函数的性能
2016-12-24
TA创建的收藏夹 TA关注的收藏夹
TA关注的人