函数sqrt,asin,acos源代码[备忘]
/* *sqrt源代码 */ double my_sqrt(double x) { register double ret; __asm__( "fsqrt" : "=t" (ret) : "0" (x) ); return ret; }//计算x的平方根 /* *asin源代码 */ double atan2 (double x, double y) { register double ret; __asm__( "fpatan\n\t" "fld %%st(0)" : "=t" (ret) : "0" (y), "u" (x) ); return ret; }//求x / y的反正切值。 double my_asin(double x) { return atan2 (x, sqrt (1.0 - x * x)); }//求x的反正弦值。 /* *acos源代码 */ double atan2 (double x, double y) { register double ret; __asm__( "fpatan\n\t" "fld %%st(0)" : "=t" (ret) : "0" (y), "u" (x) ); return ret; }//求x / y的反正切值。 double my_acos(double x) { return atan2 (sqrt (1.0 - x * x), x); }//求x的反余弦值。
atan的泰勒公式 arctanx=∫(0→x)1/(1+x^2)dx=x-x^3/3+x^5/5+……+(-1)^n*x^(2n+1)/(2n+1)
/***********************/ 以上是你要求的源代码,如果你要自己来实现,可以参考数值计算或数值逼近 sqrt:可以使用牛顿迭代公式,f(x)=x^2 - a 求零点(即方程f(x)=0的根),就是开方了。 而对于后面的两个,sin cos exp 是用泰勒公式和麦克劳林公式来计算,通过这里演化迭代就可以了,对于任何的c还是c++的编译器,在库函数里面都应该有这些基本的数学函数的,你在使用的时候加上#include<math.h>就可以了
天气
分类
标签
存档
- 2024年3月(1)
- 2024年2月(1)
- 2023年8月(1)
- 2023年7月(1)
- 2023年5月(1)
- 2022年9月(1)
- 2022年8月(1)
- 2022年1月(2)
- 2021年10月(1)
- 2021年7月(1)
- 2020年9月(1)
- 2020年8月(1)
- 2020年7月(1)
- 2020年6月(2)
- 2020年5月(1)
- 2019年10月(1)
- 2019年9月(2)
- 2019年7月(1)
- 2019年1月(4)
- 2018年12月(1)
- 2018年11月(1)
- 2018年10月(5)
- 2018年8月(2)
- 2018年7月(5)
- 2018年6月(2)
- 2018年4月(1)
- 2018年2月(1)
- 2017年12月(2)
- 2017年11月(1)
- 2017年10月(4)
- 2017年9月(3)
- 2017年8月(2)
- 2017年5月(2)
- 2017年4月(7)
- 2017年2月(1)
- 2016年12月(1)
- 2016年11月(2)
- 2016年10月(3)
- 2016年6月(2)
- 2016年3月(1)
- 2016年1月(2)
- 2015年12月(3)
- 2015年11月(3)
- 2015年10月(1)
- 2015年9月(1)
- 2015年8月(2)
- 2015年7月(2)
- 2015年5月(1)
- 2015年4月(1)
- 2015年2月(1)
- 2015年1月(1)
- 2014年12月(4)
- 2014年11月(1)
- 2014年10月(1)
- 2014年8月(4)
- 2014年7月(2)
- 2014年6月(1)
- 2014年2月(2)
- 2014年1月(2)
- 2013年12月(26)
- 2013年10月(2)