當前位置:首頁 » 編程軟體 » acos源碼編譯

acos源碼編譯

發布時間: 2023-12-08 22:07:02

㈠ 求函數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的反餘弦值。

/***********************/
以上是你要求的源代碼,如果你要自己來實現,可以參考數值計算或數值逼近
sqrt:可以使用牛頓迭代公式,f(x)=x^2 - a
求零點(即方程f(x)=0的根),就是開方了。

而對於後面的兩個,sin cos exp 是用泰勒公式和麥克勞林公式來計算,通過這里演化迭代就可以了,對於任何的c還是c++的編譯器,在庫函數裡面都應該有這些基本的數學函數的,你在使用的時候加上#include<math.h>就可以了

㈡ 怎樣用C語言編寫數學公式

1、C語言有現場的常用數學函數,所在函數庫為math.h、stdlib.h。

函數名及解釋:
int abs(int i) 返回整型參數i的絕對值
double cabs(struct complex znum) 返回復數znum的絕對值
double fabs(double x) 返回雙精度參數x的絕對值
long labs(long n) 返回長整型參數n的絕對值
double exp(double x) 返回指數函數ex的值
double frexp(double value,int *eptr) 返回value=x*2n中x的值,n存貯在eptr中
double ldexp(double value,int exp); 返回value*2exp的值
double log(double x) 返回logex的值
double log10(double x) 返回log10x的值
double pow(double x,double y) 返回xy的值
double pow10(int p) 返回10p的值
double sqrt(double x) 返回+√x的值
double acos(double x) 返回x的反餘弦cos-1(x)值,x為弧度
double asin(double x) 返回x的反正弦sin-1(x)值,x為弧度
double atan(double x) 返回x的反正切tan-1(x)值,x為弧度
double atan2(double y,double x) 返回y/x的反正切tan-1(x)值,y的x為弧度
double cos(double x) 返回x的餘弦cos(x)值,x為弧度
double sin(double x) 返回x的正弦sin(x)值,x為弧度
double tan(double x) 返回x的正切tan(x)值,x為弧度
double cosh(double x) 返回x的雙曲餘弦cosh(x)值,x為弧度
double sinh(double x) 返回x的雙曲正弦sinh(x)值,x為弧度
double tanh(double x) 返回x的雙曲正切tanh(x)值,x為弧度
double hypot(double x,double y) 返回直角三角形斜邊的長度(z),x和y為直角邊的長度,z2=x2+y2


2、復雜的數學函數可以用自定義函數的形式實現。

例如:

doubleConerVelocity(intA,doublex1,doubley1,doublex2,doubley2,doublet1,doublet2)
{
doubleT,V;
T=acos(abs(x1*x2+y1*y2)/sqrt(x1*x1+y1*y1)/sqrt(x2*x2+y2*y2));
V=(A*(t2-t1))/(2*sin(T/2));
returnV;
}
熱點內容
db2新建資料庫 發布:2024-09-08 08:10:19 瀏覽:170
頻率計源碼 發布:2024-09-08 07:40:26 瀏覽:778
奧迪a6哪個配置帶後排加熱 發布:2024-09-08 07:06:32 瀏覽:100
linux修改apache埠 發布:2024-09-08 07:05:49 瀏覽:208
有多少個不同的密碼子 發布:2024-09-08 07:00:46 瀏覽:566
linux搭建mysql伺服器配置 發布:2024-09-08 06:50:02 瀏覽:995
加上www不能訪問 發布:2024-09-08 06:39:52 瀏覽:811
銀行支付密碼器怎麼用 發布:2024-09-08 06:39:52 瀏覽:513
蘋果手機清理瀏覽器緩存怎麼清理緩存 發布:2024-09-08 06:31:32 瀏覽:554
雲伺服器的優點與缺點 發布:2024-09-08 06:30:34 瀏覽:734