/usr/include/boost/math/bindings/detail
Edit: /usr/include/boost/math/bindings/detail/big_lanczos.hpp (73512B)
// (C) Copyright John Maddock 2006-8.
// Use, modification and distribution are subject to the
// Boost Software License, Version 1.0. (See accompanying file
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
#ifndef BOOST_BIG_LANCZOS_HPP
#define BOOST_BIG_LANCZOS_HPP
#include
namespace boost{ namespace math{ namespace lanczos{
//
// Lanczos Coefficients for N=13 G=13.144565
// Max experimental error (with arbitrary precision arithmetic) 9.2213e-23
// Generated with compiler: Microsoft Visual C++ version 8.0 on Win32 at Mar 23 2006
//
typedef lanczos13 lanczos13UDT;
//
// Lanczos Coefficients for N=22 G=22.61891
// Max experimental error (with arbitrary precision arithmetic) 2.9524e-38
// Generated with compiler: Microsoft Visual C++ version 8.0 on Win32 at Mar 23 2006
//
struct lanczos22UDT : public boost::integral_constant
{
//
// Produces slightly better than 128-bit long-double precision when
// evaluated at higher precision:
//
template
static T lanczos_sum(const T& z)
{
lanczos_initializer::force_instantiate(); // Ensure our constants get initialized before main()
static const T num[22] = {
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 46198410803245094237463011094.12173081986)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 43735859291852324413622037436.321513777)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 19716607234435171720534556386.97481377748)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 5629401471315018442177955161.245623932129)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 1142024910634417138386281569.245580222392)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 175048529315951173131586747.695329230778)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 21044290245653709191654675.41581372963167)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 2033001410561031998451380.335553678782601)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 160394318862140953773928.8736211601848891)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 10444944438396359705707.48957290388740896)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 565075825801617290121.1466393747967538948)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 25475874292116227538.99448534450411942597)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 957135055846602154.6720835535232270205725)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 29874506304047462.23662392445173880821515)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 769651310384737.2749087590725764959689181)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 16193289100889.15989633624378404096011797)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 273781151680.6807433264462376754578933261)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 3630485900.32917021712188739762161583295)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 36374352.05577334277856865691538582936484)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 258945.7742115532455441786924971194951043)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 1167.501919472435718934219997431551246996)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 2.50662827463100050241576528481104525333))
};
static const T denom[22] = {
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 0.0)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 2432902008176640000.0)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 8752948036761600000.0)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 13803759753640704000.0)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 12870931245150988800.0)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 8037811822645051776.0)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 3599979517947607200.0)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 1206647803780373360.0)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 311333643161390640.0)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 63030812099294896.0)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 10142299865511450.0)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 1307535010540395.0)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 135585182899530.0)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 11310276995381.0)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 756111184500.0)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 40171771630.0)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 1672280820.0)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 53327946.0)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 1256850.0)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 20615.0)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 210.0)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 1.0))
};
return boost::math::tools::evaluate_rational(num, denom, z);
}
template
static T lanczos_sum_expG_scaled(const T& z)
{
lanczos_initializer::force_instantiate(); // Ensure our constants get initialized before main()
static const T num[22] = {
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 6939996264376682180.277485395074954356211)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 6570067992110214451.87201438870245659384)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 2961859037444440551.986724631496417064121)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 845657339772791245.3541226499766163431651)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 171556737035449095.2475716923888737881837)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 26296059072490867.7822441885603400926007)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 3161305619652108.433798300149816829198706)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 305400596026022.4774396904484542582526472)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 24094681058862.55120507202622377623528108)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 1569055604375.919477574824168939428328839)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 84886558909.02047889339710230696942513159)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 3827024985.166751989686050643579753162298)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 143782298.9273215199098728674282885500522)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 4487794.24541641841336786238909171265944)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 115618.2025760830513505888216285273541959)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 2432.580773108508276957461757328744780439)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 41.12782532742893597168530008461874360191)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 0.5453771709477689805460179187388702295792)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 0.005464211062612080347167337964166505282809)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 0.388992321263586767037090706042788910953e-4)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 0.1753839324538447655939518484052327068859e-6)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 0.3765495513732730583386223384116545391759e-9))
};
static const T denom[22] = {
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 0.0)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 2432902008176640000.0)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 8752948036761600000.0)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 13803759753640704000.0)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 12870931245150988800.0)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 8037811822645051776.0)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 3599979517947607200.0)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 1206647803780373360.0)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 311333643161390640.0)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 63030812099294896.0)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 10142299865511450.0)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 1307535010540395.0)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 135585182899530.0)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 11310276995381.0)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 756111184500.0)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 40171771630.0)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 1672280820.0)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 53327946.0)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 1256850.0)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 20615.0)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 210.0)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 1.0))
};
return boost::math::tools::evaluate_rational(num, denom, z);
}
template
static T lanczos_sum_near_1(const T& dz)
{
lanczos_initializer::force_instantiate(); // Ensure our constants get initialized before main()
static const T d[21] = {
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 8.318998691953337183034781139546384476554)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, -63.15415991415959158214140353299240638675)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 217.3108224383632868591462242669081540163)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, -448.5134281386108366899784093610397354889)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 619.2903759363285456927248474593012711346)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, -604.1630177420625418522025080080444177046)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 428.8166750424646119935047118287362193314)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, -224.6988753721310913866347429589434550302)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 87.32181627555510833499451817622786940961)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, -25.07866854821128965662498003029199058098)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 5.264398125689025351448861011657789005392)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, -0.792518936256495243383586076579921559914)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 0.08317448364744713773350272460937904691566)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, -0.005845345166274053157781068150827567998882)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 0.0002599412126352082483326238522490030412391)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, -0.6748102079670763884917431338234783496303e-5)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 0.908824383434109002762325095643458603605e-7)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, -0.5299325929309389890892469299969669579725e-9)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 0.994306085859549890267983602248532869362e-12)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, -0.3499893692975262747371544905820891835298e-15)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 0.7260746353663365145454867069182884694961e-20)),
};
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
static T lanczos_sum_near_2(const T& dz)
{
static const T d[21] = {
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 75.39272007105208086018421070699575462226)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, -572.3481967049935412452681346759966390319)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 1969.426202741555335078065370698955484358)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, -4064.74968778032030891520063865996757519)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 5612.452614138013929794736248384309574814)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, -5475.357667500026172903620177988213902339)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 3886.243614216111328329547926490398103492)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, -2036.382026072125407192448069428134470564)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 791.3727954936062108045551843636692287652)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, -227.2808432388436552794021219198885223122)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 47.70974355562144229897637024320739257284)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, -7.182373807798293545187073539819697141572)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 0.7537866989631514559601547530490976100468)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, -0.05297470142240154822658739758236594717787)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 0.00235577330936380542539812701472320434133)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, -0.6115613067659273118098229498679502138802e-4)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 0.8236417010170941915758315020695551724181e-6)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, -0.4802628430993048190311242611330072198089e-8)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 0.9011113376981524418952720279739624707342e-11)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, -0.3171854152689711198382455703658589996796e-14)),
static_cast(BOOST_MATH_BIG_CONSTANT(T, 120, 0.6580207998808093935798753964580596673177e-19)),
};
T result = 0;
T z = dz + 2;
for(unsigned k = 1; k <= sizeof(d)/sizeof(d[0]); ++k)
{
result += (-d[k-1]*dz)/(z + k*z + k*k - 1);
}
return result;
}
static double g(){ return 22.61890999999999962710717227309942245483; }
};
//
// Lanczos Coefficients for N=31 G=32.08067
// Max experimental error (with arbitrary precision arithmetic) 0.162e-52
// Generated with compiler: Microsoft Visual C++ version 8.0 on Win32 at May 9 2006
//
struct lanczos31UDT
{
template
static T lanczos_sum(const T& z)
{
lanczos_initializer::force_instantiate(); // Ensure our constants get initialized before main()
static const T num[31] = {
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 0.2579646553333513328235723061836959833277e46)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 0.2444796504337453845497419271639377138264e46)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 0.1119885499016017172212179730662673475329e46)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 0.3301983829072723658949204487793889113715e45)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 0.7041171040503851585152895336505379417066e44)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 0.1156687509001223855125097826246939403504e44)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 1522559363393940883866575697565974893306000)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 164914363507650839510801418717701057005700)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 14978522943127593263654178827041568394060)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 1156707153701375383907746879648168666774)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 76739431129980851159755403434593664173.2)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 4407916278928188620282281495575981079.306)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 220487883931812802092792125175269667.3004)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 9644828280794966468052381443992828.433924)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 369996467042247229310044531282837.6549068)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 12468380890717344610932904378961.13494291)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 369289245210898235894444657859.0529720075)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 9607992460262594951559461829.34885209022)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 219225935074853412540086410.981421315799)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 4374309943598658046326340.720767382079549)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 76008779092264509404014.10530947173485581)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 1143503533822162444712.335663112617754987)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 14779233719977576920.37884890049671578409)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 162409028440678302.9992838032166348069916)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 1496561553388385.733407609544964535634135)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 11347624460661.81008311053190661436107043)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 68944915931.32004991941950530448472223832)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 322701221.6391432296123937035480931903651)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 1092364.213992634267819050120261755371294)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 2380.151399852411512711176940867823024864)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 2.506628274631000502415765284811045253007)),
};
static const T denom[31] = {
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 0)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 0.8841761993739701954543616e31)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 0.3502799997985980526649278464e32)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 0.622621928420356134910574592e32)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 66951000306085302338993639424000)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 49361465831621147825759587123200)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 26751280755793398822580822142976)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 11139316913434780466101123891200)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 3674201658710345201899117607040)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 981347603630155088295475765440)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 215760462268683520394805979744)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 39539238727270799376544542000)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 6097272817323042122728617800)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 796974693974455191377937300)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 88776380550648116217781890)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 8459574446076318147830625)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 691254538651580660999025)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 48487623689430693038025)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 2918939500751087661105)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 150566737512021319125)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 6634460278534540725)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 248526574856284725)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 7860403394108265)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 207912996295875)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 4539323721075)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 80328850875)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 1122686019)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 11921175)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 90335)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 435)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 1)),
};
return boost::math::tools::evaluate_rational(num, denom, z, 31);
}
template
static T lanczos_sum_expG_scaled(const T& z)
{
lanczos_initializer::force_instantiate(); // Ensure our constants get initialized before main()
static const T num[31] = {
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 30137154810677525966583148469478.52374216)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 28561746428637727032849890123131.36314653)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 13083250730789213354063781611435.74046294)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 3857598154697777600846539129354.783647)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 822596651552555685068015316144.0952185852)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 135131964033213842052904200372.039133532)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 17787555889683709693655685146.19771358863)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 1926639793777927562221423874.149673297196)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 174989113988888477076973808.6991839697774)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 13513425905835560387095425.01158383184045)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 896521313378762433091075.1446749283094845)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 51496223433749515758124.71524415105430686)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 2575886794780078381228.37205955912263407)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 112677328855422964200.4155776009524490958)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 4322545967487943330.625233358130724324796)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 145663957202380774.0362027607207590519723)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 4314283729473470.686566233465428332496534)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 112246988185485.8877916434026906290603878)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 2561143864972.040563435178307062626388193)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 51103611767.9626550674442537989885239605)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 887985348.0369447209508500133077232094491)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 13359172.3954672607019822025834072685839)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 172660.8841147568768783928167105965064459)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 1897.370795407433013556725714874693719617)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 17.48383210090980598861217644749573257178)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 0.1325705316732132940835251054350153028901)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 0.0008054605783673449641889260501816356090452)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 0.377001130700104515644336869896819162464e-5)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 0.1276172868883867038813825443204454996531e-7)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 0.2780651912081116274907381023821492811093e-10)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 0.2928410648650955854121639682890739211234e-13)),
};
static const T denom[31] = {
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 0)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 0.8841761993739701954543616e31)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 0.3502799997985980526649278464e32)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 0.622621928420356134910574592e32)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 66951000306085302338993639424000)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 49361465831621147825759587123200)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 26751280755793398822580822142976)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 11139316913434780466101123891200)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 3674201658710345201899117607040)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 981347603630155088295475765440)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 215760462268683520394805979744)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 39539238727270799376544542000)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 6097272817323042122728617800)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 796974693974455191377937300)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 88776380550648116217781890)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 8459574446076318147830625)),
static_cast(BOOST_MATH_HUGE_CONSTANT(T, 150, 691254538651580660999025)),
static_cast