📄 ntl_rr_lanczos.hpp
字号:
boost::lexical_cast<T>("1143503533822162444712.335663112617754987"), boost::lexical_cast<T>("14779233719977576920.37884890049671578409"), boost::lexical_cast<T>("162409028440678302.9992838032166348069916"), boost::lexical_cast<T>("1496561553388385.733407609544964535634135"), boost::lexical_cast<T>("11347624460661.81008311053190661436107043"), boost::lexical_cast<T>("68944915931.32004991941950530448472223832"), boost::lexical_cast<T>("322701221.6391432296123937035480931903651"), boost::lexical_cast<T>("1092364.213992634267819050120261755371294"), boost::lexical_cast<T>("2380.151399852411512711176940867823024864"), boost::lexical_cast<T>("2.506628274631000502415765284811045253007"), }; static const T denom[31] = { boost::lexical_cast<T>("0"), boost::lexical_cast<T>("0.8841761993739701954543616e31"), boost::lexical_cast<T>("0.3502799997985980526649278464e32"), boost::lexical_cast<T>("0.622621928420356134910574592e32"), boost::lexical_cast<T>("66951000306085302338993639424000"), boost::lexical_cast<T>("49361465831621147825759587123200"), boost::lexical_cast<T>("26751280755793398822580822142976"), boost::lexical_cast<T>("11139316913434780466101123891200"), boost::lexical_cast<T>("3674201658710345201899117607040"), boost::lexical_cast<T>("981347603630155088295475765440"), boost::lexical_cast<T>("215760462268683520394805979744"), boost::lexical_cast<T>("39539238727270799376544542000"), boost::lexical_cast<T>("6097272817323042122728617800"), boost::lexical_cast<T>("796974693974455191377937300"), boost::lexical_cast<T>("88776380550648116217781890"), boost::lexical_cast<T>("8459574446076318147830625"), boost::lexical_cast<T>("691254538651580660999025"), boost::lexical_cast<T>("48487623689430693038025"), boost::lexical_cast<T>("2918939500751087661105"), boost::lexical_cast<T>("150566737512021319125"), boost::lexical_cast<T>("6634460278534540725"), boost::lexical_cast<T>("248526574856284725"), boost::lexical_cast<T>("7860403394108265"), boost::lexical_cast<T>("207912996295875"), boost::lexical_cast<T>("4539323721075"), boost::lexical_cast<T>("80328850875"), boost::lexical_cast<T>("1122686019"), boost::lexical_cast<T>("11921175"), boost::lexical_cast<T>("90335"), boost::lexical_cast<T>("435"), boost::lexical_cast<T>("1"), }; return boost::math::tools::evaluate_rational(num, denom, z, 31); } template <class T> static T lanczos_sum_expG_scaled(const T& z) { static const T num[31] = { boost::lexical_cast<T>("30137154810677525966583148469478.52374216"), boost::lexical_cast<T>("28561746428637727032849890123131.36314653"), boost::lexical_cast<T>("13083250730789213354063781611435.74046294"), boost::lexical_cast<T>("3857598154697777600846539129354.783647"), boost::lexical_cast<T>("822596651552555685068015316144.0952185852"), boost::lexical_cast<T>("135131964033213842052904200372.039133532"), boost::lexical_cast<T>("17787555889683709693655685146.19771358863"), boost::lexical_cast<T>("1926639793777927562221423874.149673297196"), boost::lexical_cast<T>("174989113988888477076973808.6991839697774"), boost::lexical_cast<T>("13513425905835560387095425.01158383184045"), boost::lexical_cast<T>("896521313378762433091075.1446749283094845"), boost::lexical_cast<T>("51496223433749515758124.71524415105430686"), boost::lexical_cast<T>("2575886794780078381228.37205955912263407"), boost::lexical_cast<T>("112677328855422964200.4155776009524490958"), boost::lexical_cast<T>("4322545967487943330.625233358130724324796"), boost::lexical_cast<T>("145663957202380774.0362027607207590519723"), boost::lexical_cast<T>("4314283729473470.686566233465428332496534"), boost::lexical_cast<T>("112246988185485.8877916434026906290603878"), boost::lexical_cast<T>("2561143864972.040563435178307062626388193"), boost::lexical_cast<T>("51103611767.9626550674442537989885239605"), boost::lexical_cast<T>("887985348.0369447209508500133077232094491"), boost::lexical_cast<T>("13359172.3954672607019822025834072685839"), boost::lexical_cast<T>("172660.8841147568768783928167105965064459"), boost::lexical_cast<T>("1897.370795407433013556725714874693719617"), boost::lexical_cast<T>("17.48383210090980598861217644749573257178"), boost::lexical_cast<T>("0.1325705316732132940835251054350153028901"), boost::lexical_cast<T>("0.0008054605783673449641889260501816356090452"), boost::lexical_cast<T>("0.377001130700104515644336869896819162464e-5"), boost::lexical_cast<T>("0.1276172868883867038813825443204454996531e-7"), boost::lexical_cast<T>("0.2780651912081116274907381023821492811093e-10"), boost::lexical_cast<T>("0.2928410648650955854121639682890739211234e-13"), }; static const T denom[31] = { boost::lexical_cast<T>("0"), boost::lexical_cast<T>("0.8841761993739701954543616e31"), boost::lexical_cast<T>("0.3502799997985980526649278464e32"), boost::lexical_cast<T>("0.622621928420356134910574592e32"), boost::lexical_cast<T>("66951000306085302338993639424000"), boost::lexical_cast<T>("49361465831621147825759587123200"), boost::lexical_cast<T>("26751280755793398822580822142976"), boost::lexical_cast<T>("11139316913434780466101123891200"), boost::lexical_cast<T>("3674201658710345201899117607040"), boost::lexical_cast<T>("981347603630155088295475765440"), boost::lexical_cast<T>("215760462268683520394805979744"), boost::lexical_cast<T>("39539238727270799376544542000"), boost::lexical_cast<T>("6097272817323042122728617800"), boost::lexical_cast<T>("796974693974455191377937300"), boost::lexical_cast<T>("88776380550648116217781890"), boost::lexical_cast<T>("8459574446076318147830625"), boost::lexical_cast<T>("691254538651580660999025"), boost::lexical_cast<T>("48487623689430693038025"), boost::lexical_cast<T>("2918939500751087661105"), boost::lexical_cast<T>("150566737512021319125"), boost::lexical_cast<T>("6634460278534540725"), boost::lexical_cast<T>("248526574856284725"), boost::lexical_cast<T>("7860403394108265"), boost::lexical_cast<T>("207912996295875"), boost::lexical_cast<T>("4539323721075"), boost::lexical_cast<T>("80328850875"), boost::lexical_cast<T>("1122686019"), boost::lexical_cast<T>("11921175"), boost::lexical_cast<T>("90335"), boost::lexical_cast<T>("435"), boost::lexical_cast<T>("1"), }; return boost::math::tools::evaluate_rational(num, denom, z, 31); } template<class T> static T lanczos_sum_near_1(const T& dz) { static const T d[30] = { boost::lexical_cast<T>("11.80038544942943603508206880307972596807"), boost::lexical_cast<T>("-130.6355975335626214564236363322099481079"), boost::lexical_cast<T>("676.2177719145993049893392276809256538927"), boost::lexical_cast<T>("-2174.724497783850503069990936574060452057"), boost::lexical_cast<T>("4869.877180638131076410069103742986502022"), boost::lexical_cast<T>("-8065.744271864238179992762265472478229172"), boost::lexical_cast<T>("10245.03825618572106228191509520638651539"), boost::lexical_cast<T>("-10212.83902362683215459850403668669647192"), boost::lexical_cast<T>("8110.289185383288952562767679576754140336"), boost::lexical_cast<T>("-5179.310892558291062401828964000776095156"), boost::lexical_cast<T>("2673.987492589052370230989109591011091273"), boost::lexical_cast<T>("-1118.342574651205183051884250033505609141"), boost::lexical_cast<T>("378.5812742511620662650096436471920295596"), boost::lexical_cast<T>("-103.3725999812126067084828735543906768961"), boost::lexical_cast<T>("22.62913974335996321848099677797888917792"), boost::lexical_cast<T>("-3.936414819950859548507275533569588041446"), boost::lexical_cast<T>("0.5376818198843817355682124535902641644854"), boost::lexical_cast<T>("-0.0567827903603478957483409124122554243201"), boost::lexical_cast<T>("0.004545544993648879420352693271088478106482"), boost::lexical_cast<T>("-0.0002689795568951033950042375135970897959935"), boost::lexical_cast<T>("0.1139493459006846530734617710847103572122e-4"), boost::lexical_cast<T>("-0.3316581197839213921885210451302820192794e-6"), boost::lexical_cast<T>("0.6285613334898374028443777562554713906213e-8"), boost::lexical_cast<T>("-0.7222145115734409070310317999856424167091e-10"), boost::lexical_cast<T>("0.4562976983547274766890241815002584238219e-12"), boost::lexical_cast<T>("-0.1380593023819058919640038942493212141072e-14"), boost::lexical_cast<T>("0.1629663871586410129307496385264268190679e-17"), boost::lexical_cast<T>("-0.5429994291916548849493889660077076739993e-21"), boost::lexical_cast<T>("0.2922682842441892106795386303084661338957e-25"), boost::lexical_cast<T>("-0.8456967065309046044689041041336866118459e-31"), }; T result = 0; for(unsigned k = 1; k <= sizeof(d)/sizeof(d[0]); ++k) { result += (-d[k-1]*dz)/(k*dz + k*k); } return result; } template<class T> static T lanczos_sum_near_2(const T& dz) { static const T d[30] = { boost::lexical_cast<T>("147.9979641587472136175636384176549713358"), boost::lexical_cast<T>("-1638.404318611773924210055619836375434296"), boost::lexical_cast<T>("8480.981744216135641122944743711911653273"), boost::lexical_cast<T>("-27274.93942104458448200467097634494071176"), boost::lexical_cast<T>("61076.98019918759324489193232276937262854"), boost::lexical_cast<T>("-101158.8762737154296509560513952101409264"), boost::lexical_cast<T>("128491.1252383947174824913796141607174379"), boost::lexical_cast<T>("-128087.2892038336581928787480535905496026"), boost::lexical_cast<T>("101717.5492545853663296795562084430123258"), boost::lexical_cast<T>("-64957.8330410311808907869707511362206858"), boost::lexical_cast<T>("33536.59139229792478811870738772305570317"), boost::lexical_cast<T>("-14026.01847115365926835980820243003785821"), boost::lexical_cast<T>("4748.087094096186515212209389240715050212"), boost::lexical_cast<T>("-1296.477510211815971152205100242259733245"),
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -