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