diff --git a/include/boost/math/constants/constants.hpp b/include/boost/math/constants/constants.hpp index 3f8b7e1854..b7ac5a42e2 100644 --- a/include/boost/math/constants/constants.hpp +++ b/include/boost/math/constants/constants.hpp @@ -331,6 +331,17 @@ namespace boost{ namespace math #endif } // namespace constants + +namespace numbers { +#if __cplusplus > 201400L || _MSVC_LANG > 201400L + +template::value, bool>::type = true> +BOOST_INLINE_VARIABLE constexpr T pi_v = boost::math::constants::pi(); + +BOOST_INLINE_VARIABLE constexpr double pi = pi_v; + +#endif +} // namespace numbers } // namespace math } // namespace boost diff --git a/include/boost/math/constants/high_precision_constants.hpp b/include/boost/math/constants/high_precision_constants.hpp new file mode 100644 index 0000000000..ad71d94a96 --- /dev/null +++ b/include/boost/math/constants/high_precision_constants.hpp @@ -0,0 +1,363 @@ +// Copyright Matt Borland 2021. +// 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_MATH_HIGH_PRECISION_CONSTANTS +#define BOOST_MATH_HIGH_PRECISION_CONSTANTS + +#include +#include + +namespace boost { namespace math { namespace numbers { + +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// pi and functions of pi +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +template::value, bool>::type = true> +inline constexpr T pi_hp() noexcept +{ + return T(3.141592653589793238462643383279502884L); +} + +template::value, bool>::type = true> +inline constexpr T pi_hp() noexcept +{ + return std::move(T( + "3." + "1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679" + "8214808651328230664709384460955058223172535940812848111745028410270193852110555964462294895493038196" + "4428810975665933446128475648233786783165271201909145648566923460348610454326648213393607260249141273" + "7245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094" + "3305727036575959195309218611738193261179310511854807446237996274956735188575272489122793818301194912" + "9833673362440656643086021394946395224737190702179860943702770539217176293176752384674818467669405132" + "0005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235" + "4201995611212902196086403441815981362977477130996051870721134999999837297804995105973173281609631859" + "5024459455346908302642522308253344685035261931188171010003137838752886587533208381420617177669147303" + "5982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989" + "3809525720106548586327886593615338182796823030195203530185296899577362259941389124972177528347913151" + "5574857242454150695950829533116861727855889075098381754637464939319255060400927701671139009848824012" + "8583616035637076601047101819429555961989467678374494482553797747268471040475346462080466842590694912" + "9331367702898915210475216205696602405803815019351125338243003558764024749647326391419927260426992279" + "6782354781636009341721641219924586315030286182974555706749838505494588586926995690927210797509302955" + "3211653449872027559602364806654991198818347977535663698074265425278625518184175746728909777727938000" + "8164706001614524919217321721477235014144197356854816136115735255213347574184946843852332390739414333" + "4547762416862518983569485562099219222184272550254256887671790494601653466804988627232791786085784383" + "8279679766814541009538837863609506800642251252051173929848960841284886269456042419652850222106611863" + "0674427862203919494504712371378696095636437191728746776465757396241389086583264599581339047802759009" + "9465764078951269468398352595709825822620522489407726719478268482601476990902640136394437455305068203" + "4962524517493996514314298091906592509372216964615157098583874105978859597729754989301617539284681382" + "6868386894277415599185592524595395943104997252468084598727364469584865383673622262609912460805124388" + "4390451244136549762780797715691435997700129616089441694868555848406353422072225828488648158456028506" + "0168427394522674676788952521385225499546667278239864565961163548862305774564980355936345681743241125" + "1507606947945109659609402522887971089314566913686722874894056010150330861792868092087476091782493858" + "9009714909675985261365549781893129784821682998948722658804857564014270477555132379641451523746234364" + "5428584447952658678210511413547357395231134271661021359695362314429524849371871101457654035902799344" + "0374200731057853906219838744780847848968332144571386875194350643021845319104848100537061468067491927" + "8191197939952061419663428754440643745123718192179998391015919561814675142691239748940907186494231961" + "5679452080951465502252316038819301420937621378559566389377870830390697920773467221825625996615014215" + "0306803844773454920260541466592520149744285073251866600213243408819071048633173464965145390579626856" + "1005508106658796998163574736384052571459102897064140110971206280439039759515677157700420337869936007" + "2305587631763594218731251471205329281918261861258673215791984148488291644706095752706957220917567116" + "7229109816909152801735067127485832228718352093539657251210835791513698820914442100675103346711031412" + "6711136990865851639831501970165151168517143765761835155650884909989859982387345528331635507647918535" + "8932261854896321329330898570642046752590709154814165498594616371802709819943099244889575712828905923" + "2332609729971208443357326548938239119325974636673058360414281388303203824903758985243744170291327656" + "1809377344403070746921120191302033038019762110110044929321516084244485963766983895228684783123552658" + "2131449576857262433441893039686426243410773226978028073189154411010446823252716201052652272111660396" + "6655730925471105578537634668206531098965269186205647693125705863566201855810072936065987648611791045" + "3348850346113657686753249441668039626579787718556084552965412665408530614344431858676975145661406800" + "7002378776591344017127494704205622305389945613140711270004078547332699390814546646458807972708266830" + "6343285878569830523580893306575740679545716377525420211495576158140025012622859413021647155097925923" + "0990796547376125517656751357517829666454779174501129961489030463994713296210734043751895735961458901" + "9389713111790429782856475032031986915140287080859904801094121472213179476477726224142548545403321571" + "8530614228813758504306332175182979866223717215916077166925474873898665494945011465406284336639379003" + "9769265672146385306736096571209180763832716641627488880078692560290228472104031721186082041900042296" + "6171196377921337575114959501566049631862947265473642523081770367515906735023507283540567040386743513" + "6222247715891504953098444893330963408780769325993978054193414473774418426312986080998886874132604721" + "5695162396586457302163159819319516735381297416772947867242292465436680098067692823828068996400482435" + "4037014163149658979409243237896907069779422362508221688957383798623001593776471651228935786015881617" + "5578297352334460428151262720373431465319777741603199066554187639792933441952154134189948544473456738" + "3162499341913181480927777103863877343177207545654532207770921201905166096280490926360197598828161332" + "3166636528619326686336062735676303544776280350450777235547105859548702790814356240145171806246436267" + "9456127531813407833033625423278394497538243720583531147711992606381334677687969597030983391307710987" + "0408591337464144282277263465947047458784778720192771528073176790770715721344473060570073349243693113" + "8350493163128404251219256517980694113528013147013047816437885185290928545201165839341965621349143415" + "9562586586557055269049652098580338507224264829397285847831630577775606888764462482468579260395352773" + "4803048029005876075825104747091643961362676044925627420420832085661190625454337213153595845068772460" + "2901618766795240616342522577195429162991930645537799140373404328752628889639958794757291746426357455" + "2540790914513571113694109119393251910760208252026187985318877058429725916778131496990090192116971737" + "2784768472686084900337702424291651300500516832336435038951702989392233451722013812806965011784408745" + "1960121228599371623130171144484640903890644954440061986907548516026327505298349187407866808818338510" + "2283345085048608250393021332197155184306354550076682829493041377655279397517546139539846833936383047" + "4611996653858153842056853386218672523340283087112328278921250771262946322956398989893582116745627010" + "2183564622013496715188190973038119800497340723961036854066431939509790190699639552453005450580685501" + "9567302292191393391856803449039820595510022635353619204199474553859381023439554495977837790237421617" + "2711172364343543947822181852862408514006660443325888569867054315470696574745855033232334210730154594" + "0516553790686627333799585115625784322988273723198987571415957811196358330059408730681216028764962867" + "4460477464915995054973742562690104903778198683593814657412680492564879855614537234786733039046883834" + "3634655379498641927056387293174872332083760112302991136793862708943879936201629515413371424892830722" + "0126901475466847653576164773794675200490757155527819653621323926406160136358155907422020203187277605" + "2772190055614842555187925303435139844253223415762336106425063904975008656271095359194658975141310348" + "2276930624743536325691607815478181152843667957061108615331504452127473924544945423682886061340841486" + "3776700961207151249140430272538607648236341433462351897576645216413767969031495019108575984423919862" + "9164219399490723623464684411739403265918404437805133389452574239950829659122850855582157250310712570" + "1266830240292952522011872676756220415420516184163484756516999811614101002996078386909291603028840026" + "9104140792886215078424516709087000699282120660418371806535567252532567532861291042487761825829765157" + "9598470356222629348600341587229805349896502262917487882027342092222453398562647669149055628425039127" + "5771028402799806636582548892648802545661017296702664076559042909945681506526530537182941270336931378" + "5178609040708667114965583434347693385781711386455873678123014587687126603489139095620099393610310291" + "6161528813843790990423174733639480457593149314052976347574811935670911013775172100803155902485309066" + "9203767192203322909433467685142214477379393751703443661991040337511173547191855046449026365512816228" + "8244625759163330391072253837421821408835086573917715096828874782656995995744906617583441375223970968" + "3408005355984917541738188399944697486762655165827658483588453142775687900290951702835297163445621296" + "4043523117600665101241200659755851276178583829204197484423608007193045761893234922927965019875187212" + "7267507981255470958904556357921221033346697499235630254947802490114195212382815309114079073860251522" + "7429958180724716259166854513331239480494707911915326734302824418604142636395480004480026704962482017" + "9289647669758318327131425170296923488962766844032326092752496035799646925650493681836090032380929345" + "9588970695365349406034021665443755890045632882250545255640564482465151875471196218443965825337543885" + "6909411303150952617937800297412076651479394259029896959469955657612186561967337862362561252163208628" + "6922210327488921865436480229678070576561514463204692790682120738837781423356282360896320806822246801" + "2248261177185896381409183903673672220888321513755600372798394004152970028783076670944474560134556417" + "2543709069793961225714298946715435784687886144458123145935719849225284716050492212424701412147805734" + "5510500801908699603302763478708108175450119307141223390866393833952942578690507643100638351983438934" + "1596131854347546495569781038293097164651438407007073604112373599843452251610507027056235266012764848" + "3084076118301305279320542746286540360367453286510570658748822569815793678976697422057505968344086973" + "5020141020672358502007245225632651341055924019027421624843914035998953539459094407046912091409387001" + "264560016237428802109276457931065792295524988727584610126483699989225695968815920560010165525637568")); +} + +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// e and functions of e +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +template::value, bool>::type = true> +inline constexpr T e_hp() noexcept +{ + return T(2.718281828459045235360287471352662497L); +} + +template::value, bool>::type = true> +inline constexpr T e_hp() noexcept +{ + return std::move(T( + "2." + "7182818284590452353602874713526624977572470936999595749669676277240766303535475945713821785251664274" + "2746639193200305992181741359662904357290033429526059563073813232862794349076323382988075319525101901" + "1573834187930702154089149934884167509244761460668082264800168477411853742345442437107539077744992069" + "5517027618386062613313845830007520449338265602976067371132007093287091274437470472306969772093101416" + "9283681902551510865746377211125238978442505695369677078544996996794686445490598793163688923009879312" + "7736178215424999229576351482208269895193668033182528869398496465105820939239829488793320362509443117" + "3012381970684161403970198376793206832823764648042953118023287825098194558153017567173613320698112509" + "9618188159304169035159888851934580727386673858942287922849989208680582574927961048419844436346324496" + "8487560233624827041978623209002160990235304369941849146314093431738143640546253152096183690888707016" + "7683964243781405927145635490613031072085103837505101157477041718986106873969655212671546889570350354" + "0212340784981933432106817012100562788023519303322474501585390473041995777709350366041699732972508868" + "7696640355570716226844716256079882651787134195124665201030592123667719432527867539855894489697096409" + "7545918569563802363701621120477427228364896134225164450781824423529486363721417402388934412479635743" + "7026375529444833799801612549227850925778256209262264832627793338656648162772516401910590049164499828" + "9315056604725802778631864155195653244258698294695930801915298721172556347546396447910145904090586298" + "4967912874068705048958586717479854667757573205681288459205413340539220001137863009455606881667400169" + "8420558040336379537645203040243225661352783695117788386387443966253224985065499588623428189970773327" + "6171783928034946501434558897071942586398772754710962953741521115136835062752602326484728703920764310" + "0595841166120545297030236472549296669381151373227536450988890313602057248176585118063036442812314965" + "5070475102544650117272115551948668508003685322818315219600373562527944951582841882947876108526398139" + "5599006737648292244375287184624578036192981971399147564488262603903381441823262515097482798777996437" + "3089970388867782271383605772978824125611907176639465070633045279546618550966661856647097113444740160" + "7046262156807174818778443714369882185596709591025968620023537185887485696522000503117343920732113908" + "0329363447972735595527734907178379342163701205005451326383544000186323991490705479778056697853358048" + "9669062951194324730995876552368128590413832411607226029983305353708761389396391779574540161372236187" + "8936526053815584158718692553860616477983402543512843961294603529133259427949043372990857315802909586" + "3138268329147711639633709240031689458636060645845925126994655724839186564209752685082307544254599376" + "9170419777800853627309417101634349076964237222943523661255725088147792231519747780605696725380171807" + "7636034624592787784658506560507808442115296975218908740196609066518035165017925046195013665854366327" + "1254963990854914420001457476081930221206602433009641270489439039717719518069908699860663658323227870" + "9376502260149291011517177635944602023249300280401867723910288097866605651183260043688508817157238669" + "8422422010249505518816948032210025154264946398128736776589276881635983124778865201411741109136011649" + "9507662907794364600585194199856016264790761532103872755712699251827568798930276176114616254935649590" + "3798045838182323368612016243736569846703785853305275833337939907521660692380533698879565137285593883" + "4998947074161815501253970646481719467083481972144888987906765037959036696724949925452790337296361626" + "5897603949857674139735944102374432970935547798262961459144293645142861715858733974679189757121195618" + "7385783644758448423555581050025611492391518893099463428413936080383091662818811503715284967059741625" + "6282360921680751501777253874025642534708790891372917228286115159156837252416307722544063378759310598" + "2676094420326192428531701878177296023541306067213604600038966109364709514141718577701418060644363681" + "5464440053316087783143174440811949422975599314011888683314832802706553833004693290115744147563139997" + "2217038046170928945790962716622607407187499753592127560844147378233032703301682371936480021732857349" + "3594756433412994302485023573221459784328264142168487872167336701061509424345698440187331281010794512" + "7223737886126058165668053714396127888732527373890392890506865324138062796025930387727697783792868409" + "3253658807339884572187460210053114833513238500478271693762180049047955979592905916554705057775143081" + "7511269898518840871856402603530558373783242292418562564425502267215598027401261797192804713960068916" + "3828665277009752767069777036439260224372841840883251848770472638440379530166905465937461619323840363" + "8931313643271376888410268112198912752230562567562547017250863497653672886059667527408686274079128565" + "7699631378975303466061666980421826772456053066077389962421834085988207186468262321508028828635974683" + "9654358856685503773131296587975810501214916207656769950659715344763470320853215603674828608378656803" + "0730626576334697742956346437167093971930608769634953288468336130388294310408002968738691170666661468" + "0001512114344225602387447432525076938707777519329994213727721125884360871583483562696166198057252661" + "2206797540621062080649882918454395301529982092503005498257043390553570168653120526495614857249257386" + "2069174036952135337325316663454665885972866594511364413703313936721185695539521084584072443238355860" + "6310680696492485123263269951460359603729725319836842336390463213671011619282171115028280160448805880" + "2382031981493096369596735832742024988245684941273860566491352526706046234450549227581151709314921879" + "5927180019409688669868370373022004753143381810927080300172059355305207007060722339994639905713115870" + "9963577735902719628506114651483752620956534671329002599439766311454590268589897911583709341937044115" + "5121920117164880566945938131183843765620627846310490346293950029458341164824114969758326011800731699" + "4373935069662957124102732391387417549230718624545432220395527352952402459038057445028922468862853365" + "4221381572213116328811205214648980518009202471939171055539011394331668151582884368760696110250517100" + "7392762385553386272553538830960671644662370922646809671254061869502143176211668140097595281493907222" + "6011126811531083873176173232352636058381731510345957365382235349929358228368510078108846343499835184" + "0445170427018938199424341009057537625776757111809008816418331920196262341628816652137471732547772778" + "3488774366518828752156685719506371936565390389449366421764003121527870222366463635755503565576948886" + "5495002708539236171055021311474137441061344455441921013361729962856948991933691847294785807291560885" + "1039678195942983318648075608367955149663644896559294818785178403877332624705194505041984774201418394" + "7731202815886845707290544057510601285258056594703046836344592652552137008068752009593453607316226118" + "7281739280746230946853678231060979215993600199462379934342106878134973469592464697525062469586169091" + "7857397659519939299399556754271465491045686070209901260681870498417807917392407194599632306025470790" + "1774527513186809982284730860766536866855516467702911336827563107223346726113705490795365834538637196" + "2358563126183871567741187385277229225947433737856955384562468010139057278710165129666367644518724656" + "5373040244368414081448873295784734849000301947788802046032466084287535184836495919508288832320652212" + "8104190448047247949291342284951970022601310430062410717971502793433263407995960531446053230488528972" + "9176598760166678119379323724538572096075822771784833616135826128962261181294559274627671377944875867" + "5365754486140761193112595851265575973457301533364263076798544338576171533346232527057200530398828949" + "9034259566232975782488735029259166825894456894655992658454762694528780516501720674785417887982276806" + "5366506419109734345288783386217261562695826544782056729877564263253215942944180399432170000905426507" + "6309558846589517170914760743713689331946909098190450129030709956622662030318264936573369841955577696" + "3787624918852865686607600566025605445711337286840205574416030837052312242587223438854123179481388550" + "0756893811249353863186352870837998456926199817945233640874295911807474534195514203517261842008455091" + "7084568236820089773945584267921427347756087964427920270831215015640634134161716644806981548376449157" + "3900121217041547872591998943825364950514771379399147205219529079396137621107238494290616357604596231" + "2535060685376514231153496656837151166042207963944666211632551577290709784731562782775987881364919512" + "5748332879377157145909106484164267830994972367442017586226940215940792448054125536043131799269673915" + "7542419296607312393763542139230617876753958711436104089409966089471418340698362993675362621545247298" + "4642137528910798843813060955526227208375186298370667872244301957937937860721072542772890717328548743" + "7435578196651171661833088112912024520404868220007234403502544820283425418788465360259150644527165770" + "0044521097735585897622655484941621714989532383421600114062950718490427789258552743035221396835679018" + "0764060421383073087744601708426882722611771808426643336517800021719034492342642662922614560043373838" + "6833555534345300426481847398921562708609565062934040526494324426144566592129122564889356965500915430" + "6426134252668472594914314239398845432486327461842846655985332312210466259890141712103446084271616619" + "0012571958707932175696985440133976220967494541854071184464339469901626983516078489245140589409463952" + "6780735457970030705116368251948770118976400282764841416058720618418529718915401968825328930914966534" + "5753571427318482016384644832499037886069008072709327673127581966563941148961716832980455139729506687" + "6047409154204284299935410258291135022416907694316685742425225090269390348148564513030699251995904363" + "8402842926741257342244776558417788617173726546208549829449894678735092958165263207225899236876845701" + "7823038096567883112289305809140572610865884845873101658151167533327674887014829167419701512559782572" + "7074064318086014281490241467804723275976842696339357735429301867394397163886117642090040686633988568" + "4168100387238921448317607011668450388721236436704331409115573328018297798873659091665961240202177855" + "885487617616198937079438005666336488436508914480557103976521469602766258359905198704230017946553679")); +} + +template::value, bool>::type = true> +inline constexpr T log2e_hp() noexcept +{ + return T(1.442695040888963407359924681001892137L); +} + +template::value, bool>::type = true> +inline constexpr T log2e_hp() noexcept +{ + return std::move(T( + "1." + "4426950408889634073599246810018921374266459541529859341354494069311092191811850798855266228935063444" + "9699751830965254425559310168716835964272066215822347933627453736988471849363070138766353201553389431" + "8916664837643128615424047478422289497904795091530351338588054968865893096996368036110511075630844145" + "4272158283449418919339085777157900441712802468483413745226951823690112390940344599685399061134217228" + "8627802915801063006197676244565260599507375324062565581547593817830523972551072481307715626754580757" + "8171330193573006168761937372982675897415623817983567103443489750680705518088486561386832917732182934" + "9139684310593454022025186369345262692150955971910022196792243214334244941790714551184993859212216753" + "6531130077463276720646123374110821191379443339848057931091287760967020037575899815885180612678809976" + "0956252507841024847056900768768058461327865474782027808659462060910749015324819969730579015272324787" + "2987409812541000334486875738223647164945447537067167595899428099818267834901316666335348036789869446" + "8870911666049735372925860721294869735454070809830674893834123718631400835979618865975868745253305468" + "9212976641570420621259246313692421680590877408335813928666541584971162587069556578588747699631296952" + "5004593726273890268056693551287294338372191311166508810015878626559156379540559056778223681400309688" + "4393480862284818479134563314119302384026409727484364496219544922446522204717635860747965855666053409" + "8286098574027883743312688563354434306978701896435826139118100252599020766184432984883184723915912701" + "3904570477357648310102119282970853289609316803539196498695732643937914903084854706164337898563482389" + "0000456426185562249693091396031252022376737607415386211624555116508643679912938937122557275285535850" + "5388627546928167550407303918984389641052039899021078907741074670715487187445927826480325745329406836" + "5525441034657373203151382251293614376241422022507143703697307346094148501086031893236041133111157449" + "3770249146881455360972286167242527208888906151745105253155917831624702943017809593425237197512561232" + "9569505926858901075573121447832714438655839592620356007499708416567681679268721978983048302281782977" + "3851522937973811952783982669234678189827231383524427778656476231348599011940287807324841715110586193" + "4920254688183781835730009470014750295196481783787403935421627884823894197469552086262741947135739259" + "7226651239427201166462692938707284017956993398889202501277913459329094676020415764879790841607401359" + "1578897107736917162881726927551825179602324743501735326068637387937635720444583132643535265092900617" + "4888824703397492045902055772402036499427769923847052717768520335704012591073173663905613752045319777" + "8773562797180625921321743667984249874334562328228971247257945609197595215055835184523639531383497657" + "3762601669811676851461455606386955621626388963231602729710949950695928017443500307985939241575066315" + "1214986756300806506183144210925422756127796743090717127682018390228030306572425229480026707591343672" + "9080697447776799229453917140856561043148672020633912643384787632773495535569020831968308365499869958" + "3642731490798145217886258484513957661104038198050211137567438172517186002685912872643777633249039736" + "2963385236346485345317384090642683683566623194625999497639711599968821052168514397218112080336275327" + "7710877521564849574103985301296247671763047156585964792880879376248342674441071955700343262768181898" + "7416160050944676429010109134259811487369929607834627185425534849301219758603187473185696412559629535" + "8799597385882135599538474178559598134176046398534442952703393982088366282929127783844902714701920490" + "1714694893112878963897715820590960528434031909256530215925857297505043491577322606715497095678034285" + "5986329026985958245997372998851872454890606536427127695544247213959181544057835212120793443687363723" + "0755741238688243239535122701313505295195892516850622399516416589116100234887984472758806134729472381" + "1662775944506845234655263101639919321591490974443553161510684551135594749268898334199868857619261206" + "2004959599685774003807174697798058211608587134826982113193470752184351466436763288827197882074918575" + "2400746313361328520865846053280048727627198874889130282223419759358759778369726515830561259010741205" + "5513873940096016813578790460169363246244467916277783004751204980430843808569553029021487803694938895" + "7890412723663680262858095017048743548958662969870089762094602951509261371053098132907761486893764219" + "6665499362596562322971882411372769664670432573635720465274117731419833145788865989065594976686970419" + "7192356889298314166102424954291946877919673677950286430889703840011530039504977994113946378154915758" + "3321413720410684682736961100751774097980234578935974239232398737899314093725606263718957032046828045" + "1226971099964635965098254431562680539945765463537735071679296684607729081808206332237277648595340221" + "6717703340844802853282869962068687866770774780082319984096426103644324118454154682262556301480302287" + "9006070150324797498734205884187658110782155184571441164343149907218456748168764841188643531831486933" + "0026933168879480153147070653304880939893709123107159280496561579137181074235986483255292671472298682" + "3236038508718790966213441959168085857211807466843551926174751216420597334672381207348666193018576985" + "2262034073783221939791104485548553345658610475855458980832729211938539407137052393201441007768316759" + "3925209523616199009290538465781290194295491592749001375194072127120084438526725199191518248579386261" + "1290315950805581384188669488472219248779130968844580351540558028521536764834090393513915472712910558" + "6866160465288130671499371352381458633045960760155530957259464640849687070134717979623215515623766293" + "3205335404596607199318520305699194205892619733793723959344587032613740808103090913148200581414516553" + "8402382905194011658567693615642858548230404063193606656656116157041680085788729079404035638362497343" + "6726634002666228669936151481621084428002061286318756160873738089624609624418577019344755684974904196" + "9599960688102466750835354296476873939869150565115227735055774887276919106667445469150668929786057919" + "8757576365340890095977074669826361708569604579691269317820241427863723139349337077545365218406316112" + "9727551843625975831819377369507645604120149648618708262058507260233495874878771599591935028260063787" + "5424369852059895493510761747392893624813174870478989494784477213285981324456610808231956563578452210" + "3909612491589480801485392449514617243630554573491439584889630827339274760318328679614778753981962774" + "7554999155516742212014662006675536055303242097817891324030063605287420536033765874599460867389780616" + "7503725476528669207339701794522267444629543871134575869019805821848057109888753800773817570208970038" + "7304644392853921227236170057622304532929114054218680069017676954679219997920115796178352122363938635" + "7257735269647258081035972462386673991451935151624118746672519191213089437291419787702976509368516799" + "9058620579925049746103772632447517536831818163026794271126066162112584633198112874823568925652723470" + "8205083667534708698696473462578021475829786205328965817783797798791330198968298702675954013232726913" + "1421683209720154062102392536085389560716432763765357115662169174094588828407540175994531201629653119" + "7604566772744767029322074278500388507182984498546984846477966708584877743746781141888048820026714734" + "3946587286390653935019929129761272894881486324572314777030948020287997566233156865398737135713487218" + "5523359375758448127006455911954001043374580032498100165463875708832387568332807963690481608302663057" + "1665362470275893611817622911968604222792299388207548412883317658386177635502937973332481695318822457" + "6615747818274751183238863074375402019475496153867094622681716291356086998478265066737468395742413663" + "8952475766127369410807071067319727047517704138295804773342752493350555397085873821417370366256204201" + "7743385649321583347353531634675435998698229349796250903262540973321779306287896125638105490770557238" + "1729374049783818340150389956316107477280689191786075831786147267570641949849193197732322189827597798" + "3760474725511632300739087759378121107573423372571758494053930041899555464017401336053835886942238065" + "1320307397269006170205723357405259725259662537261296912743788526733893752324988157446575533787012471" + "6674716761647150994006988209140281583160584661530310832397977083897360221104034696363660096476801706" + "7013292050887001465081335693512210537164682862278335929503260821607745445733335439244378480201969445" + "1713145740560933610494153376121929201550314574365650530711411277701914085626777875284284821154538889" + "0591745132302363877555514034672289214441828788490045344634666655944416560131535416851305266660205845" + "5987006863442616284115003232181541161876996287416475655686092289734577789864988690384836043262328931" + "5608520947170647506633877910505499675530705189230591793349974065981132036462723586296953924330498307" + "9273988768411579869145152816781478696202299878925070473606664683648086923201545194237769108327209008" + "1741331471151064272754334462930599285499602758421736229856540775134788824444635886143916737980177940" + "6671968515242893465382814143854679341089366425308701666109793552892998646378888344080289889032079417" + "5748412840618674734041573194015613863815780446214741765700321925301855406316036210810190711535343488" + "7117031332488461003564218924682609294996177690273433369358675377801731266962477886848530730497497050" + "5009015567241038953258035761980424978259814160916739033636802012420627448222495886889032467127943243" + "5681468924612191230529690331804984438669741446787300866043055984546146463552353226575533967697801221" + "2582234085683554253123440273137548860292890158160750612989869217580282011512171779843227025630031267" + "2654041072649939728621726804265738401211030491091508375302722081428477634144561111602098246432719243" + "1612929747912323448441418177389130078228246471513942869842137594908459408976152246974197902736074811" + "2951744982067789101984860850782655301756398947976603739761896633566553954964290044644882573957132681" + "2708512743134103094318125513864571486435267350902277261041132080138422243420188041044223148539603478" + "7064433515321211300101779554863753207019449215074144903040384537523742261623044083807053939300384229" + "165026442783563078264202157486276623366317114394870684482098204550399584201628596939712381527239829")); +} + +}}} // Namespaces + +#endif // BOOST_MATH_HIGH_PRECISION_CONSTANTS diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 3c283a2012..d4eb4961ff 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -898,6 +898,7 @@ test-suite misc : test_tr1_c_long_double ] [ run test_constants.cpp : : : [ requires cxx17_if_constexpr cxx17_std_apply ] [ check-target-builds ../config//has_float128 "GCC libquadmath and __float128 support" : -lquadmath ] ] + [ run test_high_precision_constants.cpp : : : [ requires cxx11_sfinae_expr ] ] [ run simple_continued_fraction_test.cpp : : : [ requires cxx17_if_constexpr cxx17_std_apply ] [ check-target-builds ../config//has_float128 "GCC libquadmath and __float128 support" : -lquadmath ] ] [ run centered_continued_fraction_test.cpp : : : [ requires cxx17_if_constexpr cxx17_std_apply ] [ check-target-builds ../config//has_float128 "GCC libquadmath and __float128 support" : -lquadmath ] ] [ run luroth_expansion_test.cpp : : : [ requires cxx17_if_constexpr cxx17_std_apply ] [ check-target-builds ../config//has_float128 "GCC libquadmath and __float128 support" : -lquadmath ] ] diff --git a/test/test_high_precision_constants.cpp b/test/test_high_precision_constants.cpp new file mode 100644 index 0000000000..0495646ce2 --- /dev/null +++ b/test/test_high_precision_constants.cpp @@ -0,0 +1,71 @@ +// Copyright Matt Borland 2021. +// 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) + +#include +#include +#include +#include +#include +#include + +using boost::multiprecision::cpp_bin_float_50; +using boost::multiprecision::cpp_bin_float_100; +using std::abs; + +template +void test_pi() +{ + const T tol = std::numeric_limits::epsilon(); + + T old_pi = boost::math::constants::pi(); + T new_pi = boost::math::numbers::pi_hp(); + + BOOST_TEST(abs(old_pi-new_pi) < tol); +} + +template +void test_e() +{ + const T tol = std::numeric_limits::epsilon(); + + T old_e = boost::math::constants::e(); + T new_e = boost::math::numbers::e_hp(); + + BOOST_TEST(abs(old_e-new_e) < tol); +} + +template +void test_log2e() +{ + const T tol = std::numeric_limits::epsilon(); + + T old_log2e = boost::math::constants::log2_e(); + T new_log2e = boost::math::numbers::log2e_hp(); + + BOOST_TEST(abs(old_log2e - new_log2e) < tol); +} + +int main(void) +{ + test_pi(); + test_pi(); + test_pi(); + test_pi(); + test_pi(); + + test_e(); + test_e(); + test_e(); + test_e(); + test_e(); + + test_log2e(); + test_log2e(); + test_log2e(); + test_log2e(); + test_log2e(); + + boost::report_errors(); +}