1<html> 2<head> 3<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 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 1. 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 its 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">&&</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 1.8. 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"><</span><span class="identifier">type</span><span class="special">-</span><span class="identifier">list</span><span class="special">></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 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"><</span><span class="identifier">type</span><span class="special">-</span><span class="identifier">list</span><span class="special">></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 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"><</span><span class="identifier">type</span><span class="special">-</span><span class="identifier">list</span><span class="special">></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 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 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 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 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">&</span></code> 245 </p> 246 </td> 247<td> 248 <p> 249 Assignment operator. 250 </p> 251 </td> 252<td> 253 <p> 254 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">&</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 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">&</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 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 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"><</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">></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"><</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">></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 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 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 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 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"><</span><span class="identifier">number</span><span class="special"><</span><span class="identifier">B</span><span class="special">></span> <span class="special">>::</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">&=</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 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 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 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 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"><<=</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 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">>>=</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 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 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 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 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 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 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 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 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"><</span><span class="identifier">B</span><span class="special">>::</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"><</span><span class="identifier">N</span><span class="special">></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 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 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 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 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 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 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 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 1.9. 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"> </td> 1146<td class="auto-generated"> </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">&</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 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 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">&</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 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 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 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"> </td> 1331<td class="auto-generated"> </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 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 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"><</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 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 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">></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 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 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"><</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">>::</span><span class="identifier">type</span></code>. 1586 </p> 1587 </td> 1588<td> 1589 <p> 1590 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 < zero if <code class="computeroutput"><span class="identifier">cb</span></code> 1608 is negative, a value > 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"><</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">>::</span><span class="identifier">type</span></code>. 1614 </p> 1615 </td> 1616<td> 1617 <p> 1618 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"> </td> 1629<td class="auto-generated"> </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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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"><</span><span class="identifier">number</span><span class="special"><</span><span class="identifier">B</span><span class="special">></span> 2224 <span class="special">>::</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"><</span><span class="identifier">number</span><span class="special"><</span><span class="identifier">B</span><span class="special">></span> 2255 <span class="special">>::</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"><</span><span class="identifier">number</span><span class="special"><</span><span class="identifier">B</span><span class="special">></span> 2287 <span class="special">>::</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"><</span><span class="identifier">number</span><span class="special"><</span><span class="identifier">B</span><span class="special">></span> <span class="special">>::</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"><</span><span class="identifier">ui_type</span><span class="special">>(</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"><</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">>::</span><span class="identifier">type</span></code>. 2342 </p> 2343 </td> 2344<td> 2345 <p> 2346 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"><</span><span class="identifier">ui_type</span><span class="special">>(</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"><</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">>::</span><span class="identifier">type</span></code>. 2369 </p> 2370 </td> 2371<td> 2372 <p> 2373 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"> </td> 2384<td class="auto-generated"> </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">&=</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 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">&</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 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">&</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 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">&</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 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 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 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 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 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 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 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 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 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"><<</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 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">>></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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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"> </td> 3442<td class="auto-generated"> </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"><</span> 3464 <span class="number">0</span></code>. 3465 </p> 3466 </td> 3467<td> 3468 <p> 3469 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"><</span> 3493 <span class="number">0</span></code>. 3494 </p> 3495 </td> 3496<td> 3497 <p> 3498 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"> </td> 3509<td class="auto-generated"> </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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 <= 4132 cb*r<sup>-e</sup> < 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">></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">></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">></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 <= cb*r<sup>-b</sup> < 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"> </td> 4588<td class="auto-generated"> </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">&);</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">&);</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">&);</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">&,</span> <span class="keyword">const</span> <span class="emphasis"><em>number-or-expression-template-type</em></span><span class="special">&);</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">&);</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">&);</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">&);</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">&);</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">&);</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">&);</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">&);</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">&);</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">&);</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">&);</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">&);</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">&);</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">&,</span> <span class="keyword">const</span> <span class="emphasis"><em>number-or-expression-template-type</em></span><span class="special">&);</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">&,</span> <span class="keyword">const</span> <span class="emphasis"><em>number-or-expression-template-type</em></span><span class="special">&);</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 © 2002-2020 John 4667 Maddock 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> 4679