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