日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

C语言表示欧拉常数算法,计算li(x)的两个级数的C语言实现

發(fā)布時(shí)間:2023/12/16 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言表示欧拉常数算法,计算li(x)的两个级数的C语言实现 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

該樓層疑似違規(guī)已被系統(tǒng)折疊?隱藏此樓查看此樓

//?素?cái)?shù)定理li(x)計(jì)算值

#include?

#include?

#include?

#include?

#include?"my_data.h"

typedef?long?double?extended;?//?定義擴(kuò)展精度類型

//?歐拉常數(shù)?γ?=?0.57721566490153286060651209...

const?extended?GAMMA?=?0.5772156649015328606L;

const?extended?__li2?=?1.045163780117492785L;

extended?fact(uint32);

extended?Ei(extended,long,long?*);?//標(biāo)準(zhǔn)算法

extended?li(extended,long,long?*);?//校對(duì)算法

void?liDemo()

{

clock_t?t1,t2;

long?i,?c1,?c2;

long?v1?=?-100L;

extended?d1?=?10.0L;

extended?e1,e2,u1;

for?(i?=?1;?i?<=?200;?i++)

{

u1?=?logl(d1);

t2?=?clock();

e1?=?Ei(u1,v1,&c1);

e2?=?li(d1,v1,&c2);

t1?=?clock();

printf("10^%3ld?=?%.18Le??%.18Le",i,e1,e2);

printf("??%4ld??%4ld??%2ld\n",c1,c2,t1-t2);

d1?*=?10.0L;

}

}?//?演示素?cái)?shù)定理li(10^N)計(jì)算值(N<=200)

int?main()

{

liDemo();

system("PAUSE");

return?0;

}

extended?fact(uint32?n)

{

if?(n?==?0)?return?1.0L;

else?return?n?*?fact(n?-?1);

}?//?計(jì)算n的浮點(diǎn)階乘

extended?Ei(extended?u,?long?v,?long?*?c)

//?Ei(u)?:=?γ?+?lnu?+?sum{}

//?sum?{1?to?inf}?u^n?/?n*n!

{

extended?d0?=?powl(10,v);

extended?d1?=?logl(u);

extended?e0,e1,e2,f0;

*c?=?0;e0?=?0.0L;

do?{

f0?=?e0;?*c?+=?1;

e1?=?expl(*c?*?d1);

e2?=?*c?*?fact(*c);

e0?+=?e1?/?e2;

}?while?((e0?!=?f0)?&&

(fabsl(e0?-?f0)?>=?d0));

return?GAMMA?+?d1?+?e0;

}?//?計(jì)算Ei(u)即li(e^u),存在誤差

extended?li(extended?x,?long?v,?long?*?c)

{

//?li(x)?:=?γ?+?ln(ln(x))?+?sqrt(x)?*?expr1

//?expr1?:=?sum{n:=1_to_inf}(-1^n-1)ln(x)^n

//?/n!2^n-1*sum{k:=1_to_floor((n-1)/2)}1/(2k+1)

extended?d0?=?powl(10,v);

extended?d1?=?logl(logl(x));

extended?e0,e1,e2,e3,f0;

*c?=?0;?e0?=?0.0L;

do

{

f0?=?e0;?*c?+=?1;

e1?=?expl(*c?*?d1);

if?(!(*c?&?1))?e1?=?-e1;

e2?=?fact(*c)*powl(2,*c-1);

e3?=?0.0;?long?k;

for?(k?=?0;?k?<=?(*c-1)>>1;?k++)

{

e3?+=?(extended)1/((k<<1)+1);

}

e0?+=?e1?/?e2?*?e3;

}?while?((e0?!=?f0)?&&

(fabsl(e0?-?f0)?>=?d0));

return?GAMMA?+?d1?+?e0?*?sqrtl(x);

}?//計(jì)算li(x)的一個(gè)更快的級(jí)數(shù),存在誤差

總結(jié)

以上是生活随笔為你收集整理的C语言表示欧拉常数算法,计算li(x)的两个级数的C语言实现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。