backendconc.html 253 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678
  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
  4. <title>Backend Requirements</title>
  5. <link rel="stylesheet" href="../../multiprecision.css" type="text/css">
  6. <meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
  7. <link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
  8. <link rel="up" href="../ref.html" title="Reference">
  9. <link rel="prev" href="internals.html" title="Internal Support Code">
  10. <link rel="next" href="headers.html" title="Header File Structure">
  11. </head>
  12. <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
  13. <table cellpadding="2" width="100%"><tr>
  14. <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
  15. <td align="center"><a href="../../../../../../index.html">Home</a></td>
  16. <td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
  17. <td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
  18. <td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
  19. <td align="center"><a href="../../../../../../more/index.htm">More</a></td>
  20. </tr></table>
  21. <hr>
  22. <div class="spirit-nav">
  23. <a accesskey="p" href="internals.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../ref.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="headers.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
  24. </div>
  25. <div class="section">
  26. <div class="titlepage"><div><div><h3 class="title">
  27. <a name="boost_multiprecision.ref.backendconc"></a><a class="link" href="backendconc.html" title="Backend Requirements">Backend Requirements</a>
  28. </h3></div></div></div>
  29. <p>
  30. The requirements on the <code class="computeroutput"><span class="identifier">Backend</span></code>
  31. template argument to <code class="computeroutput"><span class="identifier">number</span></code>
  32. are split up into sections: compulsory and optional.
  33. </p>
  34. <p>
  35. Compulsory requirements have no default implementation in the library, therefore
  36. if the feature they implement is to be supported at all, then they must be
  37. implemented by the backend.
  38. </p>
  39. <p>
  40. Optional requirements have default implementations that are called if the
  41. backend doesn't provide it's own. Typically the backend will implement these
  42. to improve performance.
  43. </p>
  44. <p>
  45. In the following tables, type B is the <code class="computeroutput"><span class="identifier">Backend</span></code>
  46. template argument to <code class="computeroutput"><span class="identifier">number</span></code>,
  47. <code class="computeroutput"><span class="identifier">b</span></code> and <code class="computeroutput"><span class="identifier">b2</span></code>
  48. are a variables of type B, <code class="computeroutput"><span class="identifier">pb</span></code>
  49. is a variable of type B*, <code class="computeroutput"><span class="identifier">cb</span></code>,
  50. <code class="computeroutput"><span class="identifier">cb2</span></code> and <code class="computeroutput"><span class="identifier">cb3</span></code>
  51. are constant variables of type <code class="computeroutput"><span class="keyword">const</span>
  52. <span class="identifier">B</span></code>, <code class="computeroutput"><span class="identifier">rb</span></code>
  53. is a variable of type <code class="computeroutput"><span class="identifier">B</span><span class="special">&amp;&amp;</span></code>,
  54. <code class="computeroutput"><span class="identifier">a</span></code> and <code class="computeroutput"><span class="identifier">a2</span></code>
  55. are variables of Arithmetic type, <code class="computeroutput"><span class="identifier">s</span></code>
  56. is a variable of type <code class="computeroutput"><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span></code>, <code class="computeroutput"><span class="identifier">ui</span></code> is a variable of type <code class="computeroutput"><span class="keyword">unsigned</span></code>, <code class="computeroutput"><span class="identifier">bb</span></code>
  57. is a variable of type <code class="computeroutput"><span class="keyword">bool</span></code>,
  58. <code class="computeroutput"><span class="identifier">pa</span></code> is a variable of type
  59. pointer-to-arithmetic-type, <code class="computeroutput"><span class="identifier">exp</span></code>
  60. is a variable of type <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">exp_type</span></code>, <code class="computeroutput"><span class="identifier">pexp</span></code>
  61. is a variable of type <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">exp_type</span><span class="special">*</span></code>,
  62. <code class="computeroutput"><span class="identifier">i</span></code> is a variable of type
  63. <code class="computeroutput"><span class="keyword">int</span></code>, <code class="computeroutput"><span class="identifier">pi</span></code>
  64. pointer to a variable of type <code class="computeroutput"><span class="keyword">int</span></code>,
  65. B2 is another type that meets these requirements, b2 is a variable of type
  66. B2, <code class="computeroutput"><span class="identifier">ss</span></code> is variable of type
  67. <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">streamsize</span></code> and <code class="computeroutput"><span class="identifier">ff</span></code>
  68. is a variable of type <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">ios_base</span><span class="special">::</span><span class="identifier">fmtflags</span></code>.
  69. </p>
  70. <div class="table">
  71. <a name="boost_multiprecision.ref.backendconc.compulsory_requirements_on_the_b"></a><p class="title"><b>Table&#160;1.8.&#160;Compulsory Requirements on the Backend type.</b></p>
  72. <div class="table-contents"><table class="table" summary="Compulsory Requirements on the Backend type.">
  73. <colgroup>
  74. <col>
  75. <col>
  76. <col>
  77. <col>
  78. </colgroup>
  79. <thead><tr>
  80. <th>
  81. <p>
  82. Expression
  83. </p>
  84. </th>
  85. <th>
  86. <p>
  87. Return Type
  88. </p>
  89. </th>
  90. <th>
  91. <p>
  92. Comments
  93. </p>
  94. </th>
  95. <th>
  96. <p>
  97. Throws
  98. </p>
  99. </th>
  100. </tr></thead>
  101. <tbody>
  102. <tr>
  103. <td>
  104. <p>
  105. <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>
  106. </p>
  107. </td>
  108. <td>
  109. <p>
  110. <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">list</span><span class="special">&lt;</span><span class="identifier">type</span><span class="special">-</span><span class="identifier">list</span><span class="special">&gt;</span></code>
  111. </p>
  112. </td>
  113. <td>
  114. <p>
  115. A list of signed integral types that can be assigned to type B.
  116. The types shall be listed in order of size, smallest first, and
  117. shall terminate in the type that is <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">intmax_t</span></code>.
  118. </p>
  119. </td>
  120. <td>
  121. <p>
  122. &#160;
  123. </p>
  124. </td>
  125. </tr>
  126. <tr>
  127. <td>
  128. <p>
  129. <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code>
  130. </p>
  131. </td>
  132. <td>
  133. <p>
  134. <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">list</span><span class="special">&lt;</span><span class="identifier">type</span><span class="special">-</span><span class="identifier">list</span><span class="special">&gt;</span></code>
  135. </p>
  136. </td>
  137. <td>
  138. <p>
  139. A list of unsigned integral types that can be assigned to type
  140. B. The types shall be listed in order of size, smallest first,
  141. and shall terminate in the type that is <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">uintmax_t</span></code>.
  142. </p>
  143. </td>
  144. <td>
  145. <p>
  146. &#160;
  147. </p>
  148. </td>
  149. </tr>
  150. <tr>
  151. <td>
  152. <p>
  153. <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">float_types</span></code>
  154. </p>
  155. </td>
  156. <td>
  157. <p>
  158. <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">list</span><span class="special">&lt;</span><span class="identifier">type</span><span class="special">-</span><span class="identifier">list</span><span class="special">&gt;</span></code>
  159. </p>
  160. </td>
  161. <td>
  162. <p>
  163. A list of floating-point types that can be assigned to type B.The
  164. types shall be listed in order of size, smallest first, and shall
  165. terminate in type <code class="computeroutput"><span class="keyword">long</span> <span class="keyword">double</span></code>.
  166. </p>
  167. </td>
  168. <td>
  169. <p>
  170. &#160;
  171. </p>
  172. </td>
  173. </tr>
  174. <tr>
  175. <td>
  176. <p>
  177. <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">exponent_type</span></code>
  178. </p>
  179. </td>
  180. <td>
  181. <p>
  182. A signed integral type.
  183. </p>
  184. </td>
  185. <td>
  186. <p>
  187. The type of the exponent of type B. This type is required only
  188. for floating-point types.
  189. </p>
  190. </td>
  191. <td>
  192. <p>
  193. &#160;
  194. </p>
  195. </td>
  196. </tr>
  197. <tr>
  198. <td>
  199. <p>
  200. <code class="computeroutput"><span class="identifier">B</span><span class="special">()</span></code>
  201. </p>
  202. </td>
  203. <td>
  204. </td>
  205. <td>
  206. <p>
  207. Default constructor.
  208. </p>
  209. </td>
  210. <td>
  211. <p>
  212. &#160;
  213. </p>
  214. </td>
  215. </tr>
  216. <tr>
  217. <td>
  218. <p>
  219. <code class="computeroutput"><span class="identifier">B</span><span class="special">(</span><span class="identifier">cb</span><span class="special">)</span></code>
  220. </p>
  221. </td>
  222. <td>
  223. </td>
  224. <td>
  225. <p>
  226. Copy Constructor.
  227. </p>
  228. </td>
  229. <td>
  230. <p>
  231. &#160;
  232. </p>
  233. </td>
  234. </tr>
  235. <tr>
  236. <td>
  237. <p>
  238. <code class="computeroutput"><span class="identifier">b</span> <span class="special">=</span>
  239. <span class="identifier">b</span></code>
  240. </p>
  241. </td>
  242. <td>
  243. <p>
  244. <code class="computeroutput"><span class="identifier">B</span><span class="special">&amp;</span></code>
  245. </p>
  246. </td>
  247. <td>
  248. <p>
  249. Assignment operator.
  250. </p>
  251. </td>
  252. <td>
  253. <p>
  254. &#160;
  255. </p>
  256. </td>
  257. </tr>
  258. <tr>
  259. <td>
  260. <p>
  261. <code class="computeroutput"><span class="identifier">b</span> <span class="special">=</span>
  262. <span class="identifier">a</span></code>
  263. </p>
  264. </td>
  265. <td>
  266. <p>
  267. <code class="computeroutput"><span class="identifier">B</span><span class="special">&amp;</span></code>
  268. </p>
  269. </td>
  270. <td>
  271. <p>
  272. Assignment from an Arithmetic type. The type of <code class="computeroutput"><span class="identifier">a</span></code>
  273. shall be listed in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
  274. <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">float_types</span></code>.
  275. </p>
  276. </td>
  277. <td>
  278. <p>
  279. &#160;
  280. </p>
  281. </td>
  282. </tr>
  283. <tr>
  284. <td>
  285. <p>
  286. <code class="computeroutput"><span class="identifier">b</span> <span class="special">=</span>
  287. <span class="identifier">s</span></code>
  288. </p>
  289. </td>
  290. <td>
  291. <p>
  292. <code class="computeroutput"><span class="identifier">B</span><span class="special">&amp;</span></code>
  293. </p>
  294. </td>
  295. <td>
  296. <p>
  297. Assignment from a string.
  298. </p>
  299. </td>
  300. <td>
  301. <p>
  302. Throws a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">runtime_error</span></code> if the string could
  303. not be interpreted as a valid number.
  304. </p>
  305. </td>
  306. </tr>
  307. <tr>
  308. <td>
  309. <p>
  310. <code class="computeroutput"><span class="identifier">b</span><span class="special">.</span><span class="identifier">swap</span><span class="special">(</span><span class="identifier">b</span><span class="special">)</span></code>
  311. </p>
  312. </td>
  313. <td>
  314. <p>
  315. <code class="computeroutput"><span class="keyword">void</span></code>
  316. </p>
  317. </td>
  318. <td>
  319. <p>
  320. Swaps the contents of its arguments.
  321. </p>
  322. </td>
  323. <td>
  324. <p>
  325. <code class="computeroutput"><span class="keyword">noexcept</span></code>
  326. </p>
  327. </td>
  328. </tr>
  329. <tr>
  330. <td>
  331. <p>
  332. <code class="computeroutput"><span class="identifier">cb</span><span class="special">.</span><span class="identifier">str</span><span class="special">(</span><span class="identifier">ss</span><span class="special">,</span>
  333. <span class="identifier">ff</span><span class="special">)</span></code>
  334. </p>
  335. </td>
  336. <td>
  337. <p>
  338. <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span></code>
  339. </p>
  340. </td>
  341. <td>
  342. <p>
  343. Returns the string representation of <code class="computeroutput"><span class="identifier">b</span></code>
  344. with <code class="computeroutput"><span class="identifier">ss</span></code> digits
  345. and formatted according to the flags set in <code class="computeroutput"><span class="identifier">ff</span></code>.
  346. If <code class="computeroutput"><span class="identifier">ss</span></code> is zero,
  347. then returns as many digits as are required to reconstruct the
  348. original value.
  349. </p>
  350. </td>
  351. <td>
  352. <p>
  353. &#160;
  354. </p>
  355. </td>
  356. </tr>
  357. <tr>
  358. <td>
  359. <p>
  360. <code class="computeroutput"><span class="identifier">b</span><span class="special">.</span><span class="identifier">negate</span><span class="special">()</span></code>
  361. </p>
  362. </td>
  363. <td>
  364. <p>
  365. <code class="computeroutput"><span class="keyword">void</span></code>
  366. </p>
  367. </td>
  368. <td>
  369. <p>
  370. Negates <code class="computeroutput"><span class="identifier">b</span></code>.
  371. </p>
  372. </td>
  373. <td>
  374. <p>
  375. &#160;
  376. </p>
  377. </td>
  378. </tr>
  379. <tr>
  380. <td>
  381. <p>
  382. <code class="computeroutput"><span class="identifier">cb</span><span class="special">.</span><span class="identifier">compare</span><span class="special">(</span><span class="identifier">cb2</span><span class="special">)</span></code>
  383. </p>
  384. </td>
  385. <td>
  386. <p>
  387. <code class="computeroutput"><span class="keyword">int</span></code>
  388. </p>
  389. </td>
  390. <td>
  391. <p>
  392. Compares <code class="computeroutput"><span class="identifier">cb</span></code> and
  393. <code class="computeroutput"><span class="identifier">cb2</span></code>, returns a
  394. value less than zero if <code class="computeroutput"><span class="identifier">cb</span>
  395. <span class="special">&lt;</span> <span class="identifier">cb2</span></code>,
  396. a value greater than zero if <code class="computeroutput"><span class="identifier">cb</span>
  397. <span class="special">&gt;</span> <span class="identifier">cb2</span></code>
  398. and zero if <code class="computeroutput"><span class="identifier">cb</span> <span class="special">==</span> <span class="identifier">cb2</span></code>.
  399. </p>
  400. </td>
  401. <td>
  402. <p>
  403. <code class="computeroutput"><span class="keyword">noexcept</span></code>
  404. </p>
  405. </td>
  406. </tr>
  407. <tr>
  408. <td>
  409. <p>
  410. <code class="computeroutput"><span class="identifier">cb</span><span class="special">.</span><span class="identifier">compare</span><span class="special">(</span><span class="identifier">a</span><span class="special">)</span></code>
  411. </p>
  412. </td>
  413. <td>
  414. <p>
  415. <code class="computeroutput"><span class="keyword">int</span></code>
  416. </p>
  417. </td>
  418. <td>
  419. <p>
  420. Compares <code class="computeroutput"><span class="identifier">cb</span></code> and
  421. <code class="computeroutput"><span class="identifier">a</span></code>, returns a value
  422. less than zero if <code class="computeroutput"><span class="identifier">cb</span>
  423. <span class="special">&lt;</span> <span class="identifier">a</span></code>,
  424. a value greater than zero if <code class="computeroutput"><span class="identifier">cb</span>
  425. <span class="special">&gt;</span> <span class="identifier">a</span></code>
  426. and zero if <code class="computeroutput"><span class="identifier">cb</span> <span class="special">==</span> <span class="identifier">a</span></code>.
  427. The type of <code class="computeroutput"><span class="identifier">a</span></code> shall
  428. be listed in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
  429. <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">float_types</span></code>.
  430. </p>
  431. </td>
  432. <td>
  433. <p>
  434. &#160;
  435. </p>
  436. </td>
  437. </tr>
  438. <tr>
  439. <td>
  440. <p>
  441. <code class="computeroutput"><span class="identifier">eval_add</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  442. <span class="identifier">cb</span><span class="special">)</span></code>
  443. </p>
  444. </td>
  445. <td>
  446. <p>
  447. <code class="computeroutput"><span class="keyword">void</span></code>
  448. </p>
  449. </td>
  450. <td>
  451. <p>
  452. Adds <code class="computeroutput"><span class="identifier">cb</span></code> to <code class="computeroutput"><span class="identifier">b</span></code>.
  453. </p>
  454. </td>
  455. <td>
  456. <p>
  457. &#160;
  458. </p>
  459. </td>
  460. </tr>
  461. <tr>
  462. <td>
  463. <p>
  464. <code class="computeroutput"><span class="identifier">eval_subtract</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  465. <span class="identifier">cb</span><span class="special">)</span></code>
  466. </p>
  467. </td>
  468. <td>
  469. <p>
  470. <code class="computeroutput"><span class="keyword">void</span></code>
  471. </p>
  472. </td>
  473. <td>
  474. <p>
  475. Subtracts <code class="computeroutput"><span class="identifier">cb</span></code> from
  476. <code class="computeroutput"><span class="identifier">b</span></code>.
  477. </p>
  478. </td>
  479. <td>
  480. <p>
  481. &#160;
  482. </p>
  483. </td>
  484. </tr>
  485. <tr>
  486. <td>
  487. <p>
  488. <code class="computeroutput"><span class="identifier">eval_multiply</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  489. <span class="identifier">cb</span><span class="special">)</span></code>
  490. </p>
  491. </td>
  492. <td>
  493. <p>
  494. <code class="computeroutput"><span class="keyword">void</span></code>
  495. </p>
  496. </td>
  497. <td>
  498. <p>
  499. Multiplies <code class="computeroutput"><span class="identifier">b</span></code> by
  500. <code class="computeroutput"><span class="identifier">cb</span></code>.
  501. </p>
  502. </td>
  503. <td>
  504. <p>
  505. &#160;
  506. </p>
  507. </td>
  508. </tr>
  509. <tr>
  510. <td>
  511. <p>
  512. <code class="computeroutput"><span class="identifier">eval_divide</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  513. <span class="identifier">cb</span><span class="special">)</span></code>
  514. </p>
  515. </td>
  516. <td>
  517. <p>
  518. <code class="computeroutput"><span class="keyword">void</span></code>
  519. </p>
  520. </td>
  521. <td>
  522. <p>
  523. Divides <code class="computeroutput"><span class="identifier">b</span></code> by <code class="computeroutput"><span class="identifier">cb</span></code>.
  524. </p>
  525. </td>
  526. <td>
  527. <p>
  528. <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">overflow_error</span></code> if cb has the
  529. value zero, and <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">B</span><span class="special">&gt;</span> <span class="special">&gt;::</span><span class="identifier">has_infinity</span> <span class="special">==</span>
  530. <span class="keyword">false</span></code>
  531. </p>
  532. </td>
  533. </tr>
  534. <tr>
  535. <td>
  536. <p>
  537. <code class="computeroutput"><span class="identifier">eval_modulus</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  538. <span class="identifier">cb</span><span class="special">)</span></code>
  539. </p>
  540. </td>
  541. <td>
  542. <p>
  543. <code class="computeroutput"><span class="keyword">void</span></code>
  544. </p>
  545. </td>
  546. <td>
  547. <p>
  548. Computes <code class="computeroutput"><span class="identifier">b</span> <span class="special">%=</span>
  549. <span class="identifier">cb</span></code>, only required when
  550. <code class="computeroutput"><span class="identifier">B</span></code> is an integer
  551. type.
  552. </p>
  553. </td>
  554. <td>
  555. <p>
  556. <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">overflow_error</span></code> if cb has the
  557. value zero.
  558. </p>
  559. </td>
  560. </tr>
  561. <tr>
  562. <td>
  563. <p>
  564. <code class="computeroutput"><span class="identifier">eval_bitwise_and</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">)</span></code>
  565. </p>
  566. </td>
  567. <td>
  568. <p>
  569. <code class="computeroutput"><span class="keyword">void</span></code>
  570. </p>
  571. </td>
  572. <td>
  573. <p>
  574. Computes <code class="computeroutput"><span class="identifier">b</span> <span class="special">&amp;=</span>
  575. <span class="identifier">cb</span></code>, only required when
  576. <code class="computeroutput"><span class="identifier">B</span></code> is an integer
  577. type.
  578. </p>
  579. </td>
  580. <td>
  581. <p>
  582. &#160;
  583. </p>
  584. </td>
  585. </tr>
  586. <tr>
  587. <td>
  588. <p>
  589. <code class="computeroutput"><span class="identifier">eval_bitwise_or</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">)</span></code>
  590. </p>
  591. </td>
  592. <td>
  593. <p>
  594. <code class="computeroutput"><span class="keyword">void</span></code>
  595. </p>
  596. </td>
  597. <td>
  598. <p>
  599. Computes <code class="computeroutput"><span class="identifier">b</span> <span class="special">|=</span>
  600. <span class="identifier">cb</span></code>, only required when
  601. <code class="computeroutput"><span class="identifier">B</span></code> is an integer
  602. type.
  603. </p>
  604. </td>
  605. <td>
  606. <p>
  607. &#160;
  608. </p>
  609. </td>
  610. </tr>
  611. <tr>
  612. <td>
  613. <p>
  614. <code class="computeroutput"><span class="identifier">eval_bitwise_xor</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">)</span></code>
  615. </p>
  616. </td>
  617. <td>
  618. <p>
  619. <code class="computeroutput"><span class="keyword">void</span></code>
  620. </p>
  621. </td>
  622. <td>
  623. <p>
  624. Computes <code class="computeroutput"><span class="identifier">b</span> <span class="special">^=</span>
  625. <span class="identifier">cb</span></code>, only required when
  626. <code class="computeroutput"><span class="identifier">B</span></code> is an integer
  627. type.
  628. </p>
  629. </td>
  630. <td>
  631. <p>
  632. &#160;
  633. </p>
  634. </td>
  635. </tr>
  636. <tr>
  637. <td>
  638. <p>
  639. <code class="computeroutput"><span class="identifier">eval_complement</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">)</span></code>
  640. </p>
  641. </td>
  642. <td>
  643. <p>
  644. <code class="computeroutput"><span class="keyword">void</span></code>
  645. </p>
  646. </td>
  647. <td>
  648. <p>
  649. Computes the ones-complement of <code class="computeroutput"><span class="identifier">cb</span></code>
  650. and stores the result in <code class="computeroutput"><span class="identifier">b</span></code>,
  651. only required when <code class="computeroutput"><span class="identifier">B</span></code>
  652. is an integer type.
  653. </p>
  654. </td>
  655. <td>
  656. <p>
  657. &#160;
  658. </p>
  659. </td>
  660. </tr>
  661. <tr>
  662. <td>
  663. <p>
  664. <code class="computeroutput"><span class="identifier">eval_left_shift</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">ui</span><span class="special">)</span></code>
  665. </p>
  666. </td>
  667. <td>
  668. <p>
  669. <code class="computeroutput"><span class="keyword">void</span></code>
  670. </p>
  671. </td>
  672. <td>
  673. <p>
  674. Computes <code class="computeroutput"><span class="identifier">b</span> <span class="special">&lt;&lt;=</span>
  675. <span class="identifier">ui</span></code>, only required when
  676. <code class="computeroutput"><span class="identifier">B</span></code> is an integer
  677. type.
  678. </p>
  679. </td>
  680. <td>
  681. <p>
  682. &#160;
  683. </p>
  684. </td>
  685. </tr>
  686. <tr>
  687. <td>
  688. <p>
  689. <code class="computeroutput"><span class="identifier">eval_right_shift</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">ui</span><span class="special">)</span></code>
  690. </p>
  691. </td>
  692. <td>
  693. <p>
  694. <code class="computeroutput"><span class="keyword">void</span></code>
  695. </p>
  696. </td>
  697. <td>
  698. <p>
  699. Computes <code class="computeroutput"><span class="identifier">b</span> <span class="special">&gt;&gt;=</span>
  700. <span class="identifier">ui</span></code>, only required when
  701. <code class="computeroutput"><span class="identifier">B</span></code> is an integer
  702. type.
  703. </p>
  704. </td>
  705. <td>
  706. <p>
  707. &#160;
  708. </p>
  709. </td>
  710. </tr>
  711. <tr>
  712. <td>
  713. <p>
  714. <code class="computeroutput"><span class="identifier">eval_convert_to</span><span class="special">(</span><span class="identifier">pa</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">)</span></code>
  715. </p>
  716. </td>
  717. <td>
  718. <p>
  719. <code class="computeroutput"><span class="keyword">void</span></code>
  720. </p>
  721. </td>
  722. <td>
  723. <p>
  724. Converts <code class="computeroutput"><span class="identifier">cb</span></code> to
  725. the type of <code class="computeroutput"><span class="special">*</span><span class="identifier">pa</span></code>
  726. and store the result in <code class="computeroutput"><span class="special">*</span><span class="identifier">pa</span></code>. Type <code class="computeroutput"><span class="identifier">B</span></code>
  727. shall support conversion to at least types <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">intmax_t</span></code>,
  728. <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">uintmax_t</span></code> and <code class="computeroutput"><span class="keyword">long</span>
  729. <span class="keyword">long</span></code>. Conversion to other
  730. arithmetic types can then be synthesised using other operations.
  731. Conversions to other types are entirely optional.
  732. </p>
  733. </td>
  734. <td>
  735. <p>
  736. &#160;
  737. </p>
  738. </td>
  739. </tr>
  740. <tr>
  741. <td>
  742. <p>
  743. <code class="computeroutput"><span class="identifier">eval_frexp</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  744. <span class="identifier">cb</span><span class="special">,</span>
  745. <span class="identifier">pexp</span><span class="special">)</span></code>
  746. </p>
  747. </td>
  748. <td>
  749. <p>
  750. <code class="computeroutput"><span class="keyword">void</span></code>
  751. </p>
  752. </td>
  753. <td>
  754. <p>
  755. Stores values in <code class="computeroutput"><span class="identifier">b</span></code>
  756. and <code class="computeroutput"><span class="special">*</span><span class="identifier">pexp</span></code>
  757. such that the value of <code class="computeroutput"><span class="identifier">cb</span></code>
  758. is b * 2<sup>*pexp</sup>, only required when <code class="computeroutput"><span class="identifier">B</span></code>
  759. is a floating-point type.
  760. </p>
  761. </td>
  762. <td>
  763. <p>
  764. &#160;
  765. </p>
  766. </td>
  767. </tr>
  768. <tr>
  769. <td>
  770. <p>
  771. <code class="computeroutput"><span class="identifier">eval_ldexp</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  772. <span class="identifier">cb</span><span class="special">,</span>
  773. <span class="identifier">exp</span><span class="special">)</span></code>
  774. </p>
  775. </td>
  776. <td>
  777. <p>
  778. <code class="computeroutput"><span class="keyword">void</span></code>
  779. </p>
  780. </td>
  781. <td>
  782. <p>
  783. Stores a value in <code class="computeroutput"><span class="identifier">b</span></code>
  784. that is cb * 2<sup>exp</sup>, only required when <code class="computeroutput"><span class="identifier">B</span></code>
  785. is a floating-point type.
  786. </p>
  787. </td>
  788. <td>
  789. <p>
  790. &#160;
  791. </p>
  792. </td>
  793. </tr>
  794. <tr>
  795. <td>
  796. <p>
  797. <code class="computeroutput"><span class="identifier">eval_frexp</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  798. <span class="identifier">cb</span><span class="special">,</span>
  799. <span class="identifier">pi</span><span class="special">)</span></code>
  800. </p>
  801. </td>
  802. <td>
  803. <p>
  804. <code class="computeroutput"><span class="keyword">void</span></code>
  805. </p>
  806. </td>
  807. <td>
  808. <p>
  809. Stores values in <code class="computeroutput"><span class="identifier">b</span></code>
  810. and <code class="computeroutput"><span class="special">*</span><span class="identifier">pi</span></code>
  811. such that the value of <code class="computeroutput"><span class="identifier">cb</span></code>
  812. is b * 2<sup>*pi</sup>, only required when <code class="computeroutput"><span class="identifier">B</span></code>
  813. is a floating-point type.
  814. </p>
  815. </td>
  816. <td>
  817. <p>
  818. <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">runtime_error</span></code> if the exponent
  819. of cb is too large to be stored in an <code class="computeroutput"><span class="keyword">int</span></code>.
  820. </p>
  821. </td>
  822. </tr>
  823. <tr>
  824. <td>
  825. <p>
  826. <code class="computeroutput"><span class="identifier">eval_ldexp</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  827. <span class="identifier">cb</span><span class="special">,</span>
  828. <span class="identifier">i</span><span class="special">)</span></code>
  829. </p>
  830. </td>
  831. <td>
  832. <p>
  833. <code class="computeroutput"><span class="keyword">void</span></code>
  834. </p>
  835. </td>
  836. <td>
  837. <p>
  838. Stores a value in <code class="computeroutput"><span class="identifier">b</span></code>
  839. that is cb * 2<sup>i</sup>, only required when <code class="computeroutput"><span class="identifier">B</span></code>
  840. is a floating-point type.
  841. </p>
  842. </td>
  843. <td>
  844. <p>
  845. &#160;
  846. </p>
  847. </td>
  848. </tr>
  849. <tr>
  850. <td>
  851. <p>
  852. <code class="computeroutput"><span class="identifier">eval_floor</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  853. <span class="identifier">cb</span><span class="special">)</span></code>
  854. </p>
  855. </td>
  856. <td>
  857. <p>
  858. <code class="computeroutput"><span class="keyword">void</span></code>
  859. </p>
  860. </td>
  861. <td>
  862. <p>
  863. Stores the floor of <code class="computeroutput"><span class="identifier">cb</span></code>
  864. in <code class="computeroutput"><span class="identifier">b</span></code>, only required
  865. when <code class="computeroutput"><span class="identifier">B</span></code> is a floating-point
  866. type.
  867. </p>
  868. </td>
  869. <td>
  870. <p>
  871. &#160;
  872. </p>
  873. </td>
  874. </tr>
  875. <tr>
  876. <td>
  877. <p>
  878. <code class="computeroutput"><span class="identifier">eval_ceil</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  879. <span class="identifier">cb</span><span class="special">)</span></code>
  880. </p>
  881. </td>
  882. <td>
  883. <p>
  884. <code class="computeroutput"><span class="keyword">void</span></code>
  885. </p>
  886. </td>
  887. <td>
  888. <p>
  889. Stores the ceiling of <code class="computeroutput"><span class="identifier">cb</span></code>
  890. in <code class="computeroutput"><span class="identifier">b</span></code>, only required
  891. when <code class="computeroutput"><span class="identifier">B</span></code> is a floating-point
  892. type.
  893. </p>
  894. </td>
  895. <td>
  896. <p>
  897. &#160;
  898. </p>
  899. </td>
  900. </tr>
  901. <tr>
  902. <td>
  903. <p>
  904. <code class="computeroutput"><span class="identifier">eval_sqrt</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  905. <span class="identifier">cb</span><span class="special">)</span></code>
  906. </p>
  907. </td>
  908. <td>
  909. <p>
  910. <code class="computeroutput"><span class="keyword">void</span></code>
  911. </p>
  912. </td>
  913. <td>
  914. <p>
  915. Stores the square root of <code class="computeroutput"><span class="identifier">cb</span></code>
  916. in <code class="computeroutput"><span class="identifier">b</span></code>, only required
  917. when <code class="computeroutput"><span class="identifier">B</span></code> is a floating-point
  918. type.
  919. </p>
  920. </td>
  921. <td>
  922. <p>
  923. &#160;
  924. </p>
  925. </td>
  926. </tr>
  927. <tr>
  928. <td>
  929. <p>
  930. <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">::</span><span class="identifier">number_category</span><span class="special">&lt;</span><span class="identifier">B</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
  931. </p>
  932. </td>
  933. <td>
  934. <p>
  935. <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">int_</span><span class="special">&lt;</span><span class="identifier">N</span><span class="special">&gt;</span></code>
  936. </p>
  937. </td>
  938. <td>
  939. <p>
  940. <code class="computeroutput"><span class="identifier">N</span></code> is one of the
  941. values <code class="computeroutput"><span class="identifier">number_kind_integer</span></code>,
  942. <code class="computeroutput"><span class="identifier">number_kind_floating_point</span></code>,
  943. <code class="computeroutput"><span class="identifier">number_kind_complex</span></code>,
  944. <code class="computeroutput"><span class="identifier">number_kind_rational</span></code>
  945. or <code class="computeroutput"><span class="identifier">number_kind_fixed_point</span></code>.
  946. Defaults to <code class="computeroutput"><span class="identifier">number_kind_floating_point</span></code>.
  947. </p>
  948. </td>
  949. <td>
  950. <p>
  951. &#160;
  952. </p>
  953. </td>
  954. </tr>
  955. <tr>
  956. <td>
  957. <p>
  958. <code class="computeroutput"><span class="identifier">eval_conj</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  959. <span class="identifier">cb</span><span class="special">)</span></code>
  960. </p>
  961. </td>
  962. <td>
  963. <p>
  964. <code class="computeroutput"><span class="keyword">void</span></code>
  965. </p>
  966. </td>
  967. <td>
  968. <p>
  969. Sets <code class="computeroutput"><span class="identifier">b</span></code> to the complex
  970. conjugate of <code class="computeroutput"><span class="identifier">cb</span></code>.
  971. Required for complex types only - other types have a sensible default.
  972. </p>
  973. </td>
  974. <td>
  975. <p>
  976. &#160;
  977. </p>
  978. </td>
  979. </tr>
  980. <tr>
  981. <td>
  982. <p>
  983. <code class="computeroutput"><span class="identifier">eval_proj</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  984. <span class="identifier">cb</span><span class="special">)</span></code>
  985. </p>
  986. </td>
  987. <td>
  988. <p>
  989. <code class="computeroutput"><span class="keyword">void</span></code>
  990. </p>
  991. </td>
  992. <td>
  993. <p>
  994. Sets <code class="computeroutput"><span class="identifier">b</span></code> to the Riemann
  995. projection of <code class="computeroutput"><span class="identifier">cb</span></code>.
  996. Required for complex types only - other types have a sensible default.
  997. </p>
  998. </td>
  999. <td>
  1000. <p>
  1001. &#160;
  1002. </p>
  1003. </td>
  1004. </tr>
  1005. <tr>
  1006. <td>
  1007. <p>
  1008. <code class="computeroutput"><span class="identifier">eval_real</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  1009. <span class="identifier">cb</span><span class="special">)</span></code>
  1010. </p>
  1011. </td>
  1012. <td>
  1013. <p>
  1014. <code class="computeroutput"><span class="keyword">void</span></code>
  1015. </p>
  1016. </td>
  1017. <td>
  1018. <p>
  1019. Sets <code class="computeroutput"><span class="identifier">b</span></code> to the real
  1020. part of <code class="computeroutput"><span class="identifier">cb</span></code>. Required
  1021. for complex types only - other types have a sensible default.
  1022. </p>
  1023. </td>
  1024. <td>
  1025. <p>
  1026. &#160;
  1027. </p>
  1028. </td>
  1029. </tr>
  1030. <tr>
  1031. <td>
  1032. <p>
  1033. <code class="computeroutput"><span class="identifier">eval_imag</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  1034. <span class="identifier">cb</span><span class="special">)</span></code>
  1035. </p>
  1036. </td>
  1037. <td>
  1038. <p>
  1039. <code class="computeroutput"><span class="keyword">void</span></code>
  1040. </p>
  1041. </td>
  1042. <td>
  1043. <p>
  1044. Sets <code class="computeroutput"><span class="identifier">b</span></code> to the imaginary
  1045. of <code class="computeroutput"><span class="identifier">cb</span></code>. Required
  1046. for complex types only - other types have a sensible default.
  1047. </p>
  1048. </td>
  1049. <td>
  1050. <p>
  1051. &#160;
  1052. </p>
  1053. </td>
  1054. </tr>
  1055. <tr>
  1056. <td>
  1057. <p>
  1058. <code class="computeroutput"><span class="identifier">eval_set_real</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  1059. <span class="identifier">a</span><span class="special">)</span></code>
  1060. </p>
  1061. </td>
  1062. <td>
  1063. <p>
  1064. <code class="computeroutput"><span class="keyword">void</span></code>
  1065. </p>
  1066. </td>
  1067. <td>
  1068. <p>
  1069. Sets the real part of <code class="computeroutput"><span class="identifier">b</span></code>
  1070. to <code class="computeroutput"><span class="identifier">cb</span></code>. Required
  1071. for complex types only - other types have a sensible default.
  1072. </p>
  1073. </td>
  1074. <td>
  1075. <p>
  1076. &#160;
  1077. </p>
  1078. </td>
  1079. </tr>
  1080. <tr>
  1081. <td>
  1082. <p>
  1083. <code class="computeroutput"><span class="identifier">eval_set_imag</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  1084. <span class="identifier">a</span><span class="special">)</span></code>
  1085. </p>
  1086. </td>
  1087. <td>
  1088. <p>
  1089. <code class="computeroutput"><span class="keyword">void</span></code>
  1090. </p>
  1091. </td>
  1092. <td>
  1093. <p>
  1094. Sets the imaginary part of <code class="computeroutput"><span class="identifier">b</span></code>
  1095. to <code class="computeroutput"><span class="identifier">cb</span></code>. Required
  1096. for complex types only - other types have a sensible default.
  1097. </p>
  1098. </td>
  1099. <td>
  1100. <p>
  1101. &#160;
  1102. </p>
  1103. </td>
  1104. </tr>
  1105. </tbody>
  1106. </table></div>
  1107. </div>
  1108. <br class="table-break"><div class="table">
  1109. <a name="boost_multiprecision.ref.backendconc.optional_requirements_on_the_bac"></a><p class="title"><b>Table&#160;1.9.&#160;Optional Requirements on the Backend Type</b></p>
  1110. <div class="table-contents"><table class="table" summary="Optional Requirements on the Backend Type">
  1111. <colgroup>
  1112. <col>
  1113. <col>
  1114. <col>
  1115. </colgroup>
  1116. <thead><tr>
  1117. <th>
  1118. <p>
  1119. Expression
  1120. </p>
  1121. </th>
  1122. <th>
  1123. <p>
  1124. Returns
  1125. </p>
  1126. </th>
  1127. <th>
  1128. <p>
  1129. Comments
  1130. </p>
  1131. </th>
  1132. <th>
  1133. <p>
  1134. Throws
  1135. </p>
  1136. </th>
  1137. </tr></thead>
  1138. <tbody>
  1139. <tr>
  1140. <td>
  1141. <p>
  1142. <span class="emphasis"><em>Construct and assign:</em></span>
  1143. </p>
  1144. </td>
  1145. <td class="auto-generated">&#160;</td>
  1146. <td class="auto-generated">&#160;</td>
  1147. </tr>
  1148. <tr>
  1149. <td>
  1150. <p>
  1151. <code class="computeroutput"><span class="identifier">B</span><span class="special">(</span><span class="identifier">rb</span><span class="special">)</span></code>
  1152. </p>
  1153. </td>
  1154. <td>
  1155. <p>
  1156. <code class="computeroutput"><span class="identifier">B</span></code>
  1157. </p>
  1158. </td>
  1159. <td>
  1160. <p>
  1161. Move constructor. Afterwards variable <code class="computeroutput"><span class="identifier">rb</span></code>
  1162. shall be in sane state, albeit with unspecified value. Only destruction
  1163. and assignment to the moved-from variable <code class="computeroutput"><span class="identifier">rb</span></code>
  1164. need be supported after the operation.
  1165. </p>
  1166. </td>
  1167. <td>
  1168. <p>
  1169. <code class="computeroutput"><span class="keyword">noexcept</span></code>
  1170. </p>
  1171. </td>
  1172. </tr>
  1173. <tr>
  1174. <td>
  1175. <p>
  1176. <code class="computeroutput"><span class="identifier">b</span> <span class="special">=</span>
  1177. <span class="identifier">rb</span></code>
  1178. </p>
  1179. </td>
  1180. <td>
  1181. <p>
  1182. <code class="computeroutput"><span class="identifier">B</span><span class="special">&amp;</span></code>
  1183. </p>
  1184. </td>
  1185. <td>
  1186. <p>
  1187. Move-assign. Afterwards variable <code class="computeroutput"><span class="identifier">rb</span></code>
  1188. shall be in sane state, albeit with unspecified value. Only destruction
  1189. and assignment to the moved-from variable <code class="computeroutput"><span class="identifier">rb</span></code>
  1190. need be supported after the operation.
  1191. </p>
  1192. </td>
  1193. <td>
  1194. <p>
  1195. <code class="computeroutput"><span class="keyword">noexcept</span></code>
  1196. </p>
  1197. </td>
  1198. </tr>
  1199. <tr>
  1200. <td>
  1201. <p>
  1202. <code class="computeroutput"><span class="identifier">B</span><span class="special">(</span><span class="identifier">a</span><span class="special">)</span></code>
  1203. </p>
  1204. </td>
  1205. <td>
  1206. <p>
  1207. <code class="computeroutput"><span class="identifier">B</span></code>
  1208. </p>
  1209. </td>
  1210. <td>
  1211. <p>
  1212. Direct construction from an arithmetic type. The type of <code class="computeroutput"><span class="identifier">a</span></code> shall be listed in one of the
  1213. type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>, <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code>
  1214. or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">float_types</span></code>. When not provided,
  1215. this operation is simulated using default-construction followed
  1216. by assignment.
  1217. </p>
  1218. </td>
  1219. <td>
  1220. <p>
  1221. &#160;
  1222. </p>
  1223. </td>
  1224. </tr>
  1225. <tr>
  1226. <td>
  1227. <p>
  1228. <code class="computeroutput"><span class="identifier">B</span><span class="special">(</span><span class="identifier">b2</span><span class="special">)</span></code>
  1229. </p>
  1230. </td>
  1231. <td>
  1232. <p>
  1233. <code class="computeroutput"><span class="identifier">B</span></code>
  1234. </p>
  1235. </td>
  1236. <td>
  1237. <p>
  1238. Copy constructor from a different back-end type. When not provided,
  1239. a generic interconversion routine is used. This constructor may
  1240. be <code class="computeroutput"><span class="keyword">explicit</span></code> if the
  1241. corresponding frontend constructor should also be <code class="computeroutput"><span class="keyword">explicit</span></code>.
  1242. </p>
  1243. </td>
  1244. <td>
  1245. <p>
  1246. &#160;
  1247. </p>
  1248. </td>
  1249. </tr>
  1250. <tr>
  1251. <td>
  1252. <p>
  1253. <code class="computeroutput"><span class="identifier">b</span> <span class="special">=</span>
  1254. <span class="identifier">b2</span></code>
  1255. </p>
  1256. </td>
  1257. <td>
  1258. <p>
  1259. <code class="computeroutput"><span class="identifier">b</span><span class="special">&amp;</span></code>
  1260. </p>
  1261. </td>
  1262. <td>
  1263. <p>
  1264. Assignment operator from a different back-end type. When not provided,
  1265. a generic interconversion routine is used.
  1266. </p>
  1267. </td>
  1268. <td>
  1269. <p>
  1270. &#160;
  1271. </p>
  1272. </td>
  1273. </tr>
  1274. <tr>
  1275. <td>
  1276. <p>
  1277. <code class="computeroutput"><span class="identifier">assign_components</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">a</span><span class="special">)</span></code>
  1278. </p>
  1279. </td>
  1280. <td>
  1281. <p>
  1282. <code class="computeroutput"><span class="keyword">void</span></code>
  1283. </p>
  1284. </td>
  1285. <td>
  1286. <p>
  1287. Assigns to <code class="computeroutput"><span class="identifier">b</span></code> the
  1288. two components in the following arguments. Only applies to rational
  1289. and complex number types. When not provided, arithmetic operations
  1290. are used to synthesise the result from the two values.
  1291. </p>
  1292. </td>
  1293. <td>
  1294. <p>
  1295. &#160;
  1296. </p>
  1297. </td>
  1298. </tr>
  1299. <tr>
  1300. <td>
  1301. <p>
  1302. <code class="computeroutput"><span class="identifier">assign_components</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">b2</span><span class="special">,</span> <span class="identifier">b2</span><span class="special">)</span></code>
  1303. </p>
  1304. </td>
  1305. <td>
  1306. <p>
  1307. <code class="computeroutput"><span class="keyword">void</span></code>
  1308. </p>
  1309. </td>
  1310. <td>
  1311. <p>
  1312. Assigns to <code class="computeroutput"><span class="identifier">b</span></code> the
  1313. two components in the following arguments. Only applies to rational
  1314. and complex number types. When not provided, arithmetic operations
  1315. are used to synthesise the result from the two values.
  1316. </p>
  1317. </td>
  1318. <td>
  1319. <p>
  1320. &#160;
  1321. </p>
  1322. </td>
  1323. </tr>
  1324. <tr>
  1325. <td>
  1326. <p>
  1327. <span class="emphasis"><em>Comparisons:</em></span>
  1328. </p>
  1329. </td>
  1330. <td class="auto-generated">&#160;</td>
  1331. <td class="auto-generated">&#160;</td>
  1332. </tr>
  1333. <tr>
  1334. <td>
  1335. <p>
  1336. <code class="computeroutput"><span class="identifier">eval_eq</span><span class="special">(</span><span class="identifier">cb</span><span class="special">,</span>
  1337. <span class="identifier">cb2</span><span class="special">)</span></code>
  1338. </p>
  1339. </td>
  1340. <td>
  1341. <p>
  1342. <code class="computeroutput"><span class="keyword">bool</span></code>
  1343. </p>
  1344. </td>
  1345. <td>
  1346. <p>
  1347. Returns <code class="computeroutput"><span class="keyword">true</span></code> if <code class="computeroutput"><span class="identifier">cb</span></code> and <code class="computeroutput"><span class="identifier">cb2</span></code>
  1348. are equal in value. When not provided, the default implementation
  1349. returns <code class="computeroutput"><span class="identifier">cb</span><span class="special">.</span><span class="identifier">compare</span><span class="special">(</span><span class="identifier">cb2</span><span class="special">)</span>
  1350. <span class="special">==</span> <span class="number">0</span></code>.
  1351. </p>
  1352. </td>
  1353. <td>
  1354. <p>
  1355. <code class="computeroutput"><span class="keyword">noexcept</span></code>
  1356. </p>
  1357. </td>
  1358. </tr>
  1359. <tr>
  1360. <td>
  1361. <p>
  1362. <code class="computeroutput"><span class="identifier">eval_eq</span><span class="special">(</span><span class="identifier">cb</span><span class="special">,</span>
  1363. <span class="identifier">a</span><span class="special">)</span></code>
  1364. </p>
  1365. </td>
  1366. <td>
  1367. <p>
  1368. <code class="computeroutput"><span class="keyword">bool</span></code>
  1369. </p>
  1370. </td>
  1371. <td>
  1372. <p>
  1373. Returns <code class="computeroutput"><span class="keyword">true</span></code> if <code class="computeroutput"><span class="identifier">cb</span></code> and <code class="computeroutput"><span class="identifier">a</span></code>
  1374. are equal in value. The type of <code class="computeroutput"><span class="identifier">a</span></code>
  1375. shall be listed in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
  1376. <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">float_types</span></code>. When not provided,
  1377. return the equivalent of <code class="computeroutput"><span class="identifier">eval_eq</span><span class="special">(</span><span class="identifier">cb</span><span class="special">,</span> <span class="identifier">B</span><span class="special">(</span><span class="identifier">a</span><span class="special">))</span></code>.
  1378. </p>
  1379. </td>
  1380. <td>
  1381. <p>
  1382. &#160;
  1383. </p>
  1384. </td>
  1385. </tr>
  1386. <tr>
  1387. <td>
  1388. <p>
  1389. <code class="computeroutput"><span class="identifier">eval_eq</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span>
  1390. <span class="identifier">cb</span><span class="special">)</span></code>
  1391. </p>
  1392. </td>
  1393. <td>
  1394. <p>
  1395. <code class="computeroutput"><span class="keyword">bool</span></code>
  1396. </p>
  1397. </td>
  1398. <td>
  1399. <p>
  1400. Returns <code class="computeroutput"><span class="keyword">true</span></code> if <code class="computeroutput"><span class="identifier">cb</span></code> and <code class="computeroutput"><span class="identifier">a</span></code>
  1401. are equal in value. The type of <code class="computeroutput"><span class="identifier">a</span></code>
  1402. shall be listed in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
  1403. <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">float_types</span></code>. When not provided,
  1404. the default version returns <code class="computeroutput"><span class="identifier">eval_eq</span><span class="special">(</span><span class="identifier">cb</span><span class="special">,</span> <span class="identifier">a</span><span class="special">)</span></code>.
  1405. </p>
  1406. </td>
  1407. <td>
  1408. <p>
  1409. &#160;
  1410. </p>
  1411. </td>
  1412. </tr>
  1413. <tr>
  1414. <td>
  1415. <p>
  1416. <code class="computeroutput"><span class="identifier">eval_lt</span><span class="special">(</span><span class="identifier">cb</span><span class="special">,</span>
  1417. <span class="identifier">cb2</span><span class="special">)</span></code>
  1418. </p>
  1419. </td>
  1420. <td>
  1421. <p>
  1422. <code class="computeroutput"><span class="keyword">bool</span></code>
  1423. </p>
  1424. </td>
  1425. <td>
  1426. <p>
  1427. Returns <code class="computeroutput"><span class="keyword">true</span></code> if <code class="computeroutput"><span class="identifier">cb</span></code> is less than <code class="computeroutput"><span class="identifier">cb2</span></code> in value. When not provided,
  1428. the default implementation returns <code class="computeroutput"><span class="identifier">cb</span><span class="special">.</span><span class="identifier">compare</span><span class="special">(</span><span class="identifier">cb2</span><span class="special">)</span> <span class="special">&lt;</span>
  1429. <span class="number">0</span></code>.
  1430. </p>
  1431. </td>
  1432. <td>
  1433. <p>
  1434. <code class="computeroutput"><span class="keyword">noexcept</span></code>
  1435. </p>
  1436. </td>
  1437. </tr>
  1438. <tr>
  1439. <td>
  1440. <p>
  1441. <code class="computeroutput"><span class="identifier">eval_lt</span><span class="special">(</span><span class="identifier">cb</span><span class="special">,</span>
  1442. <span class="identifier">a</span><span class="special">)</span></code>
  1443. </p>
  1444. </td>
  1445. <td>
  1446. <p>
  1447. <code class="computeroutput"><span class="keyword">bool</span></code>
  1448. </p>
  1449. </td>
  1450. <td>
  1451. <p>
  1452. Returns <code class="computeroutput"><span class="keyword">true</span></code> if <code class="computeroutput"><span class="identifier">cb</span></code> is less than <code class="computeroutput"><span class="identifier">a</span></code> in value. The type of <code class="computeroutput"><span class="identifier">a</span></code> shall be listed in one of the
  1453. type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>, <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code>
  1454. or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">float_types</span></code>. When not provided,
  1455. the default implementation returns <code class="computeroutput"><span class="identifier">eval_lt</span><span class="special">(</span><span class="identifier">cb</span><span class="special">,</span> <span class="identifier">B</span><span class="special">(</span><span class="identifier">a</span><span class="special">))</span></code>.
  1456. </p>
  1457. </td>
  1458. <td>
  1459. <p>
  1460. &#160;
  1461. </p>
  1462. </td>
  1463. </tr>
  1464. <tr>
  1465. <td>
  1466. <p>
  1467. <code class="computeroutput"><span class="identifier">eval_lt</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span>
  1468. <span class="identifier">cb</span><span class="special">)</span></code>
  1469. </p>
  1470. </td>
  1471. <td>
  1472. <p>
  1473. <code class="computeroutput"><span class="keyword">bool</span></code>
  1474. </p>
  1475. </td>
  1476. <td>
  1477. <p>
  1478. Returns <code class="computeroutput"><span class="keyword">true</span></code> if <code class="computeroutput"><span class="identifier">a</span></code> is less than <code class="computeroutput"><span class="identifier">cb</span></code> in value. The type of <code class="computeroutput"><span class="identifier">a</span></code> shall be listed in one of the
  1479. type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>, <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code>
  1480. or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">float_types</span></code>. When not provided,
  1481. the default implementation returns <code class="computeroutput"><span class="identifier">eval_gt</span><span class="special">(</span><span class="identifier">cb</span><span class="special">,</span> <span class="identifier">a</span><span class="special">)</span></code>.
  1482. </p>
  1483. </td>
  1484. <td>
  1485. <p>
  1486. &#160;
  1487. </p>
  1488. </td>
  1489. </tr>
  1490. <tr>
  1491. <td>
  1492. <p>
  1493. <code class="computeroutput"><span class="identifier">eval_gt</span><span class="special">(</span><span class="identifier">cb</span><span class="special">,</span>
  1494. <span class="identifier">cb2</span><span class="special">)</span></code>
  1495. </p>
  1496. </td>
  1497. <td>
  1498. <p>
  1499. <code class="computeroutput"><span class="keyword">bool</span></code>
  1500. </p>
  1501. </td>
  1502. <td>
  1503. <p>
  1504. Returns <code class="computeroutput"><span class="keyword">true</span></code> if <code class="computeroutput"><span class="identifier">cb</span></code> is greater than <code class="computeroutput"><span class="identifier">cb2</span></code> in value. When not provided,
  1505. the default implementation returns <code class="computeroutput"><span class="identifier">cb</span><span class="special">.</span><span class="identifier">compare</span><span class="special">(</span><span class="identifier">cb2</span><span class="special">)</span> <span class="special">&gt;</span>
  1506. <span class="number">0</span></code>.
  1507. </p>
  1508. </td>
  1509. <td>
  1510. <p>
  1511. <code class="computeroutput"><span class="keyword">noexcept</span></code>
  1512. </p>
  1513. </td>
  1514. </tr>
  1515. <tr>
  1516. <td>
  1517. <p>
  1518. <code class="computeroutput"><span class="identifier">eval_gt</span><span class="special">(</span><span class="identifier">cb</span><span class="special">,</span>
  1519. <span class="identifier">a</span><span class="special">)</span></code>
  1520. </p>
  1521. </td>
  1522. <td>
  1523. <p>
  1524. <code class="computeroutput"><span class="keyword">bool</span></code>
  1525. </p>
  1526. </td>
  1527. <td>
  1528. <p>
  1529. Returns <code class="computeroutput"><span class="keyword">true</span></code> if <code class="computeroutput"><span class="identifier">cb</span></code> is greater than <code class="computeroutput"><span class="identifier">a</span></code> in value. The type of <code class="computeroutput"><span class="identifier">a</span></code> shall be listed in one of the
  1530. type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>, <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code>
  1531. or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">float_types</span></code>. When not provided,
  1532. the default implementation returns <code class="computeroutput"><span class="identifier">eval_gt</span><span class="special">(</span><span class="identifier">cb</span><span class="special">,</span> <span class="identifier">B</span><span class="special">(</span><span class="identifier">a</span><span class="special">))</span></code>.
  1533. </p>
  1534. </td>
  1535. <td>
  1536. <p>
  1537. &#160;
  1538. </p>
  1539. </td>
  1540. </tr>
  1541. <tr>
  1542. <td>
  1543. <p>
  1544. <code class="computeroutput"><span class="identifier">eval_gt</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span>
  1545. <span class="identifier">cb</span><span class="special">)</span></code>
  1546. </p>
  1547. </td>
  1548. <td>
  1549. <p>
  1550. <code class="computeroutput"><span class="keyword">bool</span></code>
  1551. </p>
  1552. </td>
  1553. <td>
  1554. <p>
  1555. Returns <code class="computeroutput"><span class="keyword">true</span></code> if <code class="computeroutput"><span class="identifier">a</span></code> is greater than <code class="computeroutput"><span class="identifier">cb</span></code> in value. The type of <code class="computeroutput"><span class="identifier">a</span></code> shall be listed in one of the
  1556. type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>, <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code>
  1557. or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">float_types</span></code>. When not provided,
  1558. the default implementation returns <code class="computeroutput"><span class="identifier">eval_lt</span><span class="special">(</span><span class="identifier">cb</span><span class="special">,</span> <span class="identifier">a</span><span class="special">)</span></code>.
  1559. </p>
  1560. </td>
  1561. <td>
  1562. <p>
  1563. &#160;
  1564. </p>
  1565. </td>
  1566. </tr>
  1567. <tr>
  1568. <td>
  1569. <p>
  1570. <code class="computeroutput"><span class="identifier">eval_is_zero</span><span class="special">(</span><span class="identifier">cb</span><span class="special">)</span></code>
  1571. </p>
  1572. </td>
  1573. <td>
  1574. <p>
  1575. <code class="computeroutput"><span class="keyword">bool</span></code>
  1576. </p>
  1577. </td>
  1578. <td>
  1579. <p>
  1580. Returns <code class="computeroutput"><span class="keyword">true</span></code> if <code class="computeroutput"><span class="identifier">cb</span></code> is zero, otherwise <code class="computeroutput"><span class="keyword">false</span></code>. The default version of this
  1581. function returns <code class="computeroutput"><span class="identifier">cb</span><span class="special">.</span><span class="identifier">compare</span><span class="special">(</span><span class="identifier">ui_type</span><span class="special">(</span><span class="number">0</span><span class="special">))</span> <span class="special">==</span>
  1582. <span class="number">0</span></code>, where <code class="computeroutput"><span class="identifier">ui_type</span></code>
  1583. is <code class="computeroutput"><span class="identifier">ui_type</span></code> is
  1584. <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">front</span><span class="special">&lt;</span><span class="keyword">typename</span>
  1585. <span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span><span class="special">&gt;::</span><span class="identifier">type</span></code>.
  1586. </p>
  1587. </td>
  1588. <td>
  1589. <p>
  1590. &#160;
  1591. </p>
  1592. </td>
  1593. </tr>
  1594. <tr>
  1595. <td>
  1596. <p>
  1597. <code class="computeroutput"><span class="identifier">eval_get_sign</span><span class="special">(</span><span class="identifier">cb</span><span class="special">)</span></code>
  1598. </p>
  1599. </td>
  1600. <td>
  1601. <p>
  1602. <code class="computeroutput"><span class="keyword">int</span></code>
  1603. </p>
  1604. </td>
  1605. <td>
  1606. <p>
  1607. Returns a value &lt; zero if <code class="computeroutput"><span class="identifier">cb</span></code>
  1608. is negative, a value &gt; zero if <code class="computeroutput"><span class="identifier">cb</span></code>
  1609. is positive, and zero if <code class="computeroutput"><span class="identifier">cb</span></code>
  1610. is zero. The default version of this function returns <code class="computeroutput"><span class="identifier">cb</span><span class="special">.</span><span class="identifier">compare</span><span class="special">(</span><span class="identifier">ui_type</span><span class="special">(</span><span class="number">0</span><span class="special">))</span></code>,
  1611. where <code class="computeroutput"><span class="identifier">ui_type</span></code> is
  1612. <code class="computeroutput"><span class="identifier">ui_type</span></code> is <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">front</span><span class="special">&lt;</span><span class="keyword">typename</span>
  1613. <span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span><span class="special">&gt;::</span><span class="identifier">type</span></code>.
  1614. </p>
  1615. </td>
  1616. <td>
  1617. <p>
  1618. &#160;
  1619. </p>
  1620. </td>
  1621. </tr>
  1622. <tr>
  1623. <td>
  1624. <p>
  1625. <span class="emphasis"><em>Basic arithmetic:</em></span>
  1626. </p>
  1627. </td>
  1628. <td class="auto-generated">&#160;</td>
  1629. <td class="auto-generated">&#160;</td>
  1630. </tr>
  1631. <tr>
  1632. <td>
  1633. <p>
  1634. <code class="computeroutput"><span class="identifier">eval_add</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  1635. <span class="identifier">a</span><span class="special">)</span></code>
  1636. </p>
  1637. </td>
  1638. <td>
  1639. <p>
  1640. <code class="computeroutput"><span class="keyword">void</span></code>
  1641. </p>
  1642. </td>
  1643. <td>
  1644. <p>
  1645. Adds <code class="computeroutput"><span class="identifier">a</span></code> to <code class="computeroutput"><span class="identifier">b</span></code>. The type of <code class="computeroutput"><span class="identifier">a</span></code> shall be listed in one of the
  1646. type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>, <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code>
  1647. or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">float_types</span></code>. When not provided,
  1648. the default version calls <code class="computeroutput"><span class="identifier">eval_add</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">B</span><span class="special">(</span><span class="identifier">a</span><span class="special">))</span></code>
  1649. </p>
  1650. </td>
  1651. <td>
  1652. <p>
  1653. &#160;
  1654. </p>
  1655. </td>
  1656. </tr>
  1657. <tr>
  1658. <td>
  1659. <p>
  1660. <code class="computeroutput"><span class="identifier">eval_add</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  1661. <span class="identifier">cb</span><span class="special">,</span>
  1662. <span class="identifier">cb2</span><span class="special">)</span></code>
  1663. </p>
  1664. </td>
  1665. <td>
  1666. <p>
  1667. <code class="computeroutput"><span class="keyword">void</span></code>
  1668. </p>
  1669. </td>
  1670. <td>
  1671. <p>
  1672. Add <code class="computeroutput"><span class="identifier">cb</span></code> to <code class="computeroutput"><span class="identifier">cb2</span></code> and stores the result in
  1673. <code class="computeroutput"><span class="identifier">b</span></code>. When not provided,
  1674. does the equivalent of <code class="computeroutput"><span class="identifier">b</span>
  1675. <span class="special">=</span> <span class="identifier">cb</span><span class="special">;</span> <span class="identifier">eval_add</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">cb2</span><span class="special">)</span></code>.
  1676. </p>
  1677. </td>
  1678. <td>
  1679. <p>
  1680. &#160;
  1681. </p>
  1682. </td>
  1683. </tr>
  1684. <tr>
  1685. <td>
  1686. <p>
  1687. <code class="computeroutput"><span class="identifier">eval_add</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  1688. <span class="identifier">cb</span><span class="special">,</span>
  1689. <span class="identifier">a</span><span class="special">)</span></code>
  1690. </p>
  1691. </td>
  1692. <td>
  1693. <p>
  1694. <code class="computeroutput"><span class="keyword">void</span></code>
  1695. </p>
  1696. </td>
  1697. <td>
  1698. <p>
  1699. Add <code class="computeroutput"><span class="identifier">cb</span></code> to <code class="computeroutput"><span class="identifier">a</span></code> and stores the result in <code class="computeroutput"><span class="identifier">b</span></code>. The type of <code class="computeroutput"><span class="identifier">a</span></code> shall be listed in one of the
  1700. type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>, <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code>
  1701. or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">float_types</span></code>. When not provided,
  1702. does the equivalent of <code class="computeroutput"><span class="identifier">eval_add</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">,</span> <span class="identifier">B</span><span class="special">(</span><span class="identifier">a</span><span class="special">))</span></code>.
  1703. </p>
  1704. </td>
  1705. <td>
  1706. <p>
  1707. &#160;
  1708. </p>
  1709. </td>
  1710. </tr>
  1711. <tr>
  1712. <td>
  1713. <p>
  1714. <code class="computeroutput"><span class="identifier">eval_add</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  1715. <span class="identifier">a</span><span class="special">,</span>
  1716. <span class="identifier">cb</span><span class="special">)</span></code>
  1717. </p>
  1718. </td>
  1719. <td>
  1720. <p>
  1721. <code class="computeroutput"><span class="keyword">void</span></code>
  1722. </p>
  1723. </td>
  1724. <td>
  1725. <p>
  1726. Add <code class="computeroutput"><span class="identifier">a</span></code> to <code class="computeroutput"><span class="identifier">cb</span></code> and stores the result in
  1727. <code class="computeroutput"><span class="identifier">b</span></code>. The type of
  1728. <code class="computeroutput"><span class="identifier">a</span></code> shall be listed
  1729. in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
  1730. <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">float_types</span></code>. When not provided,
  1731. does the equivalent of <code class="computeroutput"><span class="identifier">eval_add</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">,</span> <span class="identifier">a</span><span class="special">)</span></code>.
  1732. </p>
  1733. </td>
  1734. <td>
  1735. <p>
  1736. &#160;
  1737. </p>
  1738. </td>
  1739. </tr>
  1740. <tr>
  1741. <td>
  1742. <p>
  1743. <code class="computeroutput"><span class="identifier">eval_subtract</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  1744. <span class="identifier">a</span><span class="special">)</span></code>
  1745. </p>
  1746. </td>
  1747. <td>
  1748. <p>
  1749. <code class="computeroutput"><span class="keyword">void</span></code>
  1750. </p>
  1751. </td>
  1752. <td>
  1753. <p>
  1754. Subtracts <code class="computeroutput"><span class="identifier">a</span></code> from
  1755. <code class="computeroutput"><span class="identifier">b</span></code>. The type of
  1756. <code class="computeroutput"><span class="identifier">a</span></code> shall be listed
  1757. in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
  1758. <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">float_types</span></code>. When not provided,
  1759. the default version calls <code class="computeroutput"><span class="identifier">eval_subtract</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">B</span><span class="special">(</span><span class="identifier">a</span><span class="special">))</span></code>
  1760. </p>
  1761. </td>
  1762. <td>
  1763. <p>
  1764. &#160;
  1765. </p>
  1766. </td>
  1767. </tr>
  1768. <tr>
  1769. <td>
  1770. <p>
  1771. <code class="computeroutput"><span class="identifier">eval_subtract</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  1772. <span class="identifier">cb</span><span class="special">,</span>
  1773. <span class="identifier">cb2</span><span class="special">)</span></code>
  1774. </p>
  1775. </td>
  1776. <td>
  1777. <p>
  1778. <code class="computeroutput"><span class="keyword">void</span></code>
  1779. </p>
  1780. </td>
  1781. <td>
  1782. <p>
  1783. Subtracts <code class="computeroutput"><span class="identifier">cb2</span></code> from
  1784. <code class="computeroutput"><span class="identifier">cb</span></code> and stores the
  1785. result in <code class="computeroutput"><span class="identifier">b</span></code>. When
  1786. not provided, does the equivalent of <code class="computeroutput"><span class="identifier">b</span>
  1787. <span class="special">=</span> <span class="identifier">cb</span><span class="special">;</span> <span class="identifier">eval_subtract</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">cb2</span><span class="special">)</span></code>.
  1788. </p>
  1789. </td>
  1790. <td>
  1791. <p>
  1792. &#160;
  1793. </p>
  1794. </td>
  1795. </tr>
  1796. <tr>
  1797. <td>
  1798. <p>
  1799. <code class="computeroutput"><span class="identifier">eval_subtract</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  1800. <span class="identifier">cb</span><span class="special">,</span>
  1801. <span class="identifier">a</span><span class="special">)</span></code>
  1802. </p>
  1803. </td>
  1804. <td>
  1805. <p>
  1806. <code class="computeroutput"><span class="keyword">void</span></code>
  1807. </p>
  1808. </td>
  1809. <td>
  1810. <p>
  1811. Subtracts <code class="computeroutput"><span class="identifier">a</span></code> from
  1812. <code class="computeroutput"><span class="identifier">cb</span></code> and stores the
  1813. result in <code class="computeroutput"><span class="identifier">b</span></code>. The
  1814. type of <code class="computeroutput"><span class="identifier">a</span></code> shall
  1815. be listed in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
  1816. <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">float_types</span></code>. When not provided,
  1817. does the equivalent of <code class="computeroutput"><span class="identifier">eval_subtract</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">,</span> <span class="identifier">B</span><span class="special">(</span><span class="identifier">a</span><span class="special">))</span></code>.
  1818. </p>
  1819. </td>
  1820. <td>
  1821. <p>
  1822. &#160;
  1823. </p>
  1824. </td>
  1825. </tr>
  1826. <tr>
  1827. <td>
  1828. <p>
  1829. <code class="computeroutput"><span class="identifier">eval_subtract</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  1830. <span class="identifier">a</span><span class="special">,</span>
  1831. <span class="identifier">cb</span><span class="special">)</span></code>
  1832. </p>
  1833. </td>
  1834. <td>
  1835. <p>
  1836. <code class="computeroutput"><span class="keyword">void</span></code>
  1837. </p>
  1838. </td>
  1839. <td>
  1840. <p>
  1841. Subtracts <code class="computeroutput"><span class="identifier">cb</span></code> from
  1842. <code class="computeroutput"><span class="identifier">a</span></code> and stores the
  1843. result in <code class="computeroutput"><span class="identifier">b</span></code>. The
  1844. type of <code class="computeroutput"><span class="identifier">a</span></code> shall
  1845. be listed in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
  1846. <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">float_types</span></code>. When not provided,
  1847. does the equivalent of <code class="computeroutput"><span class="identifier">eval_subtract</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">,</span> <span class="identifier">a</span><span class="special">);</span> <span class="identifier">b</span><span class="special">.</span><span class="identifier">negate</span><span class="special">();</span></code>.
  1848. </p>
  1849. </td>
  1850. <td>
  1851. <p>
  1852. &#160;
  1853. </p>
  1854. </td>
  1855. </tr>
  1856. <tr>
  1857. <td>
  1858. <p>
  1859. <code class="computeroutput"><span class="identifier">eval_multiply</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  1860. <span class="identifier">a</span><span class="special">)</span></code>
  1861. </p>
  1862. </td>
  1863. <td>
  1864. <p>
  1865. <code class="computeroutput"><span class="keyword">void</span></code>
  1866. </p>
  1867. </td>
  1868. <td>
  1869. <p>
  1870. Multiplies <code class="computeroutput"><span class="identifier">b</span></code> by
  1871. <code class="computeroutput"><span class="identifier">a</span></code>. The type of
  1872. <code class="computeroutput"><span class="identifier">a</span></code> shall be listed
  1873. in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
  1874. <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">float_types</span></code>. When not provided,
  1875. the default version calls <code class="computeroutput"><span class="identifier">eval_multiply</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">B</span><span class="special">(</span><span class="identifier">a</span><span class="special">))</span></code>
  1876. </p>
  1877. </td>
  1878. <td>
  1879. <p>
  1880. &#160;
  1881. </p>
  1882. </td>
  1883. </tr>
  1884. <tr>
  1885. <td>
  1886. <p>
  1887. <code class="computeroutput"><span class="identifier">eval_multiply</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  1888. <span class="identifier">cb</span><span class="special">,</span>
  1889. <span class="identifier">cb2</span><span class="special">)</span></code>
  1890. </p>
  1891. </td>
  1892. <td>
  1893. <p>
  1894. <code class="computeroutput"><span class="keyword">void</span></code>
  1895. </p>
  1896. </td>
  1897. <td>
  1898. <p>
  1899. Multiplies <code class="computeroutput"><span class="identifier">cb</span></code> by
  1900. <code class="computeroutput"><span class="identifier">cb2</span></code> and stores
  1901. the result in <code class="computeroutput"><span class="identifier">b</span></code>.
  1902. When not provided, does the equivalent of <code class="computeroutput"><span class="identifier">b</span>
  1903. <span class="special">=</span> <span class="identifier">cb</span><span class="special">;</span> <span class="identifier">eval_multiply</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">cb2</span><span class="special">)</span></code>.
  1904. </p>
  1905. </td>
  1906. <td>
  1907. <p>
  1908. &#160;
  1909. </p>
  1910. </td>
  1911. </tr>
  1912. <tr>
  1913. <td>
  1914. <p>
  1915. <code class="computeroutput"><span class="identifier">eval_multiply</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  1916. <span class="identifier">cb</span><span class="special">,</span>
  1917. <span class="identifier">a</span><span class="special">)</span></code>
  1918. </p>
  1919. </td>
  1920. <td>
  1921. <p>
  1922. <code class="computeroutput"><span class="keyword">void</span></code>
  1923. </p>
  1924. </td>
  1925. <td>
  1926. <p>
  1927. Multiplies <code class="computeroutput"><span class="identifier">cb</span></code> by
  1928. <code class="computeroutput"><span class="identifier">a</span></code> and stores the
  1929. result in <code class="computeroutput"><span class="identifier">b</span></code>. The
  1930. type of <code class="computeroutput"><span class="identifier">a</span></code> shall
  1931. be listed in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
  1932. <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">float_types</span></code>. When not provided,
  1933. does the equivalent of <code class="computeroutput"><span class="identifier">eval_multiply</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">,</span> <span class="identifier">B</span><span class="special">(</span><span class="identifier">a</span><span class="special">))</span></code>.
  1934. </p>
  1935. </td>
  1936. <td>
  1937. <p>
  1938. &#160;
  1939. </p>
  1940. </td>
  1941. </tr>
  1942. <tr>
  1943. <td>
  1944. <p>
  1945. <code class="computeroutput"><span class="identifier">eval_multiply</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  1946. <span class="identifier">a</span><span class="special">,</span>
  1947. <span class="identifier">cb</span><span class="special">)</span></code>
  1948. </p>
  1949. </td>
  1950. <td>
  1951. <p>
  1952. <code class="computeroutput"><span class="keyword">void</span></code>
  1953. </p>
  1954. </td>
  1955. <td>
  1956. <p>
  1957. Multiplies <code class="computeroutput"><span class="identifier">a</span></code> by
  1958. <code class="computeroutput"><span class="identifier">cb</span></code> and stores the
  1959. result in <code class="computeroutput"><span class="identifier">b</span></code>. The
  1960. type of <code class="computeroutput"><span class="identifier">a</span></code> shall
  1961. be listed in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
  1962. <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">float_types</span></code>. When not provided,
  1963. does the equivalent of <code class="computeroutput"><span class="identifier">eval_multiply</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">,</span> <span class="identifier">a</span><span class="special">)</span></code>.
  1964. </p>
  1965. </td>
  1966. <td>
  1967. <p>
  1968. &#160;
  1969. </p>
  1970. </td>
  1971. </tr>
  1972. <tr>
  1973. <td>
  1974. <p>
  1975. <code class="computeroutput"><span class="identifier">eval_multiply_add</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">,</span> <span class="identifier">cb2</span><span class="special">)</span></code>
  1976. </p>
  1977. </td>
  1978. <td>
  1979. <p>
  1980. <code class="computeroutput"><span class="keyword">void</span></code>
  1981. </p>
  1982. </td>
  1983. <td>
  1984. <p>
  1985. Multiplies <code class="computeroutput"><span class="identifier">cb</span></code> by
  1986. <code class="computeroutput"><span class="identifier">cb2</span></code> and adds the
  1987. result to <code class="computeroutput"><span class="identifier">b</span></code>. When
  1988. not provided does the equivalent of creating a temporary <code class="computeroutput"><span class="identifier">B</span> <span class="identifier">t</span></code>
  1989. and <code class="computeroutput"><span class="identifier">eval_multiply</span><span class="special">(</span><span class="identifier">t</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">,</span> <span class="identifier">cb2</span><span class="special">)</span></code> followed by <code class="computeroutput"><span class="identifier">eval_add</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">t</span><span class="special">)</span></code>.
  1990. </p>
  1991. </td>
  1992. <td>
  1993. <p>
  1994. &#160;
  1995. </p>
  1996. </td>
  1997. </tr>
  1998. <tr>
  1999. <td>
  2000. <p>
  2001. <code class="computeroutput"><span class="identifier">eval_multiply_add</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">,</span> <span class="identifier">a</span><span class="special">)</span></code>
  2002. </p>
  2003. </td>
  2004. <td>
  2005. <p>
  2006. <code class="computeroutput"><span class="keyword">void</span></code>
  2007. </p>
  2008. </td>
  2009. <td>
  2010. <p>
  2011. Multiplies <code class="computeroutput"><span class="identifier">a</span></code> by
  2012. <code class="computeroutput"><span class="identifier">cb</span></code> and adds the
  2013. result to <code class="computeroutput"><span class="identifier">b</span></code>. The
  2014. type of <code class="computeroutput"><span class="identifier">a</span></code> shall
  2015. be listed in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
  2016. <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">float_types</span></code>. When not provided
  2017. does the equivalent of creating a temporary <code class="computeroutput"><span class="identifier">B</span>
  2018. <span class="identifier">t</span></code> and <code class="computeroutput"><span class="identifier">eval_multiply</span><span class="special">(</span><span class="identifier">t</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">,</span> <span class="identifier">a</span><span class="special">)</span></code> followed by <code class="computeroutput"><span class="identifier">eval_add</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">t</span><span class="special">)</span></code>.
  2019. </p>
  2020. </td>
  2021. <td>
  2022. <p>
  2023. &#160;
  2024. </p>
  2025. </td>
  2026. </tr>
  2027. <tr>
  2028. <td>
  2029. <p>
  2030. <code class="computeroutput"><span class="identifier">eval_multiply_add</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">)</span></code>
  2031. </p>
  2032. </td>
  2033. <td>
  2034. <p>
  2035. <code class="computeroutput"><span class="keyword">void</span></code>
  2036. </p>
  2037. </td>
  2038. <td>
  2039. <p>
  2040. Multiplies <code class="computeroutput"><span class="identifier">a</span></code> by
  2041. <code class="computeroutput"><span class="identifier">cb</span></code> and adds the
  2042. result to <code class="computeroutput"><span class="identifier">b</span></code>. The
  2043. type of <code class="computeroutput"><span class="identifier">a</span></code> shall
  2044. be listed in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
  2045. <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">float_types</span></code>. When not provided
  2046. does the equivalent of <code class="computeroutput"><span class="identifier">eval_multiply_add</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">,</span> <span class="identifier">a</span><span class="special">)</span></code>.
  2047. </p>
  2048. </td>
  2049. <td>
  2050. <p>
  2051. &#160;
  2052. </p>
  2053. </td>
  2054. </tr>
  2055. <tr>
  2056. <td>
  2057. <p>
  2058. <code class="computeroutput"><span class="identifier">eval_multiply_subtract</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">,</span> <span class="identifier">cb2</span><span class="special">)</span></code>
  2059. </p>
  2060. </td>
  2061. <td>
  2062. <p>
  2063. <code class="computeroutput"><span class="keyword">void</span></code>
  2064. </p>
  2065. </td>
  2066. <td>
  2067. <p>
  2068. Multiplies <code class="computeroutput"><span class="identifier">cb</span></code> by
  2069. <code class="computeroutput"><span class="identifier">cb2</span></code> and subtracts
  2070. the result from <code class="computeroutput"><span class="identifier">b</span></code>.
  2071. When not provided does the equivalent of creating a temporary
  2072. <code class="computeroutput"><span class="identifier">B</span> <span class="identifier">t</span></code>
  2073. and <code class="computeroutput"><span class="identifier">eval_multiply</span><span class="special">(</span><span class="identifier">t</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">,</span> <span class="identifier">cb2</span><span class="special">)</span></code> followed by <code class="computeroutput"><span class="identifier">eval_subtract</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">t</span><span class="special">)</span></code>.
  2074. </p>
  2075. </td>
  2076. <td>
  2077. <p>
  2078. &#160;
  2079. </p>
  2080. </td>
  2081. </tr>
  2082. <tr>
  2083. <td>
  2084. <p>
  2085. <code class="computeroutput"><span class="identifier">eval_multiply_subtract</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">,</span> <span class="identifier">a</span><span class="special">)</span></code>
  2086. </p>
  2087. </td>
  2088. <td>
  2089. <p>
  2090. <code class="computeroutput"><span class="keyword">void</span></code>
  2091. </p>
  2092. </td>
  2093. <td>
  2094. <p>
  2095. Multiplies <code class="computeroutput"><span class="identifier">a</span></code> by
  2096. <code class="computeroutput"><span class="identifier">cb</span></code> and subtracts
  2097. the result from <code class="computeroutput"><span class="identifier">b</span></code>.
  2098. The type of <code class="computeroutput"><span class="identifier">a</span></code> shall
  2099. be listed in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
  2100. <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">float_types</span></code>. When not provided
  2101. does the equivalent of creating a temporary <code class="computeroutput"><span class="identifier">B</span>
  2102. <span class="identifier">t</span></code> and <code class="computeroutput"><span class="identifier">eval_multiply</span><span class="special">(</span><span class="identifier">t</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">,</span> <span class="identifier">a</span><span class="special">)</span></code> followed by <code class="computeroutput"><span class="identifier">eval_subtract</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">t</span><span class="special">)</span></code>.
  2103. </p>
  2104. </td>
  2105. <td>
  2106. <p>
  2107. &#160;
  2108. </p>
  2109. </td>
  2110. </tr>
  2111. <tr>
  2112. <td>
  2113. <p>
  2114. <code class="computeroutput"><span class="identifier">eval_multiply_subtract</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">)</span></code>
  2115. </p>
  2116. </td>
  2117. <td>
  2118. <p>
  2119. <code class="computeroutput"><span class="keyword">void</span></code>
  2120. </p>
  2121. </td>
  2122. <td>
  2123. <p>
  2124. Multiplies <code class="computeroutput"><span class="identifier">a</span></code> by
  2125. <code class="computeroutput"><span class="identifier">cb</span></code> and subtracts
  2126. the result from <code class="computeroutput"><span class="identifier">b</span></code>.
  2127. The type of <code class="computeroutput"><span class="identifier">a</span></code> shall
  2128. be listed in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
  2129. <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">float_types</span></code>. When not provided
  2130. does the equivalent of <code class="computeroutput"><span class="identifier">eval_multiply_subtract</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">,</span> <span class="identifier">a</span><span class="special">)</span></code>.
  2131. </p>
  2132. </td>
  2133. <td>
  2134. <p>
  2135. &#160;
  2136. </p>
  2137. </td>
  2138. </tr>
  2139. <tr>
  2140. <td>
  2141. <p>
  2142. <code class="computeroutput"><span class="identifier">eval_multiply_add</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">,</span> <span class="identifier">cb2</span><span class="special">,</span> <span class="identifier">cb3</span><span class="special">)</span></code>
  2143. </p>
  2144. </td>
  2145. <td>
  2146. <p>
  2147. <code class="computeroutput"><span class="keyword">void</span></code>
  2148. </p>
  2149. </td>
  2150. <td>
  2151. <p>
  2152. Multiplies <code class="computeroutput"><span class="identifier">cb</span></code> by
  2153. <code class="computeroutput"><span class="identifier">cb2</span></code> and adds the
  2154. result to <code class="computeroutput"><span class="identifier">cb3</span></code> storing
  2155. the result in <code class="computeroutput"><span class="identifier">b</span></code>.
  2156. When not provided does the equivalent of <code class="computeroutput"><span class="identifier">eval_multiply</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">,</span> <span class="identifier">cb2</span><span class="special">)</span></code> followed by <code class="computeroutput"><span class="identifier">eval_add</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">cb3</span><span class="special">)</span></code>. For brevity, only a version showing
  2157. all arguments of type <code class="computeroutput"><span class="identifier">B</span></code>
  2158. is shown here, but you can replace up to any 2 of <code class="computeroutput"><span class="identifier">cb</span></code>, <code class="computeroutput"><span class="identifier">cb2</span></code>
  2159. and <code class="computeroutput"><span class="identifier">cb3</span></code> with any
  2160. type listed in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
  2161. <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">float_types</span></code>.
  2162. </p>
  2163. </td>
  2164. <td>
  2165. <p>
  2166. &#160;
  2167. </p>
  2168. </td>
  2169. </tr>
  2170. <tr>
  2171. <td>
  2172. <p>
  2173. <code class="computeroutput"><span class="identifier">eval_multiply_subtract</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">,</span> <span class="identifier">cb2</span><span class="special">,</span> <span class="identifier">cb3</span><span class="special">)</span></code>
  2174. </p>
  2175. </td>
  2176. <td>
  2177. <p>
  2178. <code class="computeroutput"><span class="keyword">void</span></code>
  2179. </p>
  2180. </td>
  2181. <td>
  2182. <p>
  2183. Multiplies <code class="computeroutput"><span class="identifier">cb</span></code> by
  2184. <code class="computeroutput"><span class="identifier">cb2</span></code> and subtracts
  2185. from the result <code class="computeroutput"><span class="identifier">cb3</span></code>
  2186. storing the result in <code class="computeroutput"><span class="identifier">b</span></code>.
  2187. When not provided does the equivalent of <code class="computeroutput"><span class="identifier">eval_multiply</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">,</span> <span class="identifier">cb2</span><span class="special">)</span></code> followed by <code class="computeroutput"><span class="identifier">eval_subtract</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">cb3</span><span class="special">)</span></code>. For brevity, only a version showing
  2188. all arguments of type <code class="computeroutput"><span class="identifier">B</span></code>
  2189. is shown here, but you can replace up to any 2 of <code class="computeroutput"><span class="identifier">cb</span></code>, <code class="computeroutput"><span class="identifier">cb2</span></code>
  2190. and <code class="computeroutput"><span class="identifier">cb3</span></code> with any
  2191. type listed in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
  2192. <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">float_types</span></code>.
  2193. </p>
  2194. </td>
  2195. <td>
  2196. <p>
  2197. &#160;
  2198. </p>
  2199. </td>
  2200. </tr>
  2201. <tr>
  2202. <td>
  2203. <p>
  2204. <code class="computeroutput"><span class="identifier">eval_divide</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  2205. <span class="identifier">a</span><span class="special">)</span></code>
  2206. </p>
  2207. </td>
  2208. <td>
  2209. <p>
  2210. <code class="computeroutput"><span class="keyword">void</span></code>
  2211. </p>
  2212. </td>
  2213. <td>
  2214. <p>
  2215. Divides <code class="computeroutput"><span class="identifier">b</span></code> by <code class="computeroutput"><span class="identifier">a</span></code>. The type of <code class="computeroutput"><span class="identifier">a</span></code> shall be listed in one of the
  2216. type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>, <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code>
  2217. or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">float_types</span></code>. When not provided,
  2218. the default version calls <code class="computeroutput"><span class="identifier">eval_divide</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">B</span><span class="special">(</span><span class="identifier">a</span><span class="special">))</span></code>
  2219. </p>
  2220. </td>
  2221. <td>
  2222. <p>
  2223. <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">overflow_error</span></code> if <code class="computeroutput"><span class="identifier">a</span></code> has the value zero, and <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">B</span><span class="special">&gt;</span>
  2224. <span class="special">&gt;::</span><span class="identifier">has_infinity</span>
  2225. <span class="special">==</span> <span class="keyword">false</span></code>
  2226. </p>
  2227. </td>
  2228. </tr>
  2229. <tr>
  2230. <td>
  2231. <p>
  2232. <code class="computeroutput"><span class="identifier">eval_divide</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  2233. <span class="identifier">cb</span><span class="special">,</span>
  2234. <span class="identifier">cb2</span><span class="special">)</span></code>
  2235. </p>
  2236. </td>
  2237. <td>
  2238. <p>
  2239. <code class="computeroutput"><span class="keyword">void</span></code>
  2240. </p>
  2241. </td>
  2242. <td>
  2243. <p>
  2244. Divides <code class="computeroutput"><span class="identifier">cb</span></code> by
  2245. <code class="computeroutput"><span class="identifier">cb2</span></code> and stores
  2246. the result in <code class="computeroutput"><span class="identifier">b</span></code>.
  2247. When not provided, does the equivalent of <code class="computeroutput"><span class="identifier">b</span>
  2248. <span class="special">=</span> <span class="identifier">cb</span><span class="special">;</span> <span class="identifier">eval_divide</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">cb2</span><span class="special">)</span></code>.
  2249. </p>
  2250. </td>
  2251. <td>
  2252. <p>
  2253. <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">overflow_error</span></code> if <code class="computeroutput"><span class="identifier">cb2</span></code> has the value zero, and
  2254. <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">B</span><span class="special">&gt;</span>
  2255. <span class="special">&gt;::</span><span class="identifier">has_infinity</span>
  2256. <span class="special">==</span> <span class="keyword">false</span></code>
  2257. </p>
  2258. </td>
  2259. </tr>
  2260. <tr>
  2261. <td>
  2262. <p>
  2263. <code class="computeroutput"><span class="identifier">eval_divide</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  2264. <span class="identifier">cb</span><span class="special">,</span>
  2265. <span class="identifier">a</span><span class="special">)</span></code>
  2266. </p>
  2267. </td>
  2268. <td>
  2269. <p>
  2270. <code class="computeroutput"><span class="keyword">void</span></code>
  2271. </p>
  2272. </td>
  2273. <td>
  2274. <p>
  2275. Divides <code class="computeroutput"><span class="identifier">cb</span></code> by
  2276. <code class="computeroutput"><span class="identifier">a</span></code> and stores the
  2277. result in <code class="computeroutput"><span class="identifier">b</span></code>. The
  2278. type of <code class="computeroutput"><span class="identifier">a</span></code> shall
  2279. be listed in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
  2280. <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">float_types</span></code>. When not provided,
  2281. does the equivalent of <code class="computeroutput"><span class="identifier">eval_divide</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">,</span> <span class="identifier">B</span><span class="special">(</span><span class="identifier">a</span><span class="special">))</span></code>.
  2282. </p>
  2283. </td>
  2284. <td>
  2285. <p>
  2286. <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">overflow_error</span></code> if <code class="computeroutput"><span class="identifier">a</span></code> has the value zero, and <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">B</span><span class="special">&gt;</span>
  2287. <span class="special">&gt;::</span><span class="identifier">has_infinity</span>
  2288. <span class="special">==</span> <span class="keyword">false</span></code>
  2289. </p>
  2290. </td>
  2291. </tr>
  2292. <tr>
  2293. <td>
  2294. <p>
  2295. <code class="computeroutput"><span class="identifier">eval_divide</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  2296. <span class="identifier">a</span><span class="special">,</span>
  2297. <span class="identifier">cb</span><span class="special">)</span></code>
  2298. </p>
  2299. </td>
  2300. <td>
  2301. <p>
  2302. <code class="computeroutput"><span class="keyword">void</span></code>
  2303. </p>
  2304. </td>
  2305. <td>
  2306. <p>
  2307. Divides <code class="computeroutput"><span class="identifier">a</span></code> by <code class="computeroutput"><span class="identifier">cb</span></code> and stores the result in
  2308. <code class="computeroutput"><span class="identifier">b</span></code>. The type of
  2309. <code class="computeroutput"><span class="identifier">a</span></code> shall be listed
  2310. in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
  2311. <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">float_types</span></code>. When not provided,
  2312. does the equivalent of <code class="computeroutput"><span class="identifier">eval_divide</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">B</span><span class="special">(</span><span class="identifier">a</span><span class="special">),</span> <span class="identifier">cb</span><span class="special">)</span></code>.
  2313. </p>
  2314. </td>
  2315. <td>
  2316. <p>
  2317. <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">overflow_error</span></code> if cb has the
  2318. value zero, and <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">B</span><span class="special">&gt;</span> <span class="special">&gt;::</span><span class="identifier">has_infinity</span> <span class="special">==</span>
  2319. <span class="keyword">false</span></code>
  2320. </p>
  2321. </td>
  2322. </tr>
  2323. <tr>
  2324. <td>
  2325. <p>
  2326. <code class="computeroutput"><span class="identifier">eval_increment</span><span class="special">(</span><span class="identifier">b</span><span class="special">)</span></code>
  2327. </p>
  2328. </td>
  2329. <td>
  2330. <p>
  2331. void
  2332. </p>
  2333. </td>
  2334. <td>
  2335. <p>
  2336. Increments the value of <code class="computeroutput"><span class="identifier">b</span></code>
  2337. by one. When not provided, does the equivalent of <code class="computeroutput"><span class="identifier">eval_add</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  2338. <span class="keyword">static_cast</span><span class="special">&lt;</span><span class="identifier">ui_type</span><span class="special">&gt;(</span><span class="number">1u</span><span class="special">))</span></code>.
  2339. Where <code class="computeroutput"><span class="identifier">ui_type</span></code> is
  2340. <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">front</span><span class="special">&lt;</span><span class="keyword">typename</span>
  2341. <span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span><span class="special">&gt;::</span><span class="identifier">type</span></code>.
  2342. </p>
  2343. </td>
  2344. <td>
  2345. <p>
  2346. &#160;
  2347. </p>
  2348. </td>
  2349. </tr>
  2350. <tr>
  2351. <td>
  2352. <p>
  2353. <code class="computeroutput"><span class="identifier">eval_decrement</span><span class="special">(</span><span class="identifier">b</span><span class="special">)</span></code>
  2354. </p>
  2355. </td>
  2356. <td>
  2357. <p>
  2358. void
  2359. </p>
  2360. </td>
  2361. <td>
  2362. <p>
  2363. Decrements the value of <code class="computeroutput"><span class="identifier">b</span></code>
  2364. by one. When not provided, does the equivalent of <code class="computeroutput"><span class="identifier">eval_subtract</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  2365. <span class="keyword">static_cast</span><span class="special">&lt;</span><span class="identifier">ui_type</span><span class="special">&gt;(</span><span class="number">1u</span><span class="special">))</span></code>.
  2366. Where <code class="computeroutput"><span class="identifier">ui_type</span></code> is
  2367. <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">front</span><span class="special">&lt;</span><span class="keyword">typename</span>
  2368. <span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span><span class="special">&gt;::</span><span class="identifier">type</span></code>.
  2369. </p>
  2370. </td>
  2371. <td>
  2372. <p>
  2373. &#160;
  2374. </p>
  2375. </td>
  2376. </tr>
  2377. <tr>
  2378. <td>
  2379. <p>
  2380. <span class="emphasis"><em>Integer specific operations:</em></span>
  2381. </p>
  2382. </td>
  2383. <td class="auto-generated">&#160;</td>
  2384. <td class="auto-generated">&#160;</td>
  2385. </tr>
  2386. <tr>
  2387. <td>
  2388. <p>
  2389. <code class="computeroutput"><span class="identifier">eval_modulus</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  2390. <span class="identifier">a</span><span class="special">)</span></code>
  2391. </p>
  2392. </td>
  2393. <td>
  2394. <p>
  2395. <code class="computeroutput"><span class="keyword">void</span></code>
  2396. </p>
  2397. </td>
  2398. <td>
  2399. <p>
  2400. Computes <code class="computeroutput"><span class="identifier">b</span> <span class="special">%=</span>
  2401. <span class="identifier">cb</span></code>, only required when
  2402. <code class="computeroutput"><span class="identifier">B</span></code> is an integer
  2403. type. The type of <code class="computeroutput"><span class="identifier">a</span></code>
  2404. shall be listed in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
  2405. <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">float_types</span></code>. When not provided,
  2406. the default version calls <code class="computeroutput"><span class="identifier">eval_modulus</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">B</span><span class="special">(</span><span class="identifier">a</span><span class="special">))</span></code>
  2407. </p>
  2408. </td>
  2409. <td>
  2410. <p>
  2411. <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">overflow_error</span></code> if <code class="computeroutput"><span class="identifier">a</span></code> has the value zero.
  2412. </p>
  2413. </td>
  2414. </tr>
  2415. <tr>
  2416. <td>
  2417. <p>
  2418. <code class="computeroutput"><span class="identifier">eval_modulus</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  2419. <span class="identifier">cb</span><span class="special">,</span>
  2420. <span class="identifier">cb2</span><span class="special">)</span></code>
  2421. </p>
  2422. </td>
  2423. <td>
  2424. <p>
  2425. <code class="computeroutput"><span class="keyword">void</span></code>
  2426. </p>
  2427. </td>
  2428. <td>
  2429. <p>
  2430. Computes <code class="computeroutput"><span class="identifier">cb</span> <span class="special">%</span>
  2431. <span class="identifier">cb2</span></code> and stores the result
  2432. in <code class="computeroutput"><span class="identifier">b</span></code>, only required
  2433. when <code class="computeroutput"><span class="identifier">B</span></code> is an integer
  2434. type. When not provided, does the equivalent of <code class="computeroutput"><span class="identifier">b</span>
  2435. <span class="special">=</span> <span class="identifier">cb</span><span class="special">;</span> <span class="identifier">eval_modulus</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">cb2</span><span class="special">)</span></code>.
  2436. </p>
  2437. </td>
  2438. <td>
  2439. <p>
  2440. <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">overflow_error</span></code> if <code class="computeroutput"><span class="identifier">a</span></code> has the value zero.
  2441. </p>
  2442. </td>
  2443. </tr>
  2444. <tr>
  2445. <td>
  2446. <p>
  2447. <code class="computeroutput"><span class="identifier">eval_modulus</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  2448. <span class="identifier">cb</span><span class="special">,</span>
  2449. <span class="identifier">a</span><span class="special">)</span></code>
  2450. </p>
  2451. </td>
  2452. <td>
  2453. <p>
  2454. <code class="computeroutput"><span class="keyword">void</span></code>
  2455. </p>
  2456. </td>
  2457. <td>
  2458. <p>
  2459. Computes <code class="computeroutput"><span class="identifier">cb</span> <span class="special">%</span>
  2460. <span class="identifier">a</span></code> and stores the result
  2461. in <code class="computeroutput"><span class="identifier">b</span></code>, only required
  2462. when <code class="computeroutput"><span class="identifier">B</span></code> is an integer
  2463. type. The type of <code class="computeroutput"><span class="identifier">a</span></code>
  2464. shall be listed in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
  2465. <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">float_types</span></code>. When not provided,
  2466. does the equivalent of <code class="computeroutput"><span class="identifier">eval_modulus</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">,</span> <span class="identifier">B</span><span class="special">(</span><span class="identifier">a</span><span class="special">))</span></code>.
  2467. </p>
  2468. </td>
  2469. <td>
  2470. <p>
  2471. <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">overflow_error</span></code> if <code class="computeroutput"><span class="identifier">a</span></code> has the value zero.
  2472. </p>
  2473. </td>
  2474. </tr>
  2475. <tr>
  2476. <td>
  2477. <p>
  2478. <code class="computeroutput"><span class="identifier">eval_modulus</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  2479. <span class="identifier">a</span><span class="special">,</span>
  2480. <span class="identifier">cb</span><span class="special">)</span></code>
  2481. </p>
  2482. </td>
  2483. <td>
  2484. <p>
  2485. <code class="computeroutput"><span class="keyword">void</span></code>
  2486. </p>
  2487. </td>
  2488. <td>
  2489. <p>
  2490. Computes <code class="computeroutput"><span class="identifier">cb</span> <span class="special">%</span>
  2491. <span class="identifier">a</span></code> and stores the result
  2492. in <code class="computeroutput"><span class="identifier">b</span></code>, only required
  2493. when <code class="computeroutput"><span class="identifier">B</span></code> is an integer
  2494. type. The type of <code class="computeroutput"><span class="identifier">a</span></code>
  2495. shall be listed in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
  2496. <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">float_types</span></code>. When not provided,
  2497. does the equivalent of <code class="computeroutput"><span class="identifier">eval_modulus</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">B</span><span class="special">(</span><span class="identifier">a</span><span class="special">),</span> <span class="identifier">cb</span><span class="special">)</span></code>.
  2498. </p>
  2499. </td>
  2500. <td>
  2501. <p>
  2502. <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">overflow_error</span></code> if <code class="computeroutput"><span class="identifier">a</span></code> has the value zero.
  2503. </p>
  2504. </td>
  2505. </tr>
  2506. <tr>
  2507. <td>
  2508. <p>
  2509. <code class="computeroutput"><span class="identifier">eval_bitwise_and</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">a</span><span class="special">)</span></code>
  2510. </p>
  2511. </td>
  2512. <td>
  2513. <p>
  2514. <code class="computeroutput"><span class="keyword">void</span></code>
  2515. </p>
  2516. </td>
  2517. <td>
  2518. <p>
  2519. Computes <code class="computeroutput"><span class="identifier">b</span> <span class="special">&amp;=</span>
  2520. <span class="identifier">cb</span></code>, only required when
  2521. <code class="computeroutput"><span class="identifier">B</span></code> is an integer
  2522. type. The type of <code class="computeroutput"><span class="identifier">a</span></code>
  2523. shall be listed in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
  2524. <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">float_types</span></code>. When not provided,
  2525. the default version calls <code class="computeroutput"><span class="identifier">eval_bitwise_and</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">B</span><span class="special">(</span><span class="identifier">a</span><span class="special">))</span></code>
  2526. </p>
  2527. </td>
  2528. <td>
  2529. <p>
  2530. &#160;
  2531. </p>
  2532. </td>
  2533. </tr>
  2534. <tr>
  2535. <td>
  2536. <p>
  2537. <code class="computeroutput"><span class="identifier">eval_bitwise_and</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">,</span> <span class="identifier">cb2</span><span class="special">)</span></code>
  2538. </p>
  2539. </td>
  2540. <td>
  2541. <p>
  2542. <code class="computeroutput"><span class="keyword">void</span></code>
  2543. </p>
  2544. </td>
  2545. <td>
  2546. <p>
  2547. Computes <code class="computeroutput"><span class="identifier">cb</span> <span class="special">&amp;</span>
  2548. <span class="identifier">cb2</span></code> and stores the result
  2549. in <code class="computeroutput"><span class="identifier">b</span></code>, only required
  2550. when <code class="computeroutput"><span class="identifier">B</span></code> is an integer
  2551. type. When not provided, does the equivalent of <code class="computeroutput"><span class="identifier">b</span>
  2552. <span class="special">=</span> <span class="identifier">cb</span><span class="special">;</span> <span class="identifier">eval_bitwise_and</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">cb2</span><span class="special">)</span></code>.
  2553. </p>
  2554. </td>
  2555. <td>
  2556. <p>
  2557. &#160;
  2558. </p>
  2559. </td>
  2560. </tr>
  2561. <tr>
  2562. <td>
  2563. <p>
  2564. <code class="computeroutput"><span class="identifier">eval_bitwise_and</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">,</span> <span class="identifier">a</span><span class="special">)</span></code>
  2565. </p>
  2566. </td>
  2567. <td>
  2568. <p>
  2569. <code class="computeroutput"><span class="keyword">void</span></code>
  2570. </p>
  2571. </td>
  2572. <td>
  2573. <p>
  2574. Computes <code class="computeroutput"><span class="identifier">cb</span> <span class="special">&amp;</span>
  2575. <span class="identifier">a</span></code> and stores the result
  2576. in <code class="computeroutput"><span class="identifier">b</span></code>, only required
  2577. when <code class="computeroutput"><span class="identifier">B</span></code> is an integer
  2578. type. The type of <code class="computeroutput"><span class="identifier">a</span></code>
  2579. shall be listed in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
  2580. <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">float_types</span></code>. When not provided,
  2581. does the equivalent of <code class="computeroutput"><span class="identifier">eval_bitwise_and</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">,</span> <span class="identifier">B</span><span class="special">(</span><span class="identifier">a</span><span class="special">))</span></code>.
  2582. </p>
  2583. </td>
  2584. <td>
  2585. <p>
  2586. &#160;
  2587. </p>
  2588. </td>
  2589. </tr>
  2590. <tr>
  2591. <td>
  2592. <p>
  2593. <code class="computeroutput"><span class="identifier">eval_bitwise_and</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">)</span></code>
  2594. </p>
  2595. </td>
  2596. <td>
  2597. <p>
  2598. <code class="computeroutput"><span class="keyword">void</span></code>
  2599. </p>
  2600. </td>
  2601. <td>
  2602. <p>
  2603. Computes <code class="computeroutput"><span class="identifier">cb</span> <span class="special">&amp;</span>
  2604. <span class="identifier">a</span></code> and stores the result
  2605. in <code class="computeroutput"><span class="identifier">b</span></code>, only required
  2606. when <code class="computeroutput"><span class="identifier">B</span></code> is an integer
  2607. type. The type of <code class="computeroutput"><span class="identifier">a</span></code>
  2608. shall be listed in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
  2609. <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">float_types</span></code>. When not provided,
  2610. does the equivalent of <code class="computeroutput"><span class="identifier">eval_bitwise_and</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">,</span> <span class="identifier">a</span><span class="special">)</span></code>.
  2611. </p>
  2612. </td>
  2613. <td>
  2614. <p>
  2615. &#160;
  2616. </p>
  2617. </td>
  2618. </tr>
  2619. <tr>
  2620. <td>
  2621. <p>
  2622. <code class="computeroutput"><span class="identifier">eval_bitwise_or</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">a</span><span class="special">)</span></code>
  2623. </p>
  2624. </td>
  2625. <td>
  2626. <p>
  2627. <code class="computeroutput"><span class="keyword">void</span></code>
  2628. </p>
  2629. </td>
  2630. <td>
  2631. <p>
  2632. Computes <code class="computeroutput"><span class="identifier">b</span> <span class="special">|=</span>
  2633. <span class="identifier">cb</span></code>, only required when
  2634. <code class="computeroutput"><span class="identifier">B</span></code> is an integer
  2635. type. The type of <code class="computeroutput"><span class="identifier">a</span></code>
  2636. shall be listed in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
  2637. <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">float_types</span></code>. When not provided,
  2638. the default version calls <code class="computeroutput"><span class="identifier">eval_bitwise_or</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">B</span><span class="special">(</span><span class="identifier">a</span><span class="special">))</span></code>
  2639. </p>
  2640. </td>
  2641. <td>
  2642. <p>
  2643. &#160;
  2644. </p>
  2645. </td>
  2646. </tr>
  2647. <tr>
  2648. <td>
  2649. <p>
  2650. <code class="computeroutput"><span class="identifier">eval_bitwise_or</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">,</span> <span class="identifier">cb2</span><span class="special">)</span></code>
  2651. </p>
  2652. </td>
  2653. <td>
  2654. <p>
  2655. <code class="computeroutput"><span class="keyword">void</span></code>
  2656. </p>
  2657. </td>
  2658. <td>
  2659. <p>
  2660. Computes <code class="computeroutput"><span class="identifier">cb</span> <span class="special">|</span>
  2661. <span class="identifier">cb2</span></code> and stores the result
  2662. in <code class="computeroutput"><span class="identifier">b</span></code>, only required
  2663. when <code class="computeroutput"><span class="identifier">B</span></code> is an integer
  2664. type. When not provided, does the equivalent of <code class="computeroutput"><span class="identifier">b</span>
  2665. <span class="special">=</span> <span class="identifier">cb</span><span class="special">;</span> <span class="identifier">eval_bitwise_or</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">cb2</span><span class="special">)</span></code>.
  2666. </p>
  2667. </td>
  2668. <td>
  2669. <p>
  2670. &#160;
  2671. </p>
  2672. </td>
  2673. </tr>
  2674. <tr>
  2675. <td>
  2676. <p>
  2677. <code class="computeroutput"><span class="identifier">eval_bitwise_or</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">,</span> <span class="identifier">a</span><span class="special">)</span></code>
  2678. </p>
  2679. </td>
  2680. <td>
  2681. <p>
  2682. <code class="computeroutput"><span class="keyword">void</span></code>
  2683. </p>
  2684. </td>
  2685. <td>
  2686. <p>
  2687. Computes <code class="computeroutput"><span class="identifier">cb</span> <span class="special">|</span>
  2688. <span class="identifier">a</span></code> and stores the result
  2689. in <code class="computeroutput"><span class="identifier">b</span></code>, only required
  2690. when <code class="computeroutput"><span class="identifier">B</span></code> is an integer
  2691. type. The type of <code class="computeroutput"><span class="identifier">a</span></code>
  2692. shall be listed in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
  2693. <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">float_types</span></code>. When not provided,
  2694. does the equivalent of <code class="computeroutput"><span class="identifier">eval_bitwise_or</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">,</span> <span class="identifier">B</span><span class="special">(</span><span class="identifier">a</span><span class="special">))</span></code>.
  2695. </p>
  2696. </td>
  2697. <td>
  2698. <p>
  2699. &#160;
  2700. </p>
  2701. </td>
  2702. </tr>
  2703. <tr>
  2704. <td>
  2705. <p>
  2706. <code class="computeroutput"><span class="identifier">eval_bitwise_or</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">)</span></code>
  2707. </p>
  2708. </td>
  2709. <td>
  2710. <p>
  2711. <code class="computeroutput"><span class="keyword">void</span></code>
  2712. </p>
  2713. </td>
  2714. <td>
  2715. <p>
  2716. Computes <code class="computeroutput"><span class="identifier">cb</span> <span class="special">|</span>
  2717. <span class="identifier">a</span></code> and stores the result
  2718. in <code class="computeroutput"><span class="identifier">b</span></code>, only required
  2719. when <code class="computeroutput"><span class="identifier">B</span></code> is an integer
  2720. type. The type of <code class="computeroutput"><span class="identifier">a</span></code>
  2721. shall be listed in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
  2722. <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">float_types</span></code>. When not provided,
  2723. does the equivalent of <code class="computeroutput"><span class="identifier">eval_bitwise_or</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">,</span> <span class="identifier">a</span><span class="special">)</span></code>.
  2724. </p>
  2725. </td>
  2726. <td>
  2727. <p>
  2728. &#160;
  2729. </p>
  2730. </td>
  2731. </tr>
  2732. <tr>
  2733. <td>
  2734. <p>
  2735. <code class="computeroutput"><span class="identifier">eval_bitwise_xor</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">a</span><span class="special">)</span></code>
  2736. </p>
  2737. </td>
  2738. <td>
  2739. <p>
  2740. <code class="computeroutput"><span class="keyword">void</span></code>
  2741. </p>
  2742. </td>
  2743. <td>
  2744. <p>
  2745. Computes <code class="computeroutput"><span class="identifier">b</span> <span class="special">^=</span>
  2746. <span class="identifier">cb</span></code>, only required when
  2747. <code class="computeroutput"><span class="identifier">B</span></code> is an integer
  2748. type. The type of <code class="computeroutput"><span class="identifier">a</span></code>
  2749. shall be listed in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
  2750. <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">float_types</span></code>. When not provided,
  2751. the default version calls <code class="computeroutput"><span class="identifier">eval_bitwise_xor</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">B</span><span class="special">(</span><span class="identifier">a</span><span class="special">))</span></code>
  2752. </p>
  2753. </td>
  2754. <td>
  2755. <p>
  2756. &#160;
  2757. </p>
  2758. </td>
  2759. </tr>
  2760. <tr>
  2761. <td>
  2762. <p>
  2763. <code class="computeroutput"><span class="identifier">eval_bitwise_xor</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">,</span> <span class="identifier">cb2</span><span class="special">)</span></code>
  2764. </p>
  2765. </td>
  2766. <td>
  2767. <p>
  2768. <code class="computeroutput"><span class="keyword">void</span></code>
  2769. </p>
  2770. </td>
  2771. <td>
  2772. <p>
  2773. Computes <code class="computeroutput"><span class="identifier">cb</span> <span class="special">^</span>
  2774. <span class="identifier">cb2</span></code> and stores the result
  2775. in <code class="computeroutput"><span class="identifier">b</span></code>, only required
  2776. when <code class="computeroutput"><span class="identifier">B</span></code> is an integer
  2777. type. When not provided, does the equivalent of <code class="computeroutput"><span class="identifier">b</span>
  2778. <span class="special">=</span> <span class="identifier">cb</span><span class="special">;</span> <span class="identifier">eval_bitwise_xor</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">cb2</span><span class="special">)</span></code>.
  2779. </p>
  2780. </td>
  2781. <td>
  2782. <p>
  2783. &#160;
  2784. </p>
  2785. </td>
  2786. </tr>
  2787. <tr>
  2788. <td>
  2789. <p>
  2790. <code class="computeroutput"><span class="identifier">eval_bitwise_xor</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">,</span> <span class="identifier">a</span><span class="special">)</span></code>
  2791. </p>
  2792. </td>
  2793. <td>
  2794. <p>
  2795. <code class="computeroutput"><span class="keyword">void</span></code>
  2796. </p>
  2797. </td>
  2798. <td>
  2799. <p>
  2800. Computes <code class="computeroutput"><span class="identifier">cb</span> <span class="special">^</span>
  2801. <span class="identifier">a</span></code> and stores the result
  2802. in <code class="computeroutput"><span class="identifier">b</span></code>, only required
  2803. when <code class="computeroutput"><span class="identifier">B</span></code> is an integer
  2804. type. The type of <code class="computeroutput"><span class="identifier">a</span></code>
  2805. shall be listed in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
  2806. <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">float_types</span></code>. When not provided,
  2807. does the equivalent of <code class="computeroutput"><span class="identifier">eval_bitwise_xor</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">,</span> <span class="identifier">B</span><span class="special">(</span><span class="identifier">a</span><span class="special">))</span></code>.
  2808. </p>
  2809. </td>
  2810. <td>
  2811. <p>
  2812. &#160;
  2813. </p>
  2814. </td>
  2815. </tr>
  2816. <tr>
  2817. <td>
  2818. <p>
  2819. <code class="computeroutput"><span class="identifier">eval_bitwise_xor</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">)</span></code>
  2820. </p>
  2821. </td>
  2822. <td>
  2823. <p>
  2824. <code class="computeroutput"><span class="keyword">void</span></code>
  2825. </p>
  2826. </td>
  2827. <td>
  2828. <p>
  2829. Computes <code class="computeroutput"><span class="identifier">a</span> <span class="special">^</span>
  2830. <span class="identifier">cb</span></code> and stores the result
  2831. in <code class="computeroutput"><span class="identifier">b</span></code>, only required
  2832. when <code class="computeroutput"><span class="identifier">B</span></code> is an integer
  2833. type. The type of <code class="computeroutput"><span class="identifier">a</span></code>
  2834. shall be listed in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
  2835. <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">float_types</span></code>. When not provided,
  2836. does the equivalent of <code class="computeroutput"><span class="identifier">eval_bitwise_xor</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">,</span> <span class="identifier">a</span><span class="special">)</span></code>.
  2837. </p>
  2838. </td>
  2839. <td>
  2840. <p>
  2841. &#160;
  2842. </p>
  2843. </td>
  2844. </tr>
  2845. <tr>
  2846. <td>
  2847. <p>
  2848. <code class="computeroutput"><span class="identifier">eval_left_shift</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">,</span> <span class="identifier">ui</span><span class="special">)</span></code>
  2849. </p>
  2850. </td>
  2851. <td>
  2852. <p>
  2853. <code class="computeroutput"><span class="keyword">void</span></code>
  2854. </p>
  2855. </td>
  2856. <td>
  2857. <p>
  2858. Computes <code class="computeroutput"><span class="identifier">cb</span> <span class="special">&lt;&lt;</span>
  2859. <span class="identifier">ui</span></code> and stores the result
  2860. in <code class="computeroutput"><span class="identifier">b</span></code>, only required
  2861. when <code class="computeroutput"><span class="identifier">B</span></code> is an integer
  2862. type. When not provided, does the equivalent of <code class="computeroutput"><span class="identifier">b</span>
  2863. <span class="special">=</span> <span class="identifier">cb</span><span class="special">;</span> <span class="identifier">eval_left_shift</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">a</span><span class="special">);</span></code>.
  2864. </p>
  2865. </td>
  2866. <td>
  2867. <p>
  2868. &#160;
  2869. </p>
  2870. </td>
  2871. </tr>
  2872. <tr>
  2873. <td>
  2874. <p>
  2875. <code class="computeroutput"><span class="identifier">eval_right_shift</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">,</span> <span class="identifier">ui</span><span class="special">)</span></code>
  2876. </p>
  2877. </td>
  2878. <td>
  2879. <p>
  2880. <code class="computeroutput"><span class="keyword">void</span></code>
  2881. </p>
  2882. </td>
  2883. <td>
  2884. <p>
  2885. Computes <code class="computeroutput"><span class="identifier">cb</span> <span class="special">&gt;&gt;</span>
  2886. <span class="identifier">ui</span></code> and stores the result
  2887. in <code class="computeroutput"><span class="identifier">b</span></code>, only required
  2888. when <code class="computeroutput"><span class="identifier">B</span></code> is an integer
  2889. type. When not provided, does the equivalent of <code class="computeroutput"><span class="identifier">b</span>
  2890. <span class="special">=</span> <span class="identifier">cb</span><span class="special">;</span> <span class="identifier">eval_right_shift</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">a</span><span class="special">);</span></code>.
  2891. </p>
  2892. </td>
  2893. <td>
  2894. <p>
  2895. &#160;
  2896. </p>
  2897. </td>
  2898. </tr>
  2899. <tr>
  2900. <td>
  2901. <p>
  2902. <code class="computeroutput"><span class="identifier">eval_qr</span><span class="special">(</span><span class="identifier">cb</span><span class="special">,</span>
  2903. <span class="identifier">cb2</span><span class="special">,</span>
  2904. <span class="identifier">b</span><span class="special">,</span>
  2905. <span class="identifier">b2</span><span class="special">)</span></code>
  2906. </p>
  2907. </td>
  2908. <td>
  2909. <p>
  2910. <code class="computeroutput"><span class="keyword">void</span></code>
  2911. </p>
  2912. </td>
  2913. <td>
  2914. <p>
  2915. Sets <code class="computeroutput"><span class="identifier">b</span></code> to the result
  2916. of <code class="computeroutput"><span class="identifier">cb</span> <span class="special">/</span>
  2917. <span class="identifier">cb2</span></code> and <code class="computeroutput"><span class="identifier">b2</span></code> to the result of <code class="computeroutput"><span class="identifier">cb</span> <span class="special">%</span>
  2918. <span class="identifier">cb2</span></code>. Only required when
  2919. <code class="computeroutput"><span class="identifier">B</span></code> is an integer
  2920. type. The default version of this function is synthesised from
  2921. other operations above.
  2922. </p>
  2923. </td>
  2924. <td>
  2925. <p>
  2926. <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">overflow_error</span></code> if <code class="computeroutput"><span class="identifier">a</span></code> has the value zero.
  2927. </p>
  2928. </td>
  2929. </tr>
  2930. <tr>
  2931. <td>
  2932. <p>
  2933. <code class="computeroutput"><span class="identifier">eval_integer_modulus</span><span class="special">(</span><span class="identifier">cb</span><span class="special">,</span> <span class="identifier">ui</span><span class="special">)</span></code>
  2934. </p>
  2935. </td>
  2936. <td>
  2937. <p>
  2938. <code class="computeroutput"><span class="keyword">unsigned</span></code>
  2939. </p>
  2940. </td>
  2941. <td>
  2942. <p>
  2943. Returns the result of <code class="computeroutput"><span class="identifier">cb</span>
  2944. <span class="special">%</span> <span class="identifier">ui</span></code>.
  2945. Only required when <code class="computeroutput"><span class="identifier">B</span></code>
  2946. is an integer type. The default version of this function is synthesised
  2947. from other operations above.
  2948. </p>
  2949. </td>
  2950. <td>
  2951. <p>
  2952. <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">overflow_error</span></code> if <code class="computeroutput"><span class="identifier">a</span></code> has the value zero.
  2953. </p>
  2954. </td>
  2955. </tr>
  2956. <tr>
  2957. <td>
  2958. <p>
  2959. <code class="computeroutput"><span class="identifier">eval_lsb</span><span class="special">(</span><span class="identifier">cb</span><span class="special">)</span></code>
  2960. </p>
  2961. </td>
  2962. <td>
  2963. <p>
  2964. <code class="computeroutput"><span class="keyword">unsigned</span></code>
  2965. </p>
  2966. </td>
  2967. <td>
  2968. <p>
  2969. Returns the index of the least significant bit that is set. Only
  2970. required when <code class="computeroutput"><span class="identifier">B</span></code>
  2971. is an integer type. The default version of this function is synthesised
  2972. from other operations above.
  2973. </p>
  2974. </td>
  2975. <td>
  2976. <p>
  2977. &#160;
  2978. </p>
  2979. </td>
  2980. </tr>
  2981. <tr>
  2982. <td>
  2983. <p>
  2984. <code class="computeroutput"><span class="identifier">eval_msb</span><span class="special">(</span><span class="identifier">cb</span><span class="special">)</span></code>
  2985. </p>
  2986. </td>
  2987. <td>
  2988. <p>
  2989. <code class="computeroutput"><span class="keyword">unsigned</span></code>
  2990. </p>
  2991. </td>
  2992. <td>
  2993. <p>
  2994. Returns the index of the most significant bit that is set. Only
  2995. required when <code class="computeroutput"><span class="identifier">B</span></code>
  2996. is an integer type. The default version of this function is synthesised
  2997. from other operations above.
  2998. </p>
  2999. </td>
  3000. <td>
  3001. <p>
  3002. &#160;
  3003. </p>
  3004. </td>
  3005. </tr>
  3006. <tr>
  3007. <td>
  3008. <p>
  3009. <code class="computeroutput"><span class="identifier">eval_bit_test</span><span class="special">(</span><span class="identifier">cb</span><span class="special">,</span>
  3010. <span class="identifier">ui</span><span class="special">)</span></code>
  3011. </p>
  3012. </td>
  3013. <td>
  3014. <p>
  3015. <code class="computeroutput"><span class="keyword">bool</span></code>
  3016. </p>
  3017. </td>
  3018. <td>
  3019. <p>
  3020. Returns true if <code class="computeroutput"><span class="identifier">cb</span></code>
  3021. has bit <code class="computeroutput"><span class="identifier">ui</span></code> set.
  3022. Only required when <code class="computeroutput"><span class="identifier">B</span></code>
  3023. is an integer type. The default version of this function is synthesised
  3024. from other operations above.
  3025. </p>
  3026. </td>
  3027. <td>
  3028. <p>
  3029. &#160;
  3030. </p>
  3031. </td>
  3032. </tr>
  3033. <tr>
  3034. <td>
  3035. <p>
  3036. <code class="computeroutput"><span class="identifier">eval_bit_set</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  3037. <span class="identifier">ui</span><span class="special">)</span></code>
  3038. </p>
  3039. </td>
  3040. <td>
  3041. <p>
  3042. <code class="computeroutput"><span class="keyword">void</span></code>
  3043. </p>
  3044. </td>
  3045. <td>
  3046. <p>
  3047. Sets the bit at index <code class="computeroutput"><span class="identifier">ui</span></code>
  3048. in <code class="computeroutput"><span class="identifier">b</span></code>. Only required
  3049. when <code class="computeroutput"><span class="identifier">B</span></code> is an integer
  3050. type. The default version of this function is synthesised from
  3051. other operations above.
  3052. </p>
  3053. </td>
  3054. <td>
  3055. <p>
  3056. &#160;
  3057. </p>
  3058. </td>
  3059. </tr>
  3060. <tr>
  3061. <td>
  3062. <p>
  3063. <code class="computeroutput"><span class="identifier">eval_bit_unset</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">ui</span><span class="special">)</span></code>
  3064. </p>
  3065. </td>
  3066. <td>
  3067. <p>
  3068. <code class="computeroutput"><span class="keyword">void</span></code>
  3069. </p>
  3070. </td>
  3071. <td>
  3072. <p>
  3073. Unsets the bit at index <code class="computeroutput"><span class="identifier">ui</span></code>
  3074. in <code class="computeroutput"><span class="identifier">b</span></code>. Only required
  3075. when <code class="computeroutput"><span class="identifier">B</span></code> is an integer
  3076. type. The default version of this function is synthesised from
  3077. other operations above.
  3078. </p>
  3079. </td>
  3080. <td>
  3081. <p>
  3082. &#160;
  3083. </p>
  3084. </td>
  3085. </tr>
  3086. <tr>
  3087. <td>
  3088. <p>
  3089. <code class="computeroutput"><span class="identifier">eval_bit_flip</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  3090. <span class="identifier">ui</span><span class="special">)</span></code>
  3091. </p>
  3092. </td>
  3093. <td>
  3094. <p>
  3095. <code class="computeroutput"><span class="keyword">void</span></code>
  3096. </p>
  3097. </td>
  3098. <td>
  3099. <p>
  3100. Flips the bit at index <code class="computeroutput"><span class="identifier">ui</span></code>
  3101. in <code class="computeroutput"><span class="identifier">b</span></code>. Only required
  3102. when <code class="computeroutput"><span class="identifier">B</span></code> is an integer
  3103. type. The default version of this function is synthesised from
  3104. other operations above.
  3105. </p>
  3106. </td>
  3107. <td>
  3108. <p>
  3109. &#160;
  3110. </p>
  3111. </td>
  3112. </tr>
  3113. <tr>
  3114. <td>
  3115. <p>
  3116. <code class="computeroutput"><span class="identifier">eval_gcd</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  3117. <span class="identifier">cb</span><span class="special">,</span>
  3118. <span class="identifier">cb2</span><span class="special">)</span></code>
  3119. </p>
  3120. </td>
  3121. <td>
  3122. <p>
  3123. <code class="computeroutput"><span class="keyword">void</span></code>
  3124. </p>
  3125. </td>
  3126. <td>
  3127. <p>
  3128. Sets <code class="computeroutput"><span class="identifier">b</span></code> to the greatest
  3129. common divisor of <code class="computeroutput"><span class="identifier">cb</span></code>
  3130. and <code class="computeroutput"><span class="identifier">cb2</span></code>. Only required
  3131. when <code class="computeroutput"><span class="identifier">B</span></code> is an integer
  3132. type. The default version of this function is synthesised from
  3133. other operations above.
  3134. </p>
  3135. </td>
  3136. <td>
  3137. <p>
  3138. &#160;
  3139. </p>
  3140. </td>
  3141. </tr>
  3142. <tr>
  3143. <td>
  3144. <p>
  3145. <code class="computeroutput"><span class="identifier">eval_lcm</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  3146. <span class="identifier">cb</span><span class="special">,</span>
  3147. <span class="identifier">cb2</span><span class="special">)</span></code>
  3148. </p>
  3149. </td>
  3150. <td>
  3151. <p>
  3152. <code class="computeroutput"><span class="keyword">void</span></code>
  3153. </p>
  3154. </td>
  3155. <td>
  3156. <p>
  3157. Sets <code class="computeroutput"><span class="identifier">b</span></code> to the least
  3158. common multiple of <code class="computeroutput"><span class="identifier">cb</span></code>
  3159. and <code class="computeroutput"><span class="identifier">cb2</span></code>. Only required
  3160. when <code class="computeroutput"><span class="identifier">B</span></code> is an integer
  3161. type. The default version of this function is synthesised from
  3162. other operations above.
  3163. </p>
  3164. </td>
  3165. <td>
  3166. <p>
  3167. &#160;
  3168. </p>
  3169. </td>
  3170. </tr>
  3171. <tr>
  3172. <td>
  3173. <p>
  3174. <code class="computeroutput"><span class="identifier">eval_gcd</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  3175. <span class="identifier">cb</span><span class="special">,</span>
  3176. <span class="identifier">a</span><span class="special">)</span></code>
  3177. </p>
  3178. </td>
  3179. <td>
  3180. <p>
  3181. <code class="computeroutput"><span class="keyword">void</span></code>
  3182. </p>
  3183. </td>
  3184. <td>
  3185. <p>
  3186. Sets <code class="computeroutput"><span class="identifier">b</span></code> to the greatest
  3187. common divisor of <code class="computeroutput"><span class="identifier">cb</span></code>
  3188. and <code class="computeroutput"><span class="identifier">cb2</span></code>. Only required
  3189. when <code class="computeroutput"><span class="identifier">B</span></code> is an integer
  3190. type. The type of <code class="computeroutput"><span class="identifier">a</span></code>
  3191. shall be listed in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
  3192. <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">float_types</span></code>. The default version
  3193. of this function calls <code class="computeroutput"><span class="identifier">eval_gcd</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">,</span> <span class="identifier">B</span><span class="special">(</span><span class="identifier">a</span><span class="special">))</span></code>.
  3194. </p>
  3195. </td>
  3196. <td>
  3197. <p>
  3198. &#160;
  3199. </p>
  3200. </td>
  3201. </tr>
  3202. <tr>
  3203. <td>
  3204. <p>
  3205. <code class="computeroutput"><span class="identifier">eval_lcm</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  3206. <span class="identifier">cb</span><span class="special">,</span>
  3207. <span class="identifier">a</span><span class="special">)</span></code>
  3208. </p>
  3209. </td>
  3210. <td>
  3211. <p>
  3212. <code class="computeroutput"><span class="keyword">void</span></code>
  3213. </p>
  3214. </td>
  3215. <td>
  3216. <p>
  3217. Sets <code class="computeroutput"><span class="identifier">b</span></code> to the least
  3218. common multiple of <code class="computeroutput"><span class="identifier">cb</span></code>
  3219. and <code class="computeroutput"><span class="identifier">cb2</span></code>. Only required
  3220. when <code class="computeroutput"><span class="identifier">B</span></code> is an integer
  3221. type. The type of <code class="computeroutput"><span class="identifier">a</span></code>
  3222. shall be listed in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
  3223. <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">float_types</span></code>. The default version
  3224. of this function calls <code class="computeroutput"><span class="identifier">eval_lcm</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">,</span> <span class="identifier">B</span><span class="special">(</span><span class="identifier">a</span><span class="special">))</span></code>.
  3225. </p>
  3226. </td>
  3227. <td>
  3228. <p>
  3229. &#160;
  3230. </p>
  3231. </td>
  3232. </tr>
  3233. <tr>
  3234. <td>
  3235. <p>
  3236. <code class="computeroutput"><span class="identifier">eval_gcd</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  3237. <span class="identifier">a</span><span class="special">,</span>
  3238. <span class="identifier">cb</span><span class="special">)</span></code>
  3239. </p>
  3240. </td>
  3241. <td>
  3242. <p>
  3243. <code class="computeroutput"><span class="keyword">void</span></code>
  3244. </p>
  3245. </td>
  3246. <td>
  3247. <p>
  3248. Sets <code class="computeroutput"><span class="identifier">b</span></code> to the greatest
  3249. common divisor of <code class="computeroutput"><span class="identifier">cb</span></code>
  3250. and <code class="computeroutput"><span class="identifier">a</span></code>. Only required
  3251. when <code class="computeroutput"><span class="identifier">B</span></code> is an integer
  3252. type. The type of <code class="computeroutput"><span class="identifier">a</span></code>
  3253. shall be listed in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
  3254. <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">float_types</span></code>. The default version
  3255. of this function calls <code class="computeroutput"><span class="identifier">eval_gcd</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">,</span> <span class="identifier">a</span><span class="special">)</span></code>.
  3256. </p>
  3257. </td>
  3258. <td>
  3259. <p>
  3260. &#160;
  3261. </p>
  3262. </td>
  3263. </tr>
  3264. <tr>
  3265. <td>
  3266. <p>
  3267. <code class="computeroutput"><span class="identifier">eval_lcm</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  3268. <span class="identifier">a</span><span class="special">,</span>
  3269. <span class="identifier">cb</span><span class="special">)</span></code>
  3270. </p>
  3271. </td>
  3272. <td>
  3273. <p>
  3274. <code class="computeroutput"><span class="keyword">void</span></code>
  3275. </p>
  3276. </td>
  3277. <td>
  3278. <p>
  3279. Sets <code class="computeroutput"><span class="identifier">b</span></code> to the least
  3280. common multiple of <code class="computeroutput"><span class="identifier">cb</span></code>
  3281. and <code class="computeroutput"><span class="identifier">a</span></code>. Only required
  3282. when <code class="computeroutput"><span class="identifier">B</span></code> is an integer
  3283. type. The type of <code class="computeroutput"><span class="identifier">a</span></code>
  3284. shall be listed in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
  3285. <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">float_types</span></code>. The default version
  3286. of this function calls <code class="computeroutput"><span class="identifier">eval_lcm</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">,</span> <span class="identifier">a</span><span class="special">)</span></code>.
  3287. </p>
  3288. </td>
  3289. <td>
  3290. <p>
  3291. &#160;
  3292. </p>
  3293. </td>
  3294. </tr>
  3295. <tr>
  3296. <td>
  3297. <p>
  3298. <code class="computeroutput"><span class="identifier">eval_powm</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  3299. <span class="identifier">cb</span><span class="special">,</span>
  3300. <span class="identifier">cb2</span><span class="special">,</span>
  3301. <span class="identifier">cb3</span><span class="special">)</span></code>
  3302. </p>
  3303. </td>
  3304. <td>
  3305. <p>
  3306. <code class="computeroutput"><span class="keyword">void</span></code>
  3307. </p>
  3308. </td>
  3309. <td>
  3310. <p>
  3311. Sets <code class="computeroutput"><span class="identifier">b</span></code> to the result
  3312. of <span class="emphasis"><em>(cb^cb2)%cb3</em></span>. The default version of this
  3313. function is synthesised from other operations above.
  3314. </p>
  3315. </td>
  3316. <td>
  3317. <p>
  3318. &#160;
  3319. </p>
  3320. </td>
  3321. </tr>
  3322. <tr>
  3323. <td>
  3324. <p>
  3325. <code class="computeroutput"><span class="identifier">eval_powm</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  3326. <span class="identifier">cb</span><span class="special">,</span>
  3327. <span class="identifier">cb2</span><span class="special">,</span>
  3328. <span class="identifier">a</span><span class="special">)</span></code>
  3329. </p>
  3330. </td>
  3331. <td>
  3332. <p>
  3333. <code class="computeroutput"><span class="keyword">void</span></code>
  3334. </p>
  3335. </td>
  3336. <td>
  3337. <p>
  3338. Sets <code class="computeroutput"><span class="identifier">b</span></code> to the result
  3339. of <span class="emphasis"><em>(cb^cb2)%a</em></span>. The type of <code class="computeroutput"><span class="identifier">a</span></code>
  3340. shall be listed in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
  3341. <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code>. The default version
  3342. of this function is synthesised from other operations above.
  3343. </p>
  3344. </td>
  3345. <td>
  3346. <p>
  3347. &#160;
  3348. </p>
  3349. </td>
  3350. </tr>
  3351. <tr>
  3352. <td>
  3353. <p>
  3354. <code class="computeroutput"><span class="identifier">eval_powm</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  3355. <span class="identifier">cb</span><span class="special">,</span>
  3356. <span class="identifier">a</span><span class="special">,</span>
  3357. <span class="identifier">cb2</span><span class="special">)</span></code>
  3358. </p>
  3359. </td>
  3360. <td>
  3361. <p>
  3362. <code class="computeroutput"><span class="keyword">void</span></code>
  3363. </p>
  3364. </td>
  3365. <td>
  3366. <p>
  3367. Sets <code class="computeroutput"><span class="identifier">b</span></code> to the result
  3368. of <span class="emphasis"><em>(cb^a)%cb2</em></span>. The type of <code class="computeroutput"><span class="identifier">a</span></code>
  3369. shall be listed in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
  3370. <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code>. The default version
  3371. of this function is synthesised from other operations above.
  3372. </p>
  3373. </td>
  3374. <td>
  3375. <p>
  3376. &#160;
  3377. </p>
  3378. </td>
  3379. </tr>
  3380. <tr>
  3381. <td>
  3382. <p>
  3383. <code class="computeroutput"><span class="identifier">eval_powm</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  3384. <span class="identifier">cb</span><span class="special">,</span>
  3385. <span class="identifier">a</span><span class="special">,</span>
  3386. <span class="identifier">a2</span><span class="special">)</span></code>
  3387. </p>
  3388. </td>
  3389. <td>
  3390. <p>
  3391. <code class="computeroutput"><span class="keyword">void</span></code>
  3392. </p>
  3393. </td>
  3394. <td>
  3395. <p>
  3396. Sets <code class="computeroutput"><span class="identifier">b</span></code> to the result
  3397. of <span class="emphasis"><em>(cb^a)%a2</em></span>. The type of <code class="computeroutput"><span class="identifier">a</span></code>
  3398. shall be listed in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
  3399. <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code>. The default version
  3400. of this function is synthesised from other operations above.
  3401. </p>
  3402. </td>
  3403. <td>
  3404. <p>
  3405. &#160;
  3406. </p>
  3407. </td>
  3408. </tr>
  3409. <tr>
  3410. <td>
  3411. <p>
  3412. <code class="computeroutput"><span class="identifier">eval_integer_sqrt</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">,</span> <span class="identifier">b2</span><span class="special">)</span></code>
  3413. </p>
  3414. </td>
  3415. <td>
  3416. <p>
  3417. <code class="computeroutput"><span class="keyword">void</span></code>
  3418. </p>
  3419. </td>
  3420. <td>
  3421. <p>
  3422. Sets <code class="computeroutput"><span class="identifier">b</span></code> to the largest
  3423. integer which when squared is less than <code class="computeroutput"><span class="identifier">cb</span></code>,
  3424. also sets <code class="computeroutput"><span class="identifier">b2</span></code> to
  3425. the remainder, ie to <span class="emphasis"><em>cb - b<sup>2</sup></em></span>. The default
  3426. version of this function is synthesised from other operations above.
  3427. </p>
  3428. </td>
  3429. <td>
  3430. <p>
  3431. &#160;
  3432. </p>
  3433. </td>
  3434. </tr>
  3435. <tr>
  3436. <td>
  3437. <p>
  3438. <span class="emphasis"><em>Sign manipulation:</em></span>
  3439. </p>
  3440. </td>
  3441. <td class="auto-generated">&#160;</td>
  3442. <td class="auto-generated">&#160;</td>
  3443. </tr>
  3444. <tr>
  3445. <td>
  3446. <p>
  3447. <code class="computeroutput"><span class="identifier">eval_abs</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  3448. <span class="identifier">cb</span><span class="special">)</span></code>
  3449. </p>
  3450. </td>
  3451. <td>
  3452. <p>
  3453. <code class="computeroutput"><span class="keyword">void</span></code>
  3454. </p>
  3455. </td>
  3456. <td>
  3457. <p>
  3458. Set <code class="computeroutput"><span class="identifier">b</span></code> to the absolute
  3459. value of <code class="computeroutput"><span class="identifier">cb</span></code>. The
  3460. default version of this functions assigns <code class="computeroutput"><span class="identifier">cb</span></code>
  3461. to <code class="computeroutput"><span class="identifier">b</span></code>, and then
  3462. calls <code class="computeroutput"><span class="identifier">b</span><span class="special">.</span><span class="identifier">negate</span><span class="special">()</span></code>
  3463. if <code class="computeroutput"><span class="identifier">eval_get_sign</span><span class="special">(</span><span class="identifier">cb</span><span class="special">)</span> <span class="special">&lt;</span>
  3464. <span class="number">0</span></code>.
  3465. </p>
  3466. </td>
  3467. <td>
  3468. <p>
  3469. &#160;
  3470. </p>
  3471. </td>
  3472. </tr>
  3473. <tr>
  3474. <td>
  3475. <p>
  3476. <code class="computeroutput"><span class="identifier">eval_fabs</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  3477. <span class="identifier">cb</span><span class="special">)</span></code>
  3478. </p>
  3479. </td>
  3480. <td>
  3481. <p>
  3482. <code class="computeroutput"><span class="keyword">void</span></code>
  3483. </p>
  3484. </td>
  3485. <td>
  3486. <p>
  3487. Set <code class="computeroutput"><span class="identifier">b</span></code> to the absolute
  3488. value of <code class="computeroutput"><span class="identifier">cb</span></code>. The
  3489. default version of this functions assigns <code class="computeroutput"><span class="identifier">cb</span></code>
  3490. to <code class="computeroutput"><span class="identifier">b</span></code>, and then
  3491. calls <code class="computeroutput"><span class="identifier">b</span><span class="special">.</span><span class="identifier">negate</span><span class="special">()</span></code>
  3492. if <code class="computeroutput"><span class="identifier">eval_get_sign</span><span class="special">(</span><span class="identifier">cb</span><span class="special">)</span> <span class="special">&lt;</span>
  3493. <span class="number">0</span></code>.
  3494. </p>
  3495. </td>
  3496. <td>
  3497. <p>
  3498. &#160;
  3499. </p>
  3500. </td>
  3501. </tr>
  3502. <tr>
  3503. <td>
  3504. <p>
  3505. <span class="emphasis"><em>floating-point functions:</em></span>
  3506. </p>
  3507. </td>
  3508. <td class="auto-generated">&#160;</td>
  3509. <td class="auto-generated">&#160;</td>
  3510. </tr>
  3511. <tr>
  3512. <td>
  3513. <p>
  3514. <code class="computeroutput"><span class="identifier">eval_fpclassify</span><span class="special">(</span><span class="identifier">cb</span><span class="special">)</span></code>
  3515. </p>
  3516. </td>
  3517. <td>
  3518. <p>
  3519. <code class="computeroutput"><span class="keyword">int</span></code>
  3520. </p>
  3521. </td>
  3522. <td>
  3523. <p>
  3524. Returns one of the same values returned by <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">fpclassify</span></code>.
  3525. Only required when <code class="computeroutput"><span class="identifier">B</span></code>
  3526. is an floating-point type. The default version of this function
  3527. will only test for zero <code class="computeroutput"><span class="identifier">cb</span></code>.
  3528. </p>
  3529. </td>
  3530. <td>
  3531. <p>
  3532. &#160;
  3533. </p>
  3534. </td>
  3535. </tr>
  3536. <tr>
  3537. <td>
  3538. <p>
  3539. <code class="computeroutput"><span class="identifier">eval_trunc</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  3540. <span class="identifier">cb</span><span class="special">)</span></code>
  3541. </p>
  3542. </td>
  3543. <td>
  3544. <p>
  3545. <code class="computeroutput"><span class="keyword">void</span></code>
  3546. </p>
  3547. </td>
  3548. <td>
  3549. <p>
  3550. Performs the equivalent operation to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">trunc</span></code>
  3551. on argument <code class="computeroutput"><span class="identifier">cb</span></code>
  3552. and stores the result in <code class="computeroutput"><span class="identifier">b</span></code>.
  3553. Only required when <code class="computeroutput"><span class="identifier">B</span></code>
  3554. is an floating-point type. The default version of this function
  3555. is synthesised from other operations above.
  3556. </p>
  3557. </td>
  3558. <td>
  3559. <p>
  3560. &#160;
  3561. </p>
  3562. </td>
  3563. </tr>
  3564. <tr>
  3565. <td>
  3566. <p>
  3567. <code class="computeroutput"><span class="identifier">eval_round</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  3568. <span class="identifier">cb</span><span class="special">)</span></code>
  3569. </p>
  3570. </td>
  3571. <td>
  3572. <p>
  3573. <code class="computeroutput"><span class="keyword">void</span></code>
  3574. </p>
  3575. </td>
  3576. <td>
  3577. <p>
  3578. Performs the equivalent operation to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">round</span></code>
  3579. on argument <code class="computeroutput"><span class="identifier">cb</span></code>
  3580. and stores the result in <code class="computeroutput"><span class="identifier">b</span></code>.
  3581. Only required when <code class="computeroutput"><span class="identifier">B</span></code>
  3582. is an floating-point type. The default version of this function
  3583. is synthesised from other operations above.
  3584. </p>
  3585. </td>
  3586. <td>
  3587. <p>
  3588. &#160;
  3589. </p>
  3590. </td>
  3591. </tr>
  3592. <tr>
  3593. <td>
  3594. <p>
  3595. <code class="computeroutput"><span class="identifier">eval_exp</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  3596. <span class="identifier">cb</span><span class="special">)</span></code>
  3597. </p>
  3598. </td>
  3599. <td>
  3600. <p>
  3601. <code class="computeroutput"><span class="keyword">void</span></code>
  3602. </p>
  3603. </td>
  3604. <td>
  3605. <p>
  3606. Performs the equivalent operation to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">exp</span></code>
  3607. on argument <code class="computeroutput"><span class="identifier">cb</span></code>
  3608. and stores the result in <code class="computeroutput"><span class="identifier">b</span></code>.
  3609. Only required when <code class="computeroutput"><span class="identifier">B</span></code>
  3610. is an floating-point type. The default version of this function
  3611. is synthesised from other operations above.
  3612. </p>
  3613. </td>
  3614. <td>
  3615. <p>
  3616. &#160;
  3617. </p>
  3618. </td>
  3619. </tr>
  3620. <tr>
  3621. <td>
  3622. <p>
  3623. <code class="computeroutput"><span class="identifier">eval_exp2</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  3624. <span class="identifier">cb</span><span class="special">)</span></code>
  3625. </p>
  3626. </td>
  3627. <td>
  3628. <p>
  3629. <code class="computeroutput"><span class="keyword">void</span></code>
  3630. </p>
  3631. </td>
  3632. <td>
  3633. <p>
  3634. Performs the equivalent operation to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">exp2</span></code>
  3635. on argument <code class="computeroutput"><span class="identifier">cb</span></code>
  3636. and stores the result in <code class="computeroutput"><span class="identifier">b</span></code>.
  3637. Only required when <code class="computeroutput"><span class="identifier">B</span></code>
  3638. is an floating-point type. The default version of this function
  3639. is implemented in terms of <code class="computeroutput"><span class="identifier">eval_pow</span></code>.
  3640. </p>
  3641. </td>
  3642. <td>
  3643. <p>
  3644. &#160;
  3645. </p>
  3646. </td>
  3647. </tr>
  3648. <tr>
  3649. <td>
  3650. <p>
  3651. <code class="computeroutput"><span class="identifier">eval_log</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  3652. <span class="identifier">cb</span><span class="special">)</span></code>
  3653. </p>
  3654. </td>
  3655. <td>
  3656. <p>
  3657. <code class="computeroutput"><span class="keyword">void</span></code>
  3658. </p>
  3659. </td>
  3660. <td>
  3661. <p>
  3662. Performs the equivalent operation to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">log</span></code>
  3663. on argument <code class="computeroutput"><span class="identifier">cb</span></code>
  3664. and stores the result in <code class="computeroutput"><span class="identifier">b</span></code>.
  3665. Only required when <code class="computeroutput"><span class="identifier">B</span></code>
  3666. is an floating-point type. The default version of this function
  3667. is synthesised from other operations above.
  3668. </p>
  3669. </td>
  3670. <td>
  3671. <p>
  3672. &#160;
  3673. </p>
  3674. </td>
  3675. </tr>
  3676. <tr>
  3677. <td>
  3678. <p>
  3679. <code class="computeroutput"><span class="identifier">eval_log10</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  3680. <span class="identifier">cb</span><span class="special">)</span></code>
  3681. </p>
  3682. </td>
  3683. <td>
  3684. <p>
  3685. <code class="computeroutput"><span class="keyword">void</span></code>
  3686. </p>
  3687. </td>
  3688. <td>
  3689. <p>
  3690. Performs the equivalent operation to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">log10</span></code>
  3691. on argument <code class="computeroutput"><span class="identifier">cb</span></code>
  3692. and stores the result in <code class="computeroutput"><span class="identifier">b</span></code>.
  3693. Only required when <code class="computeroutput"><span class="identifier">B</span></code>
  3694. is an floating-point type. The default version of this function
  3695. is synthesised from other operations above.
  3696. </p>
  3697. </td>
  3698. <td>
  3699. <p>
  3700. &#160;
  3701. </p>
  3702. </td>
  3703. </tr>
  3704. <tr>
  3705. <td>
  3706. <p>
  3707. <code class="computeroutput"><span class="identifier">eval_sin</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  3708. <span class="identifier">cb</span><span class="special">)</span></code>
  3709. </p>
  3710. </td>
  3711. <td>
  3712. <p>
  3713. <code class="computeroutput"><span class="keyword">void</span></code>
  3714. </p>
  3715. </td>
  3716. <td>
  3717. <p>
  3718. Performs the equivalent operation to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">sin</span></code>
  3719. on argument <code class="computeroutput"><span class="identifier">cb</span></code>
  3720. and stores the result in <code class="computeroutput"><span class="identifier">b</span></code>.
  3721. Only required when <code class="computeroutput"><span class="identifier">B</span></code>
  3722. is an floating-point type. The default version of this function
  3723. is synthesised from other operations above.
  3724. </p>
  3725. </td>
  3726. <td>
  3727. <p>
  3728. &#160;
  3729. </p>
  3730. </td>
  3731. </tr>
  3732. <tr>
  3733. <td>
  3734. <p>
  3735. <code class="computeroutput"><span class="identifier">eval_cos</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  3736. <span class="identifier">cb</span><span class="special">)</span></code>
  3737. </p>
  3738. </td>
  3739. <td>
  3740. <p>
  3741. <code class="computeroutput"><span class="keyword">void</span></code>
  3742. </p>
  3743. </td>
  3744. <td>
  3745. <p>
  3746. Performs the equivalent operation to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">cos</span></code>
  3747. on argument <code class="computeroutput"><span class="identifier">cb</span></code>
  3748. and stores the result in <code class="computeroutput"><span class="identifier">b</span></code>.
  3749. Only required when <code class="computeroutput"><span class="identifier">B</span></code>
  3750. is an floating-point type. The default version of this function
  3751. is synthesised from other operations above.
  3752. </p>
  3753. </td>
  3754. <td>
  3755. <p>
  3756. &#160;
  3757. </p>
  3758. </td>
  3759. </tr>
  3760. <tr>
  3761. <td>
  3762. <p>
  3763. <code class="computeroutput"><span class="identifier">eval_tan</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  3764. <span class="identifier">cb</span><span class="special">)</span></code>
  3765. </p>
  3766. </td>
  3767. <td>
  3768. <p>
  3769. <code class="computeroutput"><span class="keyword">void</span></code>
  3770. </p>
  3771. </td>
  3772. <td>
  3773. <p>
  3774. Performs the equivalent operation to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">exp</span></code>
  3775. on argument <code class="computeroutput"><span class="identifier">cb</span></code>
  3776. and stores the result in <code class="computeroutput"><span class="identifier">b</span></code>.
  3777. Only required when <code class="computeroutput"><span class="identifier">B</span></code>
  3778. is an floating-point type. The default version of this function
  3779. is synthesised from other operations above.
  3780. </p>
  3781. </td>
  3782. <td>
  3783. <p>
  3784. &#160;
  3785. </p>
  3786. </td>
  3787. </tr>
  3788. <tr>
  3789. <td>
  3790. <p>
  3791. <code class="computeroutput"><span class="identifier">eval_asin</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  3792. <span class="identifier">cb</span><span class="special">)</span></code>
  3793. </p>
  3794. </td>
  3795. <td>
  3796. <p>
  3797. <code class="computeroutput"><span class="keyword">void</span></code>
  3798. </p>
  3799. </td>
  3800. <td>
  3801. <p>
  3802. Performs the equivalent operation to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">asin</span></code>
  3803. on argument <code class="computeroutput"><span class="identifier">cb</span></code>
  3804. and stores the result in <code class="computeroutput"><span class="identifier">b</span></code>.
  3805. Only required when <code class="computeroutput"><span class="identifier">B</span></code>
  3806. is an floating-point type. The default version of this function
  3807. is synthesised from other operations above.
  3808. </p>
  3809. </td>
  3810. <td>
  3811. <p>
  3812. &#160;
  3813. </p>
  3814. </td>
  3815. </tr>
  3816. <tr>
  3817. <td>
  3818. <p>
  3819. <code class="computeroutput"><span class="identifier">eval_acos</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  3820. <span class="identifier">cb</span><span class="special">)</span></code>
  3821. </p>
  3822. </td>
  3823. <td>
  3824. <p>
  3825. <code class="computeroutput"><span class="keyword">void</span></code>
  3826. </p>
  3827. </td>
  3828. <td>
  3829. <p>
  3830. Performs the equivalent operation to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">acos</span></code>
  3831. on argument <code class="computeroutput"><span class="identifier">cb</span></code>
  3832. and stores the result in <code class="computeroutput"><span class="identifier">b</span></code>.
  3833. Only required when <code class="computeroutput"><span class="identifier">B</span></code>
  3834. is an floating-point type. The default version of this function
  3835. is synthesised from other operations above.
  3836. </p>
  3837. </td>
  3838. <td>
  3839. <p>
  3840. &#160;
  3841. </p>
  3842. </td>
  3843. </tr>
  3844. <tr>
  3845. <td>
  3846. <p>
  3847. <code class="computeroutput"><span class="identifier">eval_atan</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  3848. <span class="identifier">cb</span><span class="special">)</span></code>
  3849. </p>
  3850. </td>
  3851. <td>
  3852. <p>
  3853. <code class="computeroutput"><span class="keyword">void</span></code>
  3854. </p>
  3855. </td>
  3856. <td>
  3857. <p>
  3858. Performs the equivalent operation to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">atan</span></code>
  3859. on argument <code class="computeroutput"><span class="identifier">cb</span></code>
  3860. and stores the result in <code class="computeroutput"><span class="identifier">b</span></code>.
  3861. Only required when <code class="computeroutput"><span class="identifier">B</span></code>
  3862. is an floating-point type. The default version of this function
  3863. is synthesised from other operations above.
  3864. </p>
  3865. </td>
  3866. <td>
  3867. <p>
  3868. &#160;
  3869. </p>
  3870. </td>
  3871. </tr>
  3872. <tr>
  3873. <td>
  3874. <p>
  3875. <code class="computeroutput"><span class="identifier">eval_sinh</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  3876. <span class="identifier">cb</span><span class="special">)</span></code>
  3877. </p>
  3878. </td>
  3879. <td>
  3880. <p>
  3881. <code class="computeroutput"><span class="keyword">void</span></code>
  3882. </p>
  3883. </td>
  3884. <td>
  3885. <p>
  3886. Performs the equivalent operation to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">sinh</span></code>
  3887. on argument <code class="computeroutput"><span class="identifier">cb</span></code>
  3888. and stores the result in <code class="computeroutput"><span class="identifier">b</span></code>.
  3889. Only required when <code class="computeroutput"><span class="identifier">B</span></code>
  3890. is an floating-point type. The default version of this function
  3891. is synthesised from other operations above.
  3892. </p>
  3893. </td>
  3894. <td>
  3895. <p>
  3896. &#160;
  3897. </p>
  3898. </td>
  3899. </tr>
  3900. <tr>
  3901. <td>
  3902. <p>
  3903. <code class="computeroutput"><span class="identifier">eval_cosh</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  3904. <span class="identifier">cb</span><span class="special">)</span></code>
  3905. </p>
  3906. </td>
  3907. <td>
  3908. <p>
  3909. <code class="computeroutput"><span class="keyword">void</span></code>
  3910. </p>
  3911. </td>
  3912. <td>
  3913. <p>
  3914. Performs the equivalent operation to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">cosh</span></code>
  3915. on argument <code class="computeroutput"><span class="identifier">cb</span></code>
  3916. and stores the result in <code class="computeroutput"><span class="identifier">b</span></code>.
  3917. Only required when <code class="computeroutput"><span class="identifier">B</span></code>
  3918. is an floating-point type. The default version of this function
  3919. is synthesised from other operations above.
  3920. </p>
  3921. </td>
  3922. <td>
  3923. <p>
  3924. &#160;
  3925. </p>
  3926. </td>
  3927. </tr>
  3928. <tr>
  3929. <td>
  3930. <p>
  3931. <code class="computeroutput"><span class="identifier">eval_tanh</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  3932. <span class="identifier">cb</span><span class="special">)</span></code>
  3933. </p>
  3934. </td>
  3935. <td>
  3936. <p>
  3937. <code class="computeroutput"><span class="keyword">void</span></code>
  3938. </p>
  3939. </td>
  3940. <td>
  3941. <p>
  3942. Performs the equivalent operation to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">tanh</span></code>
  3943. on argument <code class="computeroutput"><span class="identifier">cb</span></code>
  3944. and stores the result in <code class="computeroutput"><span class="identifier">b</span></code>.
  3945. Only required when <code class="computeroutput"><span class="identifier">B</span></code>
  3946. is an floating-point type. The default version of this function
  3947. is synthesised from other operations above.
  3948. </p>
  3949. </td>
  3950. <td>
  3951. <p>
  3952. &#160;
  3953. </p>
  3954. </td>
  3955. </tr>
  3956. <tr>
  3957. <td>
  3958. <p>
  3959. <code class="computeroutput"><span class="identifier">eval_fmod</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  3960. <span class="identifier">cb</span><span class="special">,</span>
  3961. <span class="identifier">cb2</span><span class="special">)</span></code>
  3962. </p>
  3963. </td>
  3964. <td>
  3965. <p>
  3966. <code class="computeroutput"><span class="keyword">void</span></code>
  3967. </p>
  3968. </td>
  3969. <td>
  3970. <p>
  3971. Performs the equivalent operation to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">fmod</span></code>
  3972. on arguments <code class="computeroutput"><span class="identifier">cb</span></code>
  3973. and <code class="computeroutput"><span class="identifier">cb2</span></code>, and store
  3974. the result in <code class="computeroutput"><span class="identifier">b</span></code>.
  3975. Only required when <code class="computeroutput"><span class="identifier">B</span></code>
  3976. is an floating-point type. The default version of this function
  3977. is synthesised from other operations above.
  3978. </p>
  3979. </td>
  3980. <td>
  3981. <p>
  3982. &#160;
  3983. </p>
  3984. </td>
  3985. </tr>
  3986. <tr>
  3987. <td>
  3988. <p>
  3989. <code class="computeroutput"><span class="identifier">eval_modf</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  3990. <span class="identifier">cb</span><span class="special">,</span>
  3991. <span class="identifier">pb</span><span class="special">)</span></code>
  3992. </p>
  3993. </td>
  3994. <td>
  3995. <p>
  3996. <code class="computeroutput"><span class="keyword">void</span></code>
  3997. </p>
  3998. </td>
  3999. <td>
  4000. <p>
  4001. Performs the equivalent operation to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">modf</span></code>
  4002. on argument <code class="computeroutput"><span class="identifier">cb</span></code>,
  4003. and store the integer result in <code class="computeroutput"><span class="special">*</span><span class="identifier">pb</span></code> and the fractional part in
  4004. <code class="computeroutput"><span class="identifier">b</span></code>. Only required
  4005. when <code class="computeroutput"><span class="identifier">B</span></code> is an floating-point
  4006. type. The default version of this function is synthesised from
  4007. other operations above.
  4008. </p>
  4009. </td>
  4010. <td>
  4011. <p>
  4012. &#160;
  4013. </p>
  4014. </td>
  4015. </tr>
  4016. <tr>
  4017. <td>
  4018. <p>
  4019. <code class="computeroutput"><span class="identifier">eval_pow</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  4020. <span class="identifier">cb</span><span class="special">,</span>
  4021. <span class="identifier">cb2</span><span class="special">)</span></code>
  4022. </p>
  4023. </td>
  4024. <td>
  4025. <p>
  4026. <code class="computeroutput"><span class="keyword">void</span></code>
  4027. </p>
  4028. </td>
  4029. <td>
  4030. <p>
  4031. Performs the equivalent operation to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pow</span></code>
  4032. on arguments <code class="computeroutput"><span class="identifier">cb</span></code>
  4033. and <code class="computeroutput"><span class="identifier">cb2</span></code>, and store
  4034. the result in <code class="computeroutput"><span class="identifier">b</span></code>.
  4035. Only required when <code class="computeroutput"><span class="identifier">B</span></code>
  4036. is an floating-point type. The default version of this function
  4037. is synthesised from other operations above.
  4038. </p>
  4039. </td>
  4040. <td>
  4041. <p>
  4042. &#160;
  4043. </p>
  4044. </td>
  4045. </tr>
  4046. <tr>
  4047. <td>
  4048. <p>
  4049. <code class="computeroutput"><span class="identifier">eval_atan2</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  4050. <span class="identifier">cb</span><span class="special">,</span>
  4051. <span class="identifier">cb2</span><span class="special">)</span></code>
  4052. </p>
  4053. </td>
  4054. <td>
  4055. <p>
  4056. <code class="computeroutput"><span class="keyword">void</span></code>
  4057. </p>
  4058. </td>
  4059. <td>
  4060. <p>
  4061. Performs the equivalent operation to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">atan</span></code>
  4062. on arguments <code class="computeroutput"><span class="identifier">cb</span></code>
  4063. and <code class="computeroutput"><span class="identifier">cb2</span></code>, and store
  4064. the result in <code class="computeroutput"><span class="identifier">b</span></code>.
  4065. Only required when <code class="computeroutput"><span class="identifier">B</span></code>
  4066. is an floating-point type. The default version of this function
  4067. is synthesised from other operations above.
  4068. </p>
  4069. </td>
  4070. <td>
  4071. <p>
  4072. &#160;
  4073. </p>
  4074. </td>
  4075. </tr>
  4076. <tr>
  4077. <td>
  4078. <p>
  4079. <code class="computeroutput"><span class="identifier">eval_scalbn</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  4080. <span class="identifier">cb</span><span class="special">,</span>
  4081. <span class="identifier">e</span><span class="special">)</span></code>
  4082. </p>
  4083. </td>
  4084. <td>
  4085. <p>
  4086. <code class="computeroutput"><span class="keyword">void</span></code>
  4087. </p>
  4088. </td>
  4089. <td>
  4090. <p>
  4091. Scales value <code class="computeroutput"><span class="identifier">cb</span></code>
  4092. by <span class="emphasis"><em>r<sup>e</sup></em></span>, where <span class="emphasis"><em>r</em></span> is the
  4093. radix of the type. The default version of this function is implemented
  4094. in terms of eval_ldexp, consequently this function must be provided
  4095. for types with a radix other than 2.
  4096. </p>
  4097. </td>
  4098. </tr>
  4099. <tr>
  4100. <td>
  4101. <p>
  4102. <code class="computeroutput"><span class="identifier">eval_scalbln</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  4103. <span class="identifier">cb</span><span class="special">,</span>
  4104. <span class="identifier">e</span><span class="special">)</span></code>
  4105. </p>
  4106. </td>
  4107. <td>
  4108. <p>
  4109. <code class="computeroutput"><span class="keyword">void</span></code>
  4110. </p>
  4111. </td>
  4112. <td>
  4113. <p>
  4114. Calls <code class="computeroutput"><span class="identifier">eval_scalbn</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">,</span> <span class="identifier">e</span><span class="special">)</span></code>.
  4115. </p>
  4116. </td>
  4117. </tr>
  4118. <tr>
  4119. <td>
  4120. <p>
  4121. <code class="computeroutput"><span class="identifier">eval_ilogb</span><span class="special">(</span><span class="identifier">cb</span><span class="special">)</span></code>
  4122. </p>
  4123. </td>
  4124. <td>
  4125. <p>
  4126. <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">exponent_type</span></code>
  4127. </p>
  4128. </td>
  4129. <td>
  4130. <p>
  4131. Returns the exponent <span class="emphasis"><em>e</em></span> of value <code class="computeroutput"><span class="identifier">cb</span></code> such that <span class="emphasis"><em>1 &lt;=
  4132. cb*r<sup>-e</sup> &lt; r</em></span>, where <span class="emphasis"><em>r</em></span> is the radix
  4133. of type B. The default version of this function is implemented
  4134. in terms of eval_frexp, consequently this function must be provided
  4135. for types with a radix other than 2.
  4136. </p>
  4137. </td>
  4138. </tr>
  4139. <tr>
  4140. <td>
  4141. <p>
  4142. <code class="computeroutput"><span class="identifier">eval_remquo</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  4143. <span class="identifier">cb</span><span class="special">,</span>
  4144. <span class="identifier">cb2</span><span class="special">,</span>
  4145. <span class="identifier">pi</span><span class="special">)</span></code>
  4146. </p>
  4147. </td>
  4148. <td>
  4149. <p>
  4150. <code class="computeroutput"><span class="keyword">void</span></code>
  4151. </p>
  4152. </td>
  4153. <td>
  4154. <p>
  4155. Sets <code class="computeroutput"><span class="identifier">b</span> <span class="special">=</span>
  4156. <span class="identifier">cb</span> <span class="special">-</span>
  4157. <span class="identifier">n</span> <span class="special">*</span>
  4158. <span class="identifier">cb2</span></code> and stores <code class="computeroutput"><span class="identifier">n</span></code> in <code class="computeroutput"><span class="special">*</span><span class="identifier">pi</span></code>.
  4159. </p>
  4160. </td>
  4161. </tr>
  4162. <tr>
  4163. <td>
  4164. <p>
  4165. <code class="computeroutput"><span class="identifier">eval_remquo</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  4166. <span class="identifier">cb</span><span class="special">,</span>
  4167. <span class="identifier">a</span><span class="special">,</span>
  4168. <span class="identifier">pi</span><span class="special">)</span></code>
  4169. </p>
  4170. </td>
  4171. <td>
  4172. <p>
  4173. <code class="computeroutput"><span class="keyword">void</span></code>
  4174. </p>
  4175. </td>
  4176. <td>
  4177. <p>
  4178. Default version converts a to type B and calls the overload above.
  4179. </p>
  4180. </td>
  4181. </tr>
  4182. <tr>
  4183. <td>
  4184. <p>
  4185. <code class="computeroutput"><span class="identifier">eval_remquo</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  4186. <span class="identifier">a</span><span class="special">,</span>
  4187. <span class="identifier">cb</span><span class="special">,</span>
  4188. <span class="identifier">pi</span><span class="special">)</span></code>
  4189. </p>
  4190. </td>
  4191. <td>
  4192. <p>
  4193. <code class="computeroutput"><span class="keyword">void</span></code>
  4194. </p>
  4195. </td>
  4196. <td>
  4197. <p>
  4198. Default version converts a to type B and calls the overload above.
  4199. </p>
  4200. </td>
  4201. </tr>
  4202. <tr>
  4203. <td>
  4204. <p>
  4205. <code class="computeroutput"><span class="identifier">eval_remainder</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">,</span> <span class="identifier">cb2</span><span class="special">)</span></code>
  4206. </p>
  4207. </td>
  4208. <td>
  4209. <p>
  4210. <code class="computeroutput"><span class="keyword">void</span></code>
  4211. </p>
  4212. </td>
  4213. <td>
  4214. <p>
  4215. Default version calls eval_remquo with a dummy final argument.
  4216. </p>
  4217. </td>
  4218. </tr>
  4219. <tr>
  4220. <td>
  4221. <p>
  4222. <code class="computeroutput"><span class="identifier">eval_remainder</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">,</span> <span class="identifier">a</span><span class="special">)</span></code>
  4223. </p>
  4224. </td>
  4225. <td>
  4226. <p>
  4227. <code class="computeroutput"><span class="keyword">void</span></code>
  4228. </p>
  4229. </td>
  4230. <td>
  4231. <p>
  4232. Default version calls eval_remquo with a dummy final argument.
  4233. </p>
  4234. </td>
  4235. </tr>
  4236. <tr>
  4237. <td>
  4238. <p>
  4239. <code class="computeroutput"><span class="identifier">eval_remainder</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">)</span></code>
  4240. </p>
  4241. </td>
  4242. <td>
  4243. <p>
  4244. <code class="computeroutput"><span class="keyword">void</span></code>
  4245. </p>
  4246. </td>
  4247. <td>
  4248. <p>
  4249. Default version calls eval_remquo with a dummy final argument.
  4250. </p>
  4251. </td>
  4252. </tr>
  4253. <tr>
  4254. <td>
  4255. <p>
  4256. <code class="computeroutput"><span class="identifier">eval_fdim</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  4257. <span class="identifier">cb</span><span class="special">,</span>
  4258. <span class="identifier">cb2</span><span class="special">)</span></code>
  4259. </p>
  4260. </td>
  4261. <td>
  4262. <p>
  4263. <code class="computeroutput"><span class="keyword">void</span></code>
  4264. </p>
  4265. </td>
  4266. <td>
  4267. <p>
  4268. Default version sets <code class="computeroutput"><span class="identifier">b</span>
  4269. <span class="special">=</span> <span class="identifier">cb</span>
  4270. <span class="special">-</span> <span class="identifier">cb2</span></code>
  4271. if <code class="computeroutput"><span class="identifier">cb</span> <span class="special">&gt;</span>
  4272. <span class="identifier">cb2</span></code> and zero otherwise.
  4273. Special cases are handled as in the C99 annex.
  4274. </p>
  4275. </td>
  4276. </tr>
  4277. <tr>
  4278. <td>
  4279. <p>
  4280. <code class="computeroutput"><span class="identifier">eval_fdim</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  4281. <span class="identifier">cb</span><span class="special">,</span>
  4282. <span class="identifier">a</span><span class="special">)</span></code>
  4283. </p>
  4284. </td>
  4285. <td>
  4286. <p>
  4287. <code class="computeroutput"><span class="keyword">void</span></code>
  4288. </p>
  4289. </td>
  4290. <td>
  4291. <p>
  4292. Default version sets <code class="computeroutput"><span class="identifier">b</span>
  4293. <span class="special">=</span> <span class="identifier">cb</span>
  4294. <span class="special">-</span> <span class="identifier">cb2</span></code>
  4295. if <code class="computeroutput"><span class="identifier">cb</span> <span class="special">&gt;</span>
  4296. <span class="identifier">cb2</span></code> and zero otherwise.
  4297. Special cases are handled as in the C99 annex.
  4298. </p>
  4299. </td>
  4300. </tr>
  4301. <tr>
  4302. <td>
  4303. <p>
  4304. <code class="computeroutput"><span class="identifier">eval_fdim</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  4305. <span class="identifier">a</span><span class="special">,</span>
  4306. <span class="identifier">cb</span><span class="special">)</span></code>
  4307. </p>
  4308. </td>
  4309. <td>
  4310. <p>
  4311. <code class="computeroutput"><span class="keyword">void</span></code>
  4312. </p>
  4313. </td>
  4314. <td>
  4315. <p>
  4316. Default version sets <code class="computeroutput"><span class="identifier">b</span>
  4317. <span class="special">=</span> <span class="identifier">cb</span>
  4318. <span class="special">-</span> <span class="identifier">cb2</span></code>
  4319. if <code class="computeroutput"><span class="identifier">cb</span> <span class="special">&gt;</span>
  4320. <span class="identifier">cb2</span></code> and zero otherwise.
  4321. Special cases are handled as in the C99 annex.
  4322. </p>
  4323. </td>
  4324. </tr>
  4325. <tr>
  4326. <td>
  4327. <p>
  4328. <code class="computeroutput"><span class="identifier">eval_fmax</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  4329. <span class="identifier">cb</span><span class="special">,</span>
  4330. <span class="identifier">cb2</span><span class="special">)</span></code>
  4331. </p>
  4332. </td>
  4333. <td>
  4334. <p>
  4335. <code class="computeroutput"><span class="keyword">void</span></code>
  4336. </p>
  4337. </td>
  4338. <td>
  4339. <p>
  4340. Sets <code class="computeroutput"><span class="identifier">b</span></code> to the larger
  4341. of <code class="computeroutput"><span class="identifier">cb</span></code> and <code class="computeroutput"><span class="identifier">cb2</span></code>.
  4342. </p>
  4343. </td>
  4344. </tr>
  4345. <tr>
  4346. <td>
  4347. <p>
  4348. <code class="computeroutput"><span class="identifier">eval_fmax</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  4349. <span class="identifier">cb</span><span class="special">,</span>
  4350. <span class="identifier">a</span><span class="special">)</span></code>
  4351. </p>
  4352. </td>
  4353. <td>
  4354. <p>
  4355. <code class="computeroutput"><span class="keyword">void</span></code>
  4356. </p>
  4357. </td>
  4358. <td>
  4359. <p>
  4360. Sets <code class="computeroutput"><span class="identifier">b</span></code> to the larger
  4361. of <code class="computeroutput"><span class="identifier">cb</span></code> and <code class="computeroutput"><span class="identifier">a</span></code>.
  4362. </p>
  4363. </td>
  4364. </tr>
  4365. <tr>
  4366. <td>
  4367. <p>
  4368. <code class="computeroutput"><span class="identifier">eval_fmax</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  4369. <span class="identifier">a</span><span class="special">,</span>
  4370. <span class="identifier">cb</span><span class="special">)</span></code>
  4371. </p>
  4372. </td>
  4373. <td>
  4374. <p>
  4375. <code class="computeroutput"><span class="keyword">void</span></code>
  4376. </p>
  4377. </td>
  4378. <td>
  4379. <p>
  4380. Sets <code class="computeroutput"><span class="identifier">b</span></code> to the larger
  4381. of <code class="computeroutput"><span class="identifier">cb</span></code> and <code class="computeroutput"><span class="identifier">a</span></code>.
  4382. </p>
  4383. </td>
  4384. </tr>
  4385. <tr>
  4386. <td>
  4387. <p>
  4388. <code class="computeroutput"><span class="identifier">eval_fmin</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  4389. <span class="identifier">cb</span><span class="special">,</span>
  4390. <span class="identifier">cb2</span><span class="special">)</span></code>
  4391. </p>
  4392. </td>
  4393. <td>
  4394. <p>
  4395. <code class="computeroutput"><span class="keyword">void</span></code>
  4396. </p>
  4397. </td>
  4398. <td>
  4399. <p>
  4400. Sets <code class="computeroutput"><span class="identifier">b</span></code> to the smaller
  4401. of <code class="computeroutput"><span class="identifier">cb</span></code> and <code class="computeroutput"><span class="identifier">cb2</span></code>.
  4402. </p>
  4403. </td>
  4404. </tr>
  4405. <tr>
  4406. <td>
  4407. <p>
  4408. <code class="computeroutput"><span class="identifier">eval_fmin</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  4409. <span class="identifier">cb</span><span class="special">,</span>
  4410. <span class="identifier">a</span><span class="special">)</span></code>
  4411. </p>
  4412. </td>
  4413. <td>
  4414. <p>
  4415. <code class="computeroutput"><span class="keyword">void</span></code>
  4416. </p>
  4417. </td>
  4418. <td>
  4419. <p>
  4420. Sets <code class="computeroutput"><span class="identifier">b</span></code> to the smaller
  4421. of <code class="computeroutput"><span class="identifier">cb</span></code> and <code class="computeroutput"><span class="identifier">a</span></code>.
  4422. </p>
  4423. </td>
  4424. </tr>
  4425. <tr>
  4426. <td>
  4427. <p>
  4428. <code class="computeroutput"><span class="identifier">eval_fmin</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  4429. <span class="identifier">a</span><span class="special">,</span>
  4430. <span class="identifier">cb</span><span class="special">)</span></code>
  4431. </p>
  4432. </td>
  4433. <td>
  4434. <p>
  4435. <code class="computeroutput"><span class="keyword">void</span></code>
  4436. </p>
  4437. </td>
  4438. <td>
  4439. <p>
  4440. Sets <code class="computeroutput"><span class="identifier">b</span></code> to the smaller
  4441. of <code class="computeroutput"><span class="identifier">cb</span></code> and <code class="computeroutput"><span class="identifier">a</span></code>.
  4442. </p>
  4443. </td>
  4444. </tr>
  4445. <tr>
  4446. <td>
  4447. <p>
  4448. <code class="computeroutput"><span class="identifier">eval_hypot</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  4449. <span class="identifier">cb</span><span class="special">,</span>
  4450. <span class="identifier">cb2</span><span class="special">)</span></code>
  4451. </p>
  4452. </td>
  4453. <td>
  4454. <p>
  4455. <code class="computeroutput"><span class="keyword">void</span></code>
  4456. </p>
  4457. </td>
  4458. <td>
  4459. <p>
  4460. Sets <code class="computeroutput"><span class="identifier">b</span></code> to the square
  4461. root of the sum of the squares of <code class="computeroutput"><span class="identifier">cb</span></code>
  4462. and <code class="computeroutput"><span class="identifier">cb2</span></code> without
  4463. undue over or under flow.
  4464. </p>
  4465. </td>
  4466. </tr>
  4467. <tr>
  4468. <td>
  4469. <p>
  4470. <code class="computeroutput"><span class="identifier">eval_hypot</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  4471. <span class="identifier">cb</span><span class="special">,</span>
  4472. <span class="identifier">a</span><span class="special">)</span></code>
  4473. </p>
  4474. </td>
  4475. <td>
  4476. <p>
  4477. <code class="computeroutput"><span class="keyword">void</span></code>
  4478. </p>
  4479. </td>
  4480. <td>
  4481. <p>
  4482. As above.
  4483. </p>
  4484. </td>
  4485. </tr>
  4486. <tr>
  4487. <td>
  4488. <p>
  4489. <code class="computeroutput"><span class="identifier">eval_hypot</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  4490. <span class="identifier">a</span><span class="special">,</span>
  4491. <span class="identifier">cb</span><span class="special">)</span></code>
  4492. </p>
  4493. </td>
  4494. <td>
  4495. <p>
  4496. <code class="computeroutput"><span class="keyword">void</span></code>
  4497. </p>
  4498. </td>
  4499. <td>
  4500. <p>
  4501. As above.
  4502. </p>
  4503. </td>
  4504. </tr>
  4505. <tr>
  4506. <td>
  4507. <p>
  4508. <code class="computeroutput"><span class="identifier">eval_logb</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  4509. <span class="identifier">cb</span><span class="special">)</span></code>
  4510. </p>
  4511. </td>
  4512. <td>
  4513. <p>
  4514. <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">exponent_type</span></code>
  4515. </p>
  4516. </td>
  4517. <td>
  4518. <p>
  4519. Sets <code class="computeroutput"><span class="identifier">b</span></code> to the exponent
  4520. <span class="emphasis"><em>e</em></span> of value <code class="computeroutput"><span class="identifier">cb</span></code>
  4521. such that <span class="emphasis"><em>1 &lt;= cb*r<sup>-b</sup> &lt; r</em></span>, where <span class="emphasis"><em>r</em></span>
  4522. is the radix of type B. The default version of this function is
  4523. implemented in terms of <code class="computeroutput"><span class="identifier">eval_ilogb</span></code>.
  4524. </p>
  4525. </td>
  4526. </tr>
  4527. <tr>
  4528. <td>
  4529. <p>
  4530. <code class="computeroutput"><span class="identifier">eval_nearbyint</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">)</span></code>
  4531. </p>
  4532. </td>
  4533. <td>
  4534. <p>
  4535. <code class="computeroutput"><span class="keyword">void</span></code>
  4536. </p>
  4537. </td>
  4538. <td>
  4539. <p>
  4540. Calls <code class="computeroutput"><span class="identifier">eval_round</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">)</span></code>.
  4541. </p>
  4542. </td>
  4543. </tr>
  4544. <tr>
  4545. <td>
  4546. <p>
  4547. <code class="computeroutput"><span class="identifier">eval_rint</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  4548. <span class="identifier">cb</span><span class="special">)</span></code>
  4549. </p>
  4550. </td>
  4551. <td>
  4552. <p>
  4553. <code class="computeroutput"><span class="keyword">void</span></code>
  4554. </p>
  4555. </td>
  4556. <td>
  4557. <p>
  4558. Calls <code class="computeroutput"><span class="identifier">eval_nearbyint</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">cb</span><span class="special">)</span></code>.
  4559. </p>
  4560. </td>
  4561. </tr>
  4562. <tr>
  4563. <td>
  4564. <p>
  4565. <code class="computeroutput"><span class="identifier">eval_log2</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
  4566. <span class="identifier">cb</span><span class="special">)</span></code>
  4567. </p>
  4568. </td>
  4569. <td>
  4570. <p>
  4571. <code class="computeroutput"><span class="keyword">void</span></code>
  4572. </p>
  4573. </td>
  4574. <td>
  4575. <p>
  4576. Sets <code class="computeroutput"><span class="identifier">b</span></code> to the logarithm
  4577. base 2 of <code class="computeroutput"><span class="identifier">cb</span></code>.
  4578. </p>
  4579. </td>
  4580. </tr>
  4581. <tr>
  4582. <td>
  4583. <p>
  4584. <span class="emphasis"><em>hashing:</em></span>
  4585. </p>
  4586. </td>
  4587. <td class="auto-generated">&#160;</td>
  4588. <td class="auto-generated">&#160;</td>
  4589. </tr>
  4590. <tr>
  4591. <td>
  4592. <p>
  4593. <code class="computeroutput"><span class="identifier">hash_value</span><span class="special">(</span><span class="identifier">cb</span><span class="special">)</span></code>
  4594. </p>
  4595. </td>
  4596. <td>
  4597. <p>
  4598. <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span></code>
  4599. </p>
  4600. </td>
  4601. <td>
  4602. <p>
  4603. Returns a hash value for the argument that is suitable for use
  4604. with <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">hash</span></code> etc. If not provided then
  4605. no automatic hashing support will be available for the number type.
  4606. </p>
  4607. </td>
  4608. </tr>
  4609. </tbody>
  4610. </table></div>
  4611. </div>
  4612. <br class="table-break"><p>
  4613. When the tables above place no <span class="emphasis"><em>throws</em></span> requirements on
  4614. an operation, then it is up to each type modelling this concept to decide
  4615. when or whether throwing an exception is desirable. However, thrown exceptions
  4616. should always either be the type, or inherit from the type <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">runtime_error</span></code>.
  4617. For example, a floating-point type might choose to throw <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">overflow_error</span></code>
  4618. whenever the result of an operation would be infinite, and <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">underflow_error</span></code>
  4619. whenever it would round to zero.
  4620. </p>
  4621. <div class="note"><table border="0" summary="Note">
  4622. <tr>
  4623. <td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../doc/src/images/note.png"></td>
  4624. <th align="left">Note</th>
  4625. </tr>
  4626. <tr><td align="left" valign="top"><p>
  4627. The non-member functions are all named with an "eval_" prefix
  4628. to avoid conflicts with template classes of the same name - in point of
  4629. fact this naming convention shouldn't be necessary, but rather works around
  4630. some compiler bugs.
  4631. </p></td></tr>
  4632. </table></div>
  4633. <h5>
  4634. <a name="boost_multiprecision.ref.backendconc.h0"></a>
  4635. <span class="phrase"><a name="boost_multiprecision.ref.backendconc.overloadable_functions"></a></span><a class="link" href="backendconc.html#boost_multiprecision.ref.backendconc.overloadable_functions">Overloadable
  4636. Functions</a>
  4637. </h5>
  4638. <p>
  4639. Some of the C99 math functions do not have <code class="computeroutput"><span class="identifier">eval_</span></code>
  4640. functions but must be overloaded directly: these functions are either trivial
  4641. or are forwarded to the Boost.Math implementations by default. The full list
  4642. of these functions is:
  4643. </p>
  4644. <pre class="programlisting"><span class="keyword">int</span> <span class="identifier">sign</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>number-or-expression-template-type</em></span><span class="special">&amp;);</span>
  4645. <span class="keyword">int</span> <span class="identifier">signbit</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>number-or-expression-template-type</em></span><span class="special">&amp;);</span>
  4646. <span class="emphasis"><em>number</em></span> <span class="identifier">changesign</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>number-or-expression-template-type</em></span><span class="special">&amp;);</span>
  4647. <span class="emphasis"><em>number</em></span> <span class="identifier">copysign</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>number-or-expression-template-type</em></span><span class="special">&amp;,</span> <span class="keyword">const</span> <span class="emphasis"><em>number-or-expression-template-type</em></span><span class="special">&amp;);</span>
  4648. <span class="emphasis"><em>number</em></span> <span class="identifier">asinh</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>number-or-expression-template-type</em></span><span class="special">&amp;);</span>
  4649. <span class="emphasis"><em>number</em></span> <span class="identifier">acosh</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>number-or-expression-template-type</em></span><span class="special">&amp;);</span>
  4650. <span class="emphasis"><em>number</em></span> <span class="identifier">atanh</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>number-or-expression-template-type</em></span><span class="special">&amp;);</span>
  4651. <span class="emphasis"><em>number</em></span> <span class="identifier">cbrt</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>number-or-expression-template-type</em></span><span class="special">&amp;);</span>
  4652. <span class="emphasis"><em>number</em></span> <span class="identifier">erf</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>number-or-expression-template-type</em></span><span class="special">&amp;);</span>
  4653. <span class="emphasis"><em>number</em></span> <span class="identifier">erfc</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>number-or-expression-template-type</em></span><span class="special">&amp;);</span>
  4654. <span class="emphasis"><em>number</em></span> <span class="identifier">expm1</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>number-or-expression-template-type</em></span><span class="special">&amp;);</span>
  4655. <span class="emphasis"><em>number</em></span> <span class="identifier">log1p</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>number-or-expression-template-type</em></span><span class="special">&amp;);</span>
  4656. <span class="emphasis"><em>number</em></span> <span class="identifier">tgamma</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>number-or-expression-template-type</em></span><span class="special">&amp;);</span>
  4657. <span class="emphasis"><em>number</em></span> <span class="identifier">lgamma</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>number-or-expression-template-type</em></span><span class="special">&amp;);</span>
  4658. <span class="keyword">long</span> <span class="identifier">lrint</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>number-or-expression-template-type</em></span><span class="special">&amp;);</span>
  4659. <span class="keyword">long</span> <span class="keyword">long</span> <span class="identifier">llrint</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>number-or-expression-template-type</em></span><span class="special">&amp;);</span>
  4660. <span class="emphasis"><em>number</em></span> <span class="identifier">nextafter</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>number-or-expression-template-type</em></span><span class="special">&amp;,</span> <span class="keyword">const</span> <span class="emphasis"><em>number-or-expression-template-type</em></span><span class="special">&amp;);</span>
  4661. <span class="emphasis"><em>number</em></span> <span class="identifier">nexttoward</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>number-or-expression-template-type</em></span><span class="special">&amp;,</span> <span class="keyword">const</span> <span class="emphasis"><em>number-or-expression-template-type</em></span><span class="special">&amp;);</span>
  4662. </pre>
  4663. </div>
  4664. <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
  4665. <td align="left"></td>
  4666. <td align="right"><div class="copyright-footer">Copyright &#169; 2002-2019 John Maddock
  4667. and Christopher Kormanyos<p>
  4668. Distributed under the Boost Software License, Version 1.0. (See accompanying
  4669. file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
  4670. </p>
  4671. </div></td>
  4672. </tr></table>
  4673. <hr>
  4674. <div class="spirit-nav">
  4675. <a accesskey="p" href="internals.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../ref.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="headers.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
  4676. </div>
  4677. </body>
  4678. </html>