/* Auto-generated file.  DO NOT EDIT, OR YOUR CHANGES WILL BE LOST!
   This file has been auto-generated by:
   $ JOBS=2 CC=avr-gcc-15 TIMES=100 BASE=libf7 ./gen-bench.sh A 1 B 2
*/

/**
\page benchmarks

\section bench_libf7 Math Functions for IEEE double from LibF7

The following tables contain benchmark values for some IEEE double
floating-point functions over the indicated range(s) of input values.
<a href="https://gcc.gnu.org/wiki/avr-gcc#Libf7">LibF7</a>
is a IEEE double implementation hosted by libgcc since
<a href="https://gcc.gnu.org/gcc-10/changes.html#avr">GCC v10</a>.

The code sizes include all dependencies with the exception of potential
prologue and epilogue routines
(\c __prologue_saves__, \c __epilogue_restores__).

The sizes of functions don't add up.
For example, #sinl, #cosl, #asinl, #acosl and #sqrtl together occupy
only 4744 bytes of code \e including the prologue and epilogue routines.
With \c -mrelax the code size reduces further to around 4400 bytes.

Notice that the values for relative error and the Worst Case Execution Time
Cycles<sub>max</sub> are only <em>lower bounds</em>.
The best achievable accuracy for IEEE double with its 52 fractional bits in
the mantissa is
{{{log<sub>10</sub>(2<sup>-53</sup> &asymp; 1.1*10<sup>-16</sup>) &asymp; -15.95}}}.

<table>
<caption>LibF7 Benchmarks for ATmega128 (avr51, with MUL)</caption>
  <tr>
  <th>Function
  <th>Size
  <th>x<sub>0</sub>
  <th>x<sub>1</sub>
  <th>Cycles<sub>avr</sub>
  <th>Cycles<sub>max</sub>
  <th>log<sub>10</sub>(Err<sub>max</sub>)
  <tr><td> \c #acosl <td align='right'> 3342 <td> -1 <td> 1 <td align="right"> 16235 <td align="right"> 17997 <td align="center"> -15.65
  <tr><td> \c #asinl <td align='right'> 3342 <td> -1 <td> 1 <td align="right"> 16124 <td align="right"> 18008 <td align="center"> -15.65
  <tr><td> \c #atanl <td align='right'> 2820 <td> -10 <td> 10 <td align="right"> 20363 <td align="right"> 21255 <td align="center"> -15.65
  <tr><td> \c #cbrtl <td align='right'> 4102 <td> -1e+06 <td> 1e+06 <td align="right"> 32368 <td align="right"> 33415 <td align="center"> -15.33
  <tr><td> \c #ceill <td align='right'> 1772 <td> -1e+05 <td> 1e+05 <td align="right"> 1430 <td align="right"> 1768 <td align="center"> -15.95
  <tr><td> \c #cosl <td align='right'> 3900 <td> -1.57 <td> 1.58 <td align="right"> 11241 <td align="right"> 13649 <td align="center"> -15.66
  <tr><td> \c #coshl <td align='right'> 3654 <td> -20 <td> 20 <td align="right"> 20036 <td align="right"> 21466 <td align="center"> -15.65
  <tr><td> \c #expl <td align='right'> 3562 <td> -20 <td> 20 <td align="right"> 16965 <td align="right"> 18417 <td align="center"> -15.65
  <tr><td> \c #floorl <td align='right'> 1710 <td> -1e+05 <td> 1e+05 <td align="right"> 1354 <td align="right"> 1690 <td align="center"> -15.95
  <tr><td> \c #frexpl <td align='right'> 1256 <td> -1e+05 <td> 1e+05 <td align="right"> 748 <td align="right"> 765 <td align="center"> -15.95
  <tr><td> \c #logl <td align='right'> 2944 <td> 0 <td> 100 <td align="right"> 15099 <td align="right"> 15825 <td align="center"> -15.65
  <tr><td> \c #log10l <td align='right'> 2954 <td> 0 <td> 100 <td align="right"> 15746 <td align="right"> 16437 <td align="center"> -15.59
  <tr><td> \c #log2l <td align='right'> 2954 <td> 0 <td> 100 <td align="right"> 15751 <td align="right"> 16418 <td align="center"> -15.65
  <tr><td> \c #roundl <td align='right'> 1796 <td> -1e+05 <td> 1e+05 <td align="right"> 1664 <td align="right"> 1760 <td align="center"> -15.95
  <tr><td> \c #sinl <td align='right'> 3898 <td> 0 <td> 3.15 <td align="right"> 11976 <td align="right"> 14028 <td align="center"> -15.65
  <tr><td> \c #sincosl <td align='right'> 3880 <td> -1.57 <td> 3.15 <td align="right"> 19913 <td align="right"> 22412 <td align="center"> -15.65
  <tr><td> \c #sinhl <td align='right'> 3862 <td> -20 <td> 20 <td align="right"> 19842 <td align="right"> 21536 <td align="center"> -15.51
  <tr><td> \c #sqrtl <td align='right'> 1410 <td> 0 <td> 1e+06 <td align="right"> 3009 <td align="right"> 3087 <td align="center"> -15.65
  <tr><td> \c #tanl <td align='right'> 3946 <td> 0 <td> 3.15 <td align="right"> 22448 <td align="right"> 24870 <td align="center"> -15.65
  <tr><td> \c #tanhl <td align='right'> 3678 <td> -20 <td> 20 <td align="right"> 20646 <td align="right"> 22347 <td align="center"> -14.70
  <tr><td> \c #truncl <td align='right'> 1710 <td> -1000 <td> 1000 <td align="right"> 1118 <td align="right"> 1173 <td align="center"> -15.95
</table>

&nbsp;
<table>
<caption>LibF7 Benchmarks for ATmega128 (avr51, with MUL)</caption>
  <tr>
  <th>Function
  <th>Size
  <th>x<sub>0</sub>
  <th>x<sub>1</sub>
  <th>y<sub>0</sub>
  <th>y<sub>1</sub>
  <th>Cycles<sub>avr</sub>
  <th>Cycles<sub>max</sub>
  <th>log<sub>10</sub>(Err<sub>max</sub>)
  <tr><td> \c + <td align='right'> 1470 <td> -1e+10 <td> 1e+10 <td> -1e+10 <td> 1e+10 <td align="right"> 1531 <td align="right"> 1667 <td align="center"> -15.95
  <tr><td> \c * <td align='right'> 1600 <td> -1e+10 <td> 1e+10 <td> -1e+10 <td> 1e+10 <td align="right"> 1620 <td align="right"> 1661 <td align="center"> -15.65
  <tr><td> \c / <td align='right'> 1572 <td> -1e+10 <td> 1e+10 <td> -1e+10 <td> 1e+10 <td align="right"> 3563 <td align="right"> 3756 <td align="center"> -15.65
  <tr><td> \c #atan2l <td align='right'> 3208 <td> -10 <td> 10 <td> -10 <td> 10 <td align="right"> 21115 <td align="right"> 22010 <td align="center"> -15.65
  <tr><td> \c #fdiml <td align='right'> 1730 <td> -1e+10 <td> 1e+10 <td> -1e+10 <td> 1e+10 <td align="right"> 1371 <td align="right"> 1802 <td align="center"> -15.95
  <tr><td> \c #fmaxl <td align='right'> 234 <td> -1e+10 <td> 1e+10 <td> -1e+10 <td> 1e+10 <td align="right"> 169 <td align="right"> 188 <td align="center"> -&infin;
  <tr><td> \c #fminl <td align='right'> 234 <td> -1e+10 <td> 1e+10 <td> -1e+10 <td> 1e+10 <td align="right"> 170 <td align="right"> 189 <td align="center"> -&infin;
  <tr><td> \c #fmodl <td align='right'> 2808 <td> -1e+10 <td> 1e+10 <td> -1e+10 <td> 1e+10 <td align="right"> 5175 <td align="right"> 5947 <td align="center"> -15.95
  <tr><td> \c #hypotl <td align='right'> 2312 <td> -1e+10 <td> 1e+10 <td> -1e+10 <td> 1e+10 <td align="right"> 5006 <td align="right"> 5166 <td align="center"> -15.66
  <tr><td> \c #ldexpl <td align='right'> 1254 <td> -1e+10 <td> 1e+10 <td> -10 <td> 10 <td align="right"> 738 <td align="right"> 756 <td align="center"> -15.95
  <tr><td> \c #powl <td align='right'> 4080 <td> 0 <td> 1e+04 <td> -10 <td> 10 <td align="right"> 32440 <td align="right"> 34066 <td align="center"> -14.46
  <tr><td> \c #__builtin_powil <td align='right'> 2224 <td> 0 <td> 1e+04 <td> -10 <td> 10 <td align="right"> 3396 <td align="right"> 6173 <td align="center"> -15.12
</table>
*/
