js8call/.svn/pristine/6f/6fcd3418ac052c7443bcd661229d322facca8265.svn-base

701 lines
74 KiB
Plaintext
Raw Normal View History

2018-02-08 21:28:33 -05:00
///////////////////////////////////////////////////////////////////////////////
// Copyright 2013 Nikhar Agrawal
// Copyright 2013 Christopher Kormanyos
// Copyright 2013 John Maddock
// Copyright 2013 Paul Bristow
// Distributed under 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_MATH_UNCHECKED_BERNOULLI_HPP
#define BOOST_MATH_UNCHECKED_BERNOULLI_HPP
#include <limits>
#include <cmath>
#include <boost/math/policies/error_handling.hpp>
#include <boost/math/constants/constants.hpp>
#include <boost/math/special_functions/math_fwd.hpp>
#include <boost/mpl/int.hpp>
#include <boost/type_traits/is_convertible.hpp>
namespace boost { namespace math {
namespace detail {
template <unsigned N>
struct max_bernoulli_index
{
BOOST_STATIC_CONSTANT(unsigned, value = 17);
};
template <>
struct max_bernoulli_index<1>
{
BOOST_STATIC_CONSTANT(unsigned, value = 32);
};
template <>
struct max_bernoulli_index<2>
{
BOOST_STATIC_CONSTANT(unsigned, value = 129);
};
template <>
struct max_bernoulli_index<3>
{
BOOST_STATIC_CONSTANT(unsigned, value = 1156);
};
template <>
struct max_bernoulli_index<4>
{
BOOST_STATIC_CONSTANT(unsigned, value = 11);
};
template <class T>
struct bernoulli_imp_variant
{
static const unsigned value =
(std::numeric_limits<T>::max_exponent == 128)
&& (std::numeric_limits<T>::radix == 2)
&& (std::numeric_limits<T>::digits <= std::numeric_limits<float>::digits)
&& (boost::is_convertible<float, T>::value) ? 1 :
(
(std::numeric_limits<T>::max_exponent == 1024)
&& (std::numeric_limits<T>::radix == 2)
&& (std::numeric_limits<T>::digits <= std::numeric_limits<double>::digits)
&& (boost::is_convertible<double, T>::value) ? 2 :
(
(std::numeric_limits<T>::max_exponent == 16384)
&& (std::numeric_limits<T>::radix == 2)
&& (std::numeric_limits<T>::digits <= std::numeric_limits<long double>::digits)
&& (boost::is_convertible<long double, T>::value) ? 3 : (!is_convertible<boost::int64_t, T>::value ? 4 : 0)
)
);
};
} // namespace detail
template <class T>
struct max_bernoulli_b2n : public detail::max_bernoulli_index<detail::bernoulli_imp_variant<T>::value>{};
namespace detail{
template <class T>
inline T unchecked_bernoulli_imp(std::size_t n, const mpl::int_<0>& )
{
static const boost::array<boost::int64_t, 1 + max_bernoulli_b2n<T>::value> numerators =
{{
boost::int64_t( +1LL),
boost::int64_t( +1LL),
boost::int64_t( -1LL),
boost::int64_t( +1LL),
boost::int64_t( -1LL),
boost::int64_t( +5LL),
boost::int64_t( -691LL),
boost::int64_t( +7LL),
boost::int64_t( -3617LL),
boost::int64_t( +43867LL),
boost::int64_t( -174611LL),
boost::int64_t( +854513LL),
boost::int64_t( -236364091LL),
boost::int64_t( +8553103LL),
boost::int64_t( -23749461029LL),
boost::int64_t(+8615841276005LL),
boost::int64_t(-7709321041217LL),
boost::int64_t(+2577687858367LL)
}};
static const boost::array<boost::int64_t, 1 + max_bernoulli_b2n<T>::value> denominators =
{{
boost::int64_t( 1LL),
boost::int64_t( 6LL),
boost::int64_t( 30LL),
boost::int64_t( 42LL),
boost::int64_t( 30LL),
boost::int64_t( 66LL),
boost::int64_t( 2730LL),
boost::int64_t( 6LL),
boost::int64_t( 510LL),
boost::int64_t( 798LL),
boost::int64_t( 330LL),
boost::int64_t( 138LL),
boost::int64_t( 2730LL),
boost::int64_t( 6LL),
boost::int64_t( 870LL),
boost::int64_t( 14322LL),
boost::int64_t( 510LL),
boost::int64_t( 6LL)
}};
return T(numerators[n]) / denominators[n];
}
template <class T>
inline T unchecked_bernoulli_imp(std::size_t n, const mpl::int_<1>& )
{
static const boost::array<float, 1 + max_bernoulli_b2n<T>::value> bernoulli_data =
{{
+1.00000000000000000000000000000000000000000F,
+0.166666666666666666666666666666666666666667F,
-0.0333333333333333333333333333333333333333333F,
+0.0238095238095238095238095238095238095238095F,
-0.0333333333333333333333333333333333333333333F,
+0.0757575757575757575757575757575757575757576F,
-0.253113553113553113553113553113553113553114F,
+1.16666666666666666666666666666666666666667F,
-7.09215686274509803921568627450980392156863F,
+54.9711779448621553884711779448621553884712F,
-529.124242424242424242424242424242424242424F,
+6192.12318840579710144927536231884057971014F,
-86580.2531135531135531135531135531135531136F,
+1.42551716666666666666666666666666666666667e6F,
-2.72982310678160919540229885057471264367816e7F,
+6.01580873900642368384303868174835916771401e8F,
-1.51163157670921568627450980392156862745098e10F,
+4.29614643061166666666666666666666666666667e11F,
-1.37116552050883327721590879485616327721591e13F,
+4.88332318973593166666666666666666666666667e14F,
-1.92965793419400681486326681448632668144863e16F,
+8.41693047573682615000553709856035437430786e17F,
-4.03380718540594554130768115942028985507246e19F,
+2.11507486380819916056014539007092198581560e21F,
-1.20866265222965259346027311937082525317819e23F,
+7.50086674607696436685572007575757575757576e24F,
-5.03877810148106891413789303052201257861635e26F,
+3.65287764848181233351104308429711779448622e28F,
-2.84987693024508822262691464329106781609195e30F,
+2.38654274996836276446459819192192149717514e32F,
-2.13999492572253336658107447651910973926742e34F,
+2.05009757234780975699217330956723102516667e36F,
-2.09380059113463784090951852900279701847092e38F,
}};
return bernoulli_data[n];
}
template <class T>
inline T unchecked_bernoulli_imp(std::size_t n, const mpl::int_<2>& )
{
static const boost::array<double, 1 + max_bernoulli_b2n<T>::value> bernoulli_data =
{{
+1.00000000000000000000000000000000000000000,
+0.166666666666666666666666666666666666666667,
-0.0333333333333333333333333333333333333333333,
+0.0238095238095238095238095238095238095238095,
-0.0333333333333333333333333333333333333333333,
+0.0757575757575757575757575757575757575757576,
-0.253113553113553113553113553113553113553114,
+1.16666666666666666666666666666666666666667,
-7.09215686274509803921568627450980392156863,
+54.9711779448621553884711779448621553884712,
-529.124242424242424242424242424242424242424,
+6192.12318840579710144927536231884057971014,
-86580.2531135531135531135531135531135531136,
+1.42551716666666666666666666666666666666667e6,
-2.72982310678160919540229885057471264367816e7,
+6.01580873900642368384303868174835916771401e8,
-1.51163157670921568627450980392156862745098e10,
+4.29614643061166666666666666666666666666667e11,
-1.37116552050883327721590879485616327721591e13,
+4.88332318973593166666666666666666666666667e14,
-1.92965793419400681486326681448632668144863e16,
+8.41693047573682615000553709856035437430786e17,
-4.03380718540594554130768115942028985507246e19,
+2.11507486380819916056014539007092198581560e21,
-1.20866265222965259346027311937082525317819e23,
+7.50086674607696436685572007575757575757576e24,
-5.03877810148106891413789303052201257861635e26,
+3.65287764848181233351104308429711779448622e28,
-2.84987693024508822262691464329106781609195e30,
+2.38654274996836276446459819192192149717514e32,
-2.13999492572253336658107447651910973926742e34,
+2.05009757234780975699217330956723102516667e36,
-2.09380059113463784090951852900279701847092e38,
+2.27526964884635155596492603527692645814700e40,
-2.62577102862395760473030497361582020814490e42,
+3.21250821027180325182047923042649852435219e44,
-4.15982781667947109139170744952623589366896e46,
+5.69206954820352800238834562191210586444805e48,
-8.21836294197845756922906534686173330145509e50,
+1.25029043271669930167323398297028955241772e53,
-2.00155832332483702749253291988132987687242e55,
+3.36749829153643742333966769033387530162196e57,
-5.94709705031354477186604968440515408405791e59,
+1.10119103236279775595641307904376916046305e62,
-2.13552595452535011886583850190410656789733e64,
+4.33288969866411924196166130593792062184514e66,
-9.18855282416693282262005552155018971389604e68,
+2.03468967763290744934550279902200200659751e71,
-4.70038339580357310785752555350060606545967e73,
+1.13180434454842492706751862577339342678904e76,
-2.83822495706937069592641563364817647382847e78,
+7.40642489796788506297508271409209841768797e80,
-2.00964548027566044834656196727153631868673e83,
+5.66571700508059414457193460305193569614195e85,
-1.65845111541362169158237133743199123014950e88,
+5.03688599504923774192894219151801548124424e90,
-1.58614682376581863693634015729664387827410e93,
+5.17567436175456269840732406825071225612408e95,
-1.74889218402171173396900258776181591451415e98,
+6.11605199949521852558245252642641677807677e100,
-2.21227769127078349422883234567129324455732e103,
+8.27227767987709698542210624599845957312047e105,
-3.19589251114157095835916343691808148735263e108,
+1.27500822233877929823100243029266798669572e111,
-5.25009230867741338994028246245651754469199e113,
+2.23018178942416252098692981988387281437383e116,
-9.76845219309552044386335133989802393011669e118,
+4.40983619784529542722726228748131691918758e121,
-2.05085708864640888397293377275830154864566e124,
+9.82144332797912771075729696020975210414919e126,
-4.84126007982088805087891967099634127611305e129,
+2.45530888014809826097834674040886903996737e132,
-1.28069268040847475487825132786017857218118e135,
+6.86761671046685811921018885984644004360924e137,
-3.78464685819691046949789954163795568144895e140,
+2.14261012506652915508713231351482720966602e143,
-1.24567271371836950070196429616376072194583e146,
+7.43457875510001525436796683940520613117807e148,
-4.55357953046417048940633332233212748767721e151,
+2.86121128168588683453638472510172325229190e154,
-1.84377235520338697276882026536287854875414e157,
+1.21811545362210466995013165065995213558174e160,
-8.24821871853141215484818457296893447301419e162,
+5.72258779378329433296516498142978615918685e165,
-4.06685305250591047267679693831158655602196e168,
+2.95960920646420500628752695815851870426379e171,
-2.20495225651894575090311752273445984836379e174,
+1.68125970728895998058311525151360665754464e177,
-1.31167362135569576486452806355817153004431e180,
+1.04678940094780380821832853929823089643829e183,
-8.54328935788337077185982546299082774593270e185,
+7.12878213224865423522884066771438224721245e188,
-6.08029314555358993000847118686477458461988e191,
+5.29967764248499239300942910043247266228490e194,
-4.71942591687458626443646229013379911103761e197,
+4.29284137914029810894168296541074669045521e200,
-3.98767449682322074434477655542938795106651e203,
+3.78197804193588827138944181161393327898220e206,
-3.66142336836811912436858082151197348755196e209,
+3.61760902723728623488554609298914089477541e212,
-3.64707726451913543621383088655499449048682e215,
+3.75087554364544090983452410104814189306842e218,
-3.93458672964390282694891288533713429355657e221,
+4.20882111481900820046571171111494898242731e224,
-4.59022962206179186559802940573325591059371e227,
+5.10317257726295759279198185106496768539760e230,
-5.78227623036569554015377271242917142512200e233,
+6.67624821678358810322637794412809363451080e236,
-7.85353076444504163225916259639312444428230e239,
+9.41068940670587255245443288258762485293948e242,
-1.14849338734651839938498599206805592548354e246,
+1.42729587428487856771416320087122499897180e249,
-1.80595595869093090142285728117654560926719e252,
+2.32615353076608052161297985184708876161736e255,
-3.04957517154995947681942819261542593785327e258,
+4.06858060764339734424012124124937318633684e261,
-5.52310313219743616252320044093186392324280e264,
+7.62772793964343924869949690204961215533859e267,
-1.07155711196978863132793524001065396932667e271,
+1.53102008959691884453440916153355334355847e274,
-2.22448916821798346676602348865048510824835e277,
+3.28626791906901391668189736436895275365183e280,
-4.93559289559603449020711938191575963496999e283,
+7.53495712008325067212266049779283956727824e286,
-1.16914851545841777278088924731655041783900e290,
+1.84352614678389394126646201597702232396492e293,
-2.95368261729680829728014917350525183485207e296,
+4.80793212775015697668878704043264072227967e299,
-7.95021250458852528538243631671158693036798e302,
+1.33527841873546338750122832017820518292039e306
}};
return bernoulli_data[n];
}
template <class T>
inline T unchecked_bernoulli_imp(std::size_t n, const mpl::int_<3>& )
{
static const boost::array<long double, 1 + max_bernoulli_b2n<T>::value> bernoulli_data =
{{
+1.00000000000000000000000000000000000000000L,
+0.166666666666666666666666666666666666666667L,
-0.0333333333333333333333333333333333333333333L,
+0.0238095238095238095238095238095238095238095L,
-0.0333333333333333333333333333333333333333333L,
+0.0757575757575757575757575757575757575757576L,
-0.253113553113553113553113553113553113553114L,
+1.16666666666666666666666666666666666666667L,
-7.09215686274509803921568627450980392156863L,
+54.9711779448621553884711779448621553884712L,
-529.124242424242424242424242424242424242424L,
+6192.12318840579710144927536231884057971014L,
-86580.2531135531135531135531135531135531136L,
+1.42551716666666666666666666666666666666667E6L,
-2.72982310678160919540229885057471264367816E7L,
+6.01580873900642368384303868174835916771401E8L,
-1.51163157670921568627450980392156862745098E10L,
+4.29614643061166666666666666666666666666667E11L,
-1.37116552050883327721590879485616327721591E13L,
+4.88332318973593166666666666666666666666667E14L,
-1.92965793419400681486326681448632668144863E16L,
+8.41693047573682615000553709856035437430786E17L,
-4.03380718540594554130768115942028985507246E19L,
+2.11507486380819916056014539007092198581560E21L,
-1.20866265222965259346027311937082525317819E23L,
+7.50086674607696436685572007575757575757576E24L,
-5.03877810148106891413789303052201257861635E26L,
+3.65287764848181233351104308429711779448622E28L,
-2.84987693024508822262691464329106781609195E30L,
+2.38654274996836276446459819192192149717514E32L,
-2.13999492572253336658107447651910973926742E34L,
+2.05009757234780975699217330956723102516667E36L,
-2.09380059113463784090951852900279701847092E38L,
+2.27526964884635155596492603527692645814700E40L,
-2.62577102862395760473030497361582020814490E42L,
+3.21250821027180325182047923042649852435219E44L,
-4.15982781667947109139170744952623589366896E46L,
+5.69206954820352800238834562191210586444805E48L,
-8.21836294197845756922906534686173330145509E50L,
+1.25029043271669930167323398297028955241772E53L,
-2.00155832332483702749253291988132987687242E55L,
+3.36749829153643742333966769033387530162196E57L,
-5.94709705031354477186604968440515408405791E59L,
+1.10119103236279775595641307904376916046305E62L,
-2.13552595452535011886583850190410656789733E64L,
+4.33288969866411924196166130593792062184514E66L,
-9.18855282416693282262005552155018971389604E68L,
+2.03468967763290744934550279902200200659751E71L,
-4.70038339580357310785752555350060606545967E73L,
+1.13180434454842492706751862577339342678904E76L,
-2.83822495706937069592641563364817647382847E78L,
+7.40642489796788506297508271409209841768797E80L,
-2.00964548027566044834656196727153631868673E83L,
+5.66571700508059414457193460305193569614195E85L,
-1.65845111541362169158237133743199123014950E88L,
+5.03688599504923774192894219151801548124424E90L,
-1.58614682376581863693634015729664387827410E93L,
+5.17567436175456269840732406825071225612408E95L,
-1.74889218402171173396900258776181591451415E98L,
+6.11605199949521852558245252642641677807677E100L,
-2.21227769127078349422883234567129324455732E103L,
+8.27227767987709698542210624599845957312047E105L,
-3.19589251114157095835916343691808148735263E108L,
+1.27500822233877929823100243029266798669572E111L,
-5.25009230867741338994028246245651754469199E113L,
+2.23018178942416252098692981988387281437383E116L,
-9.76845219309552044386335133989802393011669E118L,
+4.40983619784529542722726228748131691918758E121L,
-2.05085708864640888397293377275830154864566E124L,
+9.82144332797912771075729696020975210414919E126L,
-4.84126007982088805087891967099634127611305E129L,
+2.45530888014809826097834674040886903996737E132L,
-1.28069268040847475487825132786017857218118E135L,
+6.86761671046685811921018885984644004360924E137L,
-3.78464685819691046949789954163795568144895E140L,
+2.14261012506652915508713231351482720966602E143L,
-1.24567271371836950070196429616376072194583E146L,
+7.43457875510001525436796683940520613117807E148L,
-4.55357953046417048940633332233212748767721E151L,
+2.86121128168588683453638472510172325229190E154L,
-1.84377235520338697276882026536287854875414E157L,
+1.21811545362210466995013165065995213558174E160L,
-8.24821871853141215484818457296893447301419E162L,
+5.72258779378329433296516498142978615918685E165L,
-4.06685305250591047267679693831158655602196E168L,
+2.95960920646420500628752695815851870426379E171L,
-2.20495225651894575090311752273445984836379E174L,
+1.68125970728895998058311525151360665754464E177L,
-1.31167362135569576486452806355817153004431E180L,
+1.04678940094780380821832853929823089643829E183L,
-8.54328935788337077185982546299082774593270E185L,
+7.12878213224865423522884066771438224721245E188L,
-6.08029314555358993000847118686477458461988E191L,
+5.29967764248499239300942910043247266228490E194L,
-4.71942591687458626443646229013379911103761E197L,
+4.29284137914029810894168296541074669045521E200L,
-3.98767449682322074434477655542938795106651E203L,
+3.78197804193588827138944181161393327898220E206L,
-3.66142336836811912436858082151197348755196E209L,
+3.61760902723728623488554609298914089477541E212L,
-3.64707726451913543621383088655499449048682E215L,
+3.75087554364544090983452410104814189306842E218L,
-3.93458672964390282694891288533713429355657E221L,
+4.20882111481900820046571171111494898242731E224L,
-4.59022962206179186559802940573325591059371E227L,
+5.10317257726295759279198185106496768539760E230L,
-5.78227623036569554015377271242917142512200E233L,
+6.67624821678358810322637794412809363451080E236L,
-7.85353076444504163225916259639312444428230E239L,
+9.41068940670587255245443288258762485293948E242L,
-1.14849338734651839938498599206805592548354E246L,
+1.42729587428487856771416320087122499897180E249L,
-1.80595595869093090142285728117654560926719E252L,
+2.32615353076608052161297985184708876161736E255L,
-3.04957517154995947681942819261542593785327E258L,
+4.06858060764339734424012124124937318633684E261L,
-5.52310313219743616252320044093186392324280E264L,
+7.62772793964343924869949690204961215533859E267L,
-1.07155711196978863132793524001065396932667E271L,
+1.53102008959691884453440916153355334355847E274L,
-2.22448916821798346676602348865048510824835E277L,
+3.28626791906901391668189736436895275365183E280L,
-4.93559289559603449020711938191575963496999E283L,
+7.53495712008325067212266049779283956727824E286L,
-1.16914851545841777278088924731655041783900E290L,
+1.84352614678389394126646201597702232396492E293L,
-2.95368261729680829728014917350525183485207E296L,
+4.80793212775015697668878704043264072227967E299L,
-7.95021250458852528538243631671158693036798E302L,
+1.33527841873546338750122832017820518292039E306L,
#if LDBL_MAX_EXP == 16384
// Entries 260 - 600 http://www.wolframalpha.com/input/?i=TABLE[N[Bernoulli[i]%2C40]%2C+{i%2C258%2C600%2C2}]
-2.277640649601959593875058983506938037019e309L,
3.945184036046326234163525556422667595884e312L,
-6.938525772130602106071724989641405550473e315L,
1.238896367577564823729057820219210929986e319L,
-2.245542599169309759499987966025604480745e322L,
4.131213176073842359732511639489669404266e325L,
-7.713581346815269584960928069762882771369e328L,
1.461536066837669600638613788471335541313e332L,
-2.809904606225532896862935642992712059631e335L,
5.480957121318876639512096994413992284327e338L,
-1.084573284087686110518125291186079616320e342L,
2.176980775647663539729165173863716459962e345L,
-4.431998786117553751947439433256752608068e348L,
9.150625657715535047417756278073770096073e351L,
-1.915867353003157351316577579148683133613e355L,
4.067256303542212258698836003682016040629e358L,
-8.754223791037736616228150209910348734629e361L,
1.910173688735533667244373747124109379826e365L,
-4.225001320265091714631115064713174404607e368L,
9.471959352547827678466770796787503034505e371L,
-2.152149973279986829719817376756088198573e375L,
4.955485775334221051344839716507812871361e378L,
-1.156225941759134696630956889716381968142e382L,
2.733406597646137698610991926705098514017e385L,
-6.546868135325176947099912523279938546333e388L,
1.588524912441221472814692121069821695547e392L,
-3.904354800861715180218598151050191841308e395L,
9.719938686092045781827273411668132975319e398L,
-2.450763621049522051234479737511375679283e402L,
6.257892098396815305085674126334317095277e405L,
-1.618113552083806592527989531636955084420e409L,
4.236528795217618357348618613216833722648e412L,
-1.123047068199051008086174989124136878992e416L,
3.013971787525654770217283559392286666886e419L,
-8.188437573221553030375681429202969070420e422L,
2.251910591336716809153958146725775718707e426L,
-6.268411292043789823075314151509139413399e429L,
1.765990845202322642693572112511312471527e433L,
-5.035154436231331651259071296731160882240e436L,
1.452779356460483245253765356664402207266e440L,
-4.241490890130137339052414960684151515166e443L,
1.252966001692427774088293833338841893293e447L,
-3.744830047478272947978103227876747240343e450L,
1.132315806695710930595876001089232216024e454L,
-3.463510845942701805991786197773934662578e457L,
1.071643382649675572086865465873916611537e461L,
-3.353824475439933688957233489984711465335e464L,
1.061594257145875875963152734129803268488e468L,
-3.398420969215528955528654193586189805265e471L,
1.100192502000434096206138068020551065890e475L,
-3.601686379213993374332690210094863486472e478L,
1.192235170430164900533187239994513019475e482L,
-3.990342751779668381699052942504119409180e485L,
1.350281800938769780891258894167663309221e489L,
-4.619325443466054312873093650888507562249e492L,
1.597522243968586548227514639959727696694e496L,
-5.584753729092155108530929002119620487652e499L,
1.973443623104646193229794524759543752089e503L,
-7.048295441989615807045620880311201930244e506L,
2.544236702499719094591873151590280263560e510L,
-9.281551595258615205927443367289948150345e513L,
3.421757163154453657766296828520235351572e517L,
-1.274733639384538364282697627345068947433e521L,
4.798524805311016034711205886780460173566e524L,
-1.825116948422858388787806917284878870034e528L,
7.013667442807288452441777981425055613982e531L,
-2.723003862685989740898815670978399383114e535L,
1.068014853917260290630122222858884658850e539L,
-4.231650952273697842269381683768681118533e542L,
1.693650052202594386658903598564772900388e546L,
-6.846944855806453360616258582310883597678e549L,
2.795809132238082267120232174243715559601e553L,
-1.153012972808983269106716828311318981951e557L,
4.802368854268746357511997492039592697149e560L,
-2.019995255271910836389761734035403905781e564L,
8.580207235032617856059250643095019760968e567L,
-3.680247942263468164408192134916355198549e571L,
1.593924457586765331397457407661306895942e575L,
-6.970267175232643679233530367569943057501e578L,
3.077528087427698518703282907890556154309e582L,
-1.371846760052887888926055417297342106614e586L,
6.173627360829553396851763207025505289166e589L,
-2.804703130495506384463249394043486916669e593L,
1.286250900087150126167490951216207186092e597L,
-5.954394420063617872366818601092036543220e600L,
2.782297785278756426177542270854984091406e604L,
-1.312214674935307746141207680066262384215e608L,
6.246299145383554153167974732783934504370e611L,
-3.000812007679574430883792565577444226490e615L,
1.454904877136007844493861746476079537075e619L,
-7.118558521873800304612781121044077357278e622L,
3.514739820897817389472822276832677887997e626L,
-1.751137068816377401163011262831890828437e630L,
8.803498091818800678575314081978951179602e633L,
-4.465612911700593572269200981612564161010e637L,
2.285494565287530681465757798517033542888e641L,
-1.180145168917737098025683613598595411329e645L,
6.147941849198393232663105284575149616925e648L,
-3.231069156963603593233679426198974663352e652L,
1.713042725635435041806895849197608270935e656L,
-9.161761363270648920537613435771882898051e659L,
4.942675965960539112005679080810117766825e663L,
-2.689684712697383518131267222872386600031e667L,
1.476320014229917759615308193449511534656e671L,
-8.173037740864781506597184122049453514594e674L,
4.563462313190521363235182420178784459580e678L,
-2.569790015236158475703055501886439298708e682L,
1.459410219452119981958355737832022375085e686L,
-8.358304882556983795372406183642486436653e689L,
4.827305091483557818593092377664570208355e693L,
-2.811394311081493166793414157061950132403e697L,
1.651026863340675349245561261339568827739e701L,
-9.776578579336866764167878646459810047899e704L,
5.837207965197521880181236529616560780535e708L,
-3.513938957938032127105389702846371181520e712L,
2.132747371360190507595748444536911078788e716L,
-1.305047363239192640729466563372665311602e720L,
8.050825342678337497636292798039996484780e723L,
-5.006884161223862543665524155681082112689e727L,
3.139016066011452177570812014513491361235e731L,
-1.983829535212711378291469356666001365873e735L,
1.263822427649676371257598052486237628698e739L,
-8.115678659900522918802121684491754629503e742L,
5.252995164972075271667364371449050412435e746L,
-3.427038125662404660056511738625477058135e750L,
2.253446011834352733279946306835940729858e754L,
-1.493407341897034717876962786798831719683e758L,
9.974681322653365118752729509398728354442e761L,
-6.714230142773850863927710112350816379426e765L,
4.554668668931723346600337564274944733530e769L,
-3.113635386023220127834102980385275379533e773L,
2.144945411287666204679363498162954050208e777L,
-1.488982121181387164932397544378555256016e781L,
1.041537218854627455352298173588983048748e785L,
-7.341073881786613676177562822942175683993e788L,
5.213524272587199574980117351016322518428e792L,
-3.730592531776514409283897139216167197989e796L,
2.689592876341877079083449497724049500175e800L,
-1.953643788231947582529884602972233135002e804L,
1.429691073080500563348668321308878246277e808L,
-1.054059177095488639836063073070536825675e812L,
7.828919160938693948399336431565350676613e815L,
-5.857884457184396382550955498026762014753e819L,
4.415401588264172474136969345712659422380e823L,
-3.352573884181287635796498822858109969161e827L,
2.564210385719224000156548240934108974447e831L,
-1.975534392116037602837941409848663077528e835L,
1.533062123975940045180943006948008486466e839L,
-1.198306160488763291730059994812781226903e843L,
9.434034267770711698676321369174735725321e846L,
-7.480619200038505368468483892246806488879e850L,
5.974161898439971564124576801455052907638e854L,
-4.805125663714699771668630995361572639386e858L,
3.892332138028039952403812726744593073776e862L,
-3.175276505779699340738548328810180869575e866L,
2.608608681939322393581069188271626122519e870L,
-2.158148554392732439392868052394994052628e874L,
1.797993483301448477700600221980862686033e878L,
-1.508407575089108597171576068862286462909e882L,
1.274273406242459482708930389008701147244e886L,
-1.083950475353171986748233157909397370193e890L,
9.284292630726328432038470356821265395331e893L,
-8.007012115449516364480417355063446317414e897L,
6.952871948429568933888979915833266241471e901L,
-6.078828929473797621198666799700739891205e905L,
5.350908089710964244671334224708057812633e909L,
-4.742168072503284973969982758434401589090e913L,
4.231149239401967697257534662010605751136e917L,
-3.800684612827828851942743291026898158947e921L,
3.436984796314246158361599955909956583986e925L,
-3.128930718993658356398482705317381808301e929L,
//
// 602-1300: http://www.wolframalpha.com/input/?i=TABLE[N[Bernoulli[i]%2C40]%2C+{i%2C602%2C1300%2C2}]
2.867524740577223817164663595437919813239e933L, -2.645462974939090580963101220449509725942e937L, 2.456800827789169780295419018499543141869e941L, -2.296690549725790064673528302231294870532e945L, 2.161174697699793265715182091764676666457e949L, -2.047023224586087259305754002882269123194e953L, 1.951604806042481282712736234132803700277e957L, -1.872785206668284042110390583158639495143e961L, 1.808847160923282257302788929692654262867e965L, -1.758427529634609613399327744595257497188e969L, 1.720468488019528147087036246754294757647e973L, -1.694180279355332648057740852839804839425e977L, 1.679013685251183870616469618951463869496e981L, -1.674640861433092946269144173974414945664e985L, 1.680943600147858322148767806987527412112e989L, -1.698008433134805056489370119323402510305e993L, 1.726128304411348354183882648263448448633e997L, -1.765810838736918108045764015629875016219e1001L, 1.817793526882665071123822455897912718293e1005L, -1.883066459765807128944897377914669600374e1009L, 1.962903588035940537938222992228124233567e1013L, -2.058903881920696086033171142046100185783e1017L, 2.173044241735786946064676598703393618281e1021L, -2.307746591425236218893160658331303115253e1025L, 2.465962312241418731528973526597433097256e1029L, -2.651278087802503406316742676403301581549e1033L, 2.868048395658440423778896607880692085708e1037L, -3.121561373094393453726645989392054731637e1041L, 3.418246710091027042099932753084126095820e1045L, -3.765936717592482928796920675282930034018e1049L, 4.174194967165213973474293718362757753877e1053L, -4.654731142471753017867105249805137855862e1057L, 5.221926310090434518253178454907900079787e1061L, -5.893500145664015254409680930288710794031e1065L, 6.691361332576333738130720616841706994101e1069L, -7.642695184575063524608775697714741180954e1073L, 8.781359617440634128952082759434723165820e1077L, -1.014968338800868135594698909567734048618e1082L, 1.180079105471061498849752479044520598414e1086L, -1.380162016721660241308046692646452732446e1090L, 1.623685158291375662775444238282343536948e1094L, -1.921404880943289359290531906131400049399e1098L, 2.287040419533950152851434188305457266969e1102L, -2.738162880206032093123060939173765335255e1106L, 3.297371307848643161532227459901386725801e1110L, -3.993854689967542662299211323085023297602e1114L, 4.865474805885735467044047308902313673643e1118L, -5.961554732739027308247618738765152679497e1122L, 7.346627151757492821447573639763873833441e1126L, -9.105493288459908620636712748727395637965e1130L, 1.135007867626164861991621396462821975167e1135L, -1.422876214067403769204874786137232627418e1139L, 1.793912271573925309173135913914667878908e1143L, -2.274542916104231188526120123855259514144e1147L, 2.900273688809987694128857655036783261991e1151L, -3.719022795563122339874875448447744493398e1155L, 4.795753420982845153626611023078973364321e1159L, -6.218937220186281310109009529226561379773e1163L, 8.109611247999584815668395828940708619394e1167L, -1.063412316303440216539797215354141158589e1172L, 1.402214363674117662460496032135704328989e1176L, -1.859223235464558752766840772026058694872e1180L, 2.478828203789903637835992128856742276028e1184L, -3.323169416193176673655321536761413885767e1188L, 4.479640207312477092938541546776915956580e1192L, -6.071721672924085739424644485636889518799e1196L, 8.274698015123579607850404326757887762270e1200L, -1.133855131459773018024052539697784205966e1205L, 1.562146222050424344025824344480153248984e1209L, -2.163904570724750459592352173471446831752e1213L, 3.013703210722669908901286635073603018696e1217L, -4.219903244242308803914269531001720703294e1221L, 5.940703220571043642186808904696174833998e1225L, -8.408147464216029127243257448169774333631e1229L, 1.196419999747411909144144315499654470715e1234L, -1.711518922741148710381740436694440587059e1238L, 2.461434539630850545757453894977350505251e1242L, -3.558748530932574002484841810677232366801e1246L, 5.172525606281917297657859608800373729529e1250L, -7.557850217376323621984784308774476917753e1254L, 1.110141075986004209769735296234549704181e1259L, -1.639216556732622481406083885926912451281e1263L, 2.433138328152562628385514545400044125983e1267L
//
// 1302-1600: http://www.wolframalpha.com/input/?i=TABLE[N[Bernoulli[i]%2C40]%2C+{i%2C1302%2C1600%2C2}]
6.300146502435743791500010801885493871234e2452L, -2.711520667146768856688291798851999580833e2457L, 1.170595555513900137297344452318266434006e2462L, -5.069095411973246242900074508988493530542e2466L, 2.201819284807954055092117706033113168896e2471L, -9.593088725189386197503123561368325167085e2475L, 4.192362385909155628936230811010649614060e2480L, -1.837725836941968309866675158105812946762e2485L, 8.080201101491972605313807752565294881374e2489L, -3.563536075527215702966392543784039539240e2494L, 1.576361051321107275181955665159661781175e2499L, -6.994292466180175594372663323941761853364e2503L, 3.112744353537336702834647901141392426258e2508L, -1.389481328370627358752727485697345194612e2513L, 6.221134636655213696041740685131223999953e2517L, -2.793779613656947577224654924852010601105e2522L, 1.258399062987759035354039924686781081603e2527L, -5.685208194704131918461885165870560583895e2531L, 2.576167857759537340210434756292816456179e2536L, -1.170846052338591953257169251219597581763e2541L, 5.337296787116189575571202979672747140313e2545L, -2.440264475369219459038748840841422948951e2550L, 1.119037151526195093932933161706501865175e2555L, -5.146858829220973887154576240993607686435e2559L, 2.374259791963193693837576781321391741634e2564L, -1.098501215269400934956638118646657823799e2569L, 5.097500369683616795005376807036889542869e2573L, -2.372446971688020647583535886090779018865e2578L, 1.107430282014636546248612381377039463753e2583L, -5.184597227131050012643138079903381280471e2587L, 2.434392040100910394476893838832599310265e2592L, -1.146412753331162872665743308094817095949e2597L, 5.414578104816988124950636101250217797539e2601L, -2.564835392810685332173156758121489913946e2606L, 1.218495070518549208066544111736985586178e2611L, -5.805713573821806672815019495319510297824e2615L, 2.774298194574319430697819781128985128618e2620L, -1.329580186505564627453485444017911980430e2625L, 6.390545858902318479863947547243743500916e2629L, -3.080502542499571035376377703435361520427e2634L, 1.489236104239976282318361008292980814533e2639L, -7.220413839991892382038608955317126799684e2643L, 3.510874916591640642524021216241607185085e2648L, -1.712070118580404599831061485055269100525e2653L, 8.372956919832386730490070625622785478703e2657L, -4.106629146981883685523102256292669054596e2662L, 2.019945438530802964718619732330776495740e2667L, -9.964133277392242111939720494354938982970e2671L, 4.929278642971447854669801547226335041410e2676L, -2.445509657169810919463982615395074704130e2681L, 1.216734421265677299127016883839223226884e2686L, -6.071008437677720186241562251151490713584e2690L, 3.037824949882992896564570441252792097027e2695L, -1.524402878612630565501569310883356490225e2700L, 7.671320530781999359200097739951316234193e2704L, -3.871436167706734376478728954716915204399e2709L, 1.959313530432202158587932399068682252335e2714L, -9.944063618400630821320953821427307024297e2718L, 5.061161998202463346818982228476199873781e2723L, -2.583219090831132705328958245740715185448e2728L, 1.322193991367293532684189527174543501836e2733L, -6.786569982732483290873213417465458376706e2737L, 3.493212334804776543395067018414547811062e2742L, -1.803090099978261928508495412750404640933e2747L, 9.333100843930216567894508007158644926767e2751L, -4.844499031405982604449146511179496492045e2756L, 2.521648090959971240812330574936006906830e2761L, -1.316227870932708474838173333385377250286e2766L, 6.889488826832738674261056521130795910494e2770L, -3.616184242864384509259984293501533623932e2775L, 1.903356124758119137116543283603627028779e2780L, -1.004601544584640657081847200643996069583e2785L, 5.317043885597842225603585588404817559596e2789L, -2.821938866752488868682751438901900485500e2794L, 1.501842023003449590337997900945924161741e2799L, -8.014908048137216649348740300633172710524e2803L, 4.289126235121619907138036129192558937445e2808L, -2.301619137231461344870820700320913118444e2813L, 1.238485136850053215006962645111854705210e2818L, -6.682503731149007943059244518074044280490e2822L, 3.615572393938012932030234169574978859655e2827L, -1.961565108627429629104703146282982075623e2832L, 1.0671232596929245644358810963
//
// 1602-1900: http://www.wolframalpha.com/input/?i=TABLE[N[Bernoulli[i]%2C40]%2C+{i%2C1602%2C1900%2C2}]
5.596396533621874175909933615343145642161e3161L, -3.644908483469388437457938883454376864180e3166L, 2.379838409026860469990569665632800095988e3171L, -1.557720925267669865362152155022069166772e3176L, 1.022143420270029721682551084917730373739e3181L, -6.723767358891570842116651998814252095792e3185L, 4.433950491570308179905446963723780229747e3190L, -2.931196854668917448553150023532223509373e3195L, 1.942557068752664549549945921392100172355e3200L, -1.290553202978622786891265558106235068695e3205L, 8.595082329732118303768775883557789195136e3209L, -5.738453265222970049867280061719670658457e3214L, 3.840687915100689856736926915331157331684e3219L, -2.576862441955523551149886625900059307506e3224L, 1.733166107320377310388765047659987844208e3229L, -1.168569552450178559412843683052610870569e3234L, 7.898289836694980777809433306209459851871e3238L, -5.351485909164216694400535493924387979018e3243L, 3.634772439350395177931952925644409735777e3248L, -2.474801048002975145046569303233576339695e3253L, 1.689126939254790850063878942448569759390e3258L, -1.155691524500722774057997965355407962525e3263L, 7.926435404542361405718288670391575676323e3267L, -5.449654814183048796524718620178906854846e3272L, 3.755898589900254795894812942275711835138e3277L, -2.594843902682143854622514329649211211808e3282L, 1.797048752397789969347915328338360264536e3287L, -1.247551415074438712713815166107969504456e3292L, 8.681719521514448143910215886388510318746e3296L, -6.056203898213120922016159444227958572276e3301L, 4.234882876331814099029781995617143573641e3306L, -2.968432911643338866295929748049749932906e3311L, 2.085723508930484816454740610260790948864e3316L, -1.469023169879432026361623513301566735138e3321L, 1.037150346505052892302077637883522696572e3326L, -7.339977067836656769144838365069396168014e3330L, 5.206985412168234130596004552956337839140e3335L, -3.702673773319239583641029108403509825141e3340L, 2.639251227995760315076225206168354089692e3345L, -1.885736353072698581595150856674914203383e3350L, 1.350563292338261784288559687678302458996e3355L, -9.695749980998301526113046898985991802000e3359L, 6.977167462628398202151721319169989304520e3364L, -5.032768280399753942925624560483352299263e3369L, 3.638844963651800168080623511900705036698e3374L, -2.637228631269251606169613775399022890118e3379L, 1.915836351653767108720464847696767898597e3384L, -1.395064293615007319328267865803567670760e3389L, 1.018249052614943190644465556486933211307e3394L, -7.449662162606857550867922631658930320805e3398L, 5.463119632208085241594107781601567713991e3403L, -4.015736541676989144201935890497836963875e3408L, 2.958754190183866660901503059509579790900e3413L, -2.185096074054288399312733179064098492511e3418L, 1.617517444557020250864919655301189186103e3423L, -1.200170662015511746748935675940010250555e3428L, 8.925888349899029449015791684428724952411e3432L, -6.653851763691885517669938275618991145962e3437L, 4.971722031098457895973348076474071155918e3442L, -3.723500582577984967442020337848702786829e3447L, 2.795153783541721373364976034391375710110e3452L, -2.103141577212720698169118819883801186873e3457L, 1.586129575320959267959148073466004084241e3462L, -1.198988457279648730711646682156242973137e3467L, 9.084402368157025658430300252246526602197e3471L, -6.898927494435965163817354296023108913714e3476L, 5.251332286149361587885046891266325872375e3481L, -4.006442950956739933884502808470603581850e3486L, 3.063718202820270282280659950794978994604e3491L, -2.348215284130973783732145823834807395920e3496L, 1.803952490148087317330011096671019781340e3501L, -1.389022326803437345760911068933754707688e3506L, 1.071986115818329525986099441493200866389e3511L, -8.292085224650940719705699485423856363908e3515L, 6.428829064452939640541475198655560890344e3520L, -4.995654440302797445368056643032307686314e3525L, 3.890847042582299188849273838681034339406e3530L, -3.037288555751484681537442833929275697351e3535L, 2.376385803695694695338601696534348875191e3540L, -1.863527130251861900692886008704804849076e3545L, 1.464674913498036269270793715104706378182e3550L, -1.153804954579033578659954846698233083197e3555L, 9.1097838353489350922642682961
//
// 1902-2200: http://www.wolframalpha.com/input/?i=TABLE[N[Bernoulli[i]%2C40]%2C+{i%2C1902%2C2200%2C2}]
1.705787724951999960095629912416210969679e3895L, -1.565564556110550991891247404758895970376e3900L, 1.439889351869832939488618785632174464789e3905L, -1.327084102784257406218693901793045990520e3910L, 1.225682557296027075027021534960026145706e3915L, -1.134401635488994148555787301654561211982e3920L, 1.052116934052356802920509999705307165985e3925L, -9.778417073593082219082361206542342793584e3929L, 9.107088061888562704837019028349522303725e3934L, -8.499551364633102138471246155980056936129e3939L, 7.949082681085658044610890152056533167407e3944L, -7.449748809722797718736397140511396011691e3949L, 6.996307824769340144608141799981589288378e3954L, -6.584122718472954006131003060359621706243e3959L, 6.209086595833487707192492087176843233407e3964L, -5.867557793863165391821489909125720982339e3969L, 5.556303538475260373917478405626416604297e3974L, -5.272450955936249442242634142613834212778e3979L, 5.013444428433789818228792126117223030641e3984L, -4.777008429684552423800736200488532033034e3989L, 4.561115100786341787876705283291018781137e3994L, -4.363955932181992701667719449097126840439e3999L, 4.183917007557000586305945495258591147615e4004L, -4.019557342177353010692923286760895584096e4009L, 3.869589913635745758786275231296652917580e4014L, -3.732865038934070181861017140563175000872e4019L, 3.608355799736107390800162778737339576843e4024L, -3.495145258697474565347261083975193776541e4029L, 3.392415245050326563747729613872524362741e4034L, -3.299436517958948801426629481782413630714e4039L, 3.215560142306355508598119430378551642857e4044L, -3.140209934146377815556058799557727461298e4049L, 3.072875852591406752692761744649563131272e4054L, -3.013108231854799187724018548255922550991e4059L, 2.960512761914376268185064129600549308882e4064L, -2.914746139139036596123006476633770383901e4069L, 2.875512319506974985103149834921665445532e4074L, -2.842559316984704569380036093537576068104e4079L, 2.815676498441436148701483904115879856704e4084L, -2.794692334326268275058539147656334465534e4089L, 2.779472571396106785963004020814493340829e4094L, -2.769918800191406321625251621260024635680e4099L, 2.765967395840433013288935879837390099329e4104L, -2.767588816244119880300161388073836623878e4109L, 2.774787246856347651152278076466043136230e4114L, -2.787600586224957950622601135620189837948e4119L, 2.806100771288225169339048358106052817280e4124L, -2.830394446218080573456394167711739786431e4129L, 2.860623983452244712039094143642843717029e4134L, -2.896968870550611723525738907034588104300e4139L, 2.939647481737606306044335918078617963078e4144L, -2.988919258547518526076380181812161398808e4149L, 3.045087329976721023952450383837883029431e4154L, -3.108501609077197464748958150625867523408e4159L, 3.179562410123820875787052833975010965963e4164L, -3.258724638491880104953913719767939138170e4169L, 3.346502614347964869115073881474258766546e4174L, -3.443475601364631413158991572423086599816e4179L, 3.550294123121350747300886840907918182129e4184L, -3.667687162886053419715985091863398517145e4189L, 3.796470357354794420044278000297864085607e4194L, -3.937555311976846882455930574021795626971e4199L, 4.091960185075595842547638450930710467324e4204L, -4.260821710519620959138720129506770036460e4209L, 4.445408854703156440576808070360934740837e4214L, -4.647138333645908068599900650548418672065e4219L, 4.867592250805288922190809906525766574205e4224L, -5.108538156515551259475573296900660666192e4229L, 5.371951876776035157276013631113314852508e4234L, -5.660043513521220243900043448456234873940e4239L, 5.975287081834808618140945840817834710330e4244L, -6.320454323372684034118816565375206053746e4249L, 6.698653321371992324876559665938996023646e4254L, -7.113372643219128807424340495235606473967e4259L, 7.568531854202750881338746432078817214052e4264L, -8.068539383842553693076672384509126681464e4269L, 8.618358887685935324188596304168259394311e4274L, -9.223585437012291673660319256730398171887e4279L, 9.890533091606747031464718533600572123091e4284L, -1.062633567277107015128545384570274268438e4290L, 1.143906286231591191271274413511275981288e4295L, -1.233785411712565904499340744089870916842e4300L, 1.3333073318405302190501709160
//
// 2202-2320: http://www.wolframalpha.com/input/?i=TABLE[N[Bernoulli[i]%2C40]%2C+{i%2C2202%2C2320%2C2}]
2.222043594325228980916360265527780300093e4649L, -2.732869701246338361699515268224049951411e4654L, 3.367233945421922463553518272642397177145e4659L, -4.156377225041273602431272489314020150392e4664L, 5.139764368092890466235162431795350591151e4669L, -6.367329693760865476879589228002216011370e4674L, 7.902356742934106007362514378717026407839e4679L, -9.825176966314431712897976595483070301406e4684L, 1.223792760178593282435724837135946867088e4690L, -1.527068151452750404853140815207477555192e4695L, 1.908935682572268829496101580401263597905e4700L, -2.390593888616966248780378941331847473699e4705L, 2.999171106576893833644521002894489856321e4710L, -3.769440655453736670024798444784356437578e4715L, 4.746047769851891438576002047529258107351e4720L, -5.986405469241447720766576164546767533359e4725L, 7.564466155536872051712519119999711534616e4730L, -9.575641408047918720040356745796976488951e4735L, 1.214322951835035451699619713803395497423e4741L, -1.542682591979864353012093794301924196234e4746L, 1.963334539793192183270983986567556358603e4751L, -2.503148969013901182572118121398034622584e4756L, 3.197076711250102964526567664729089847162e4761L, -4.090653552025822488578293526174572934858e4766L, 5.243302769651520536759521264615159906699e4771L, -6.732697170903775309261288127044088674182e4776L, 8.660529543801770516930589210020128142543e4781L, -1.116015823611149634592870112730519454113e4787L, 1.440675306432920129218036927923030695520e4792L, -1.863078034853256227415397798026969938881e4797L, 2.413595413458810442409656314019115041699e4802L, -3.132317029597258599678590012779717945144e4807L, 4.072246763371584312534474102756137619716e4812L, -5.303577511521827157146305369181950467569e4817L, 6.919417518688636032335131253584331645491e4822L, -9.043473312934241153732087612484569398979e4827L, 1.184037400265044213826044590639924237359e4833L, -1.552956685415800894409743993367334099777e4838L, 2.040404893052952221581694807126473204625e4843L, -2.685565763841580219033402331219206776210e4848L, 3.540927057361929050327811875290025248120e4853L, -4.676912607538885419407656762767991163574e4858L, 6.188165903566760647569323704623433330229e4863L, -8.202087471895029964699042637255411806373e4868L, 1.089045274355389654614196651761310970580e4874L, -1.448524684976553869119447042300206226148e4879L, 1.930028100376784839502387280956424581974e4884L, -2.576074799096023589462128312524664980682e4889L, 3.444369635011990347297134928452972402038e4894L, -4.613354441299253694113609154769978684993e4899L, 6.189834306866879018555349507257537840922e4904L, -8.319470760665157534580593571258276368233e4909L, 1.120124240070996761986102680587384813245e4915L, -1.510740451399746828351090108638980398124e4920L, 2.041108231091323198877509959371257503819e4925L, -2.762447751447012472733302936575873838539e4930L,
#endif
}};
return bernoulli_data[n];
}
template <class T>
inline T unchecked_bernoulli_imp(std::size_t n, const mpl::int_<4>& )
{
//
// Special case added for multiprecision types that have no conversion from long long,
// there are very few such types, but mpfr_class is one.
//
static const boost::array<boost::int32_t, 1 + max_bernoulli_b2n<T>::value> numerators =
{{
boost::int32_t( +1LL),
boost::int32_t( +1LL),
boost::int32_t( -1LL),
boost::int32_t( +1LL),
boost::int32_t( -1LL),
boost::int32_t( +5LL),
boost::int32_t( -691LL),
boost::int32_t( +7LL),
boost::int32_t( -3617LL),
boost::int32_t( +43867LL),
boost::int32_t( -174611LL),
boost::int32_t( +854513LL),
}};
static const boost::array<boost::int32_t, 1 + max_bernoulli_b2n<T>::value> denominators =
{{
boost::int32_t( 1LL),
boost::int32_t( 6LL),
boost::int32_t( 30LL),
boost::int32_t( 42LL),
boost::int32_t( 30LL),
boost::int32_t( 66LL),
boost::int32_t( 2730LL),
boost::int32_t( 6LL),
boost::int32_t( 510LL),
boost::int32_t( 798LL),
boost::int32_t( 330LL),
boost::int32_t( 138LL),
}};
return T(numerators[n]) / T(denominators[n]);
}
} // namespace detail
template<class T>
inline T unchecked_bernoulli_b2n(const std::size_t n)
{
typedef mpl::int_<detail::bernoulli_imp_variant<T>::value> tag_type;
return detail::unchecked_bernoulli_imp<T>(n, tag_type());
}
}} // namespaces
#endif // BOOST_MATH_UNCHECKED_BERNOULLI_HPP