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