.. Copyright (c) 2016, Johan Mabille, Sylvain Corlay

   Distributed under the terms of the BSD 3-Clause License.

   The full license is in the file LICENSE, distributed with this software.

.. raw:: html

   <style>
   .rst-content table.docutils {
       width: 100%;
       table-layout: fixed;
   }

   table.docutils .line-block {
       margin-left: 0;
       margin-bottom: 0;
   }

   table.docutils code.literal {
       color: initial;
   }

   code.docutils {
       background: initial;
   }
   </style>


Mathematical Functions
======================

Basic functions:

+---------------------------------------+----------------------------------------------------+
| :cpp:func:`abs`                       | absolute value                                     |
+---------------------------------------+----------------------------------------------------+
| :cpp:func:`fabs`                      | absolute value of floating point values            |
+---------------------------------------+----------------------------------------------------+
| :cpp:func:`fmod`                      | remainder of the floating point division operation |
+---------------------------------------+----------------------------------------------------+
| :cpp:func:`remainder`                 | signed remainder of the division operation         |
+---------------------------------------+----------------------------------------------------+
| :cpp:func:`min`                       | smaller of two batches                             |
+---------------------------------------+----------------------------------------------------+
| :cpp:func:`max`                       | larger of two batches                              |
+---------------------------------------+----------------------------------------------------+
| :cpp:func:`fmin`                      | smaller of two batches of floating point values    |
+---------------------------------------+----------------------------------------------------+
| :cpp:func:`fmax`                      | larger of two batches of floating point values     |
+---------------------------------------+----------------------------------------------------+
| :cpp:func:`fdim`                      | positive difference                                |
+---------------------------------------+----------------------------------------------------+
| :cpp:func:`clip`                      | clipping operation                                 |
+---------------------------------------+----------------------------------------------------+

Exponential functions:

+---------------------------------------+----------------------------------------------------+
| :cpp:func:`exp`                       | natural exponential function                       |
+---------------------------------------+----------------------------------------------------+
| :cpp:func:`exp2`                      | base 2 exponential function                        |
+---------------------------------------+----------------------------------------------------+
| :cpp:func:`exp10`                     | base 10 exponential function                       |
+---------------------------------------+----------------------------------------------------+
| :cpp:func:`expm1`                     | natural exponential function, minus one            |
+---------------------------------------+----------------------------------------------------+
| :cpp:func:`log`                       | natural logarithm function                         |
+---------------------------------------+----------------------------------------------------+
| :cpp:func:`log2`                      | base 2 logarithm function                          |
+---------------------------------------+----------------------------------------------------+
| :cpp:func:`log10`                     | base 10 logarithm function                         |
+---------------------------------------+----------------------------------------------------+
| :cpp:func:`log1p`                     | natural logarithm of one plus function             |
+---------------------------------------+----------------------------------------------------+

Power functions:

+-----------------------------------------+----------------------------------------------------+
| :cpp:func:`pow`                         | power function                                     |
+-----------------------------------------+----------------------------------------------------+
| :cpp:func:`rsqrt`                       | reciprocal square root function                    |
+-----------------------------------------+----------------------------------------------------+
| :cpp:func:`sqrt`                        | square root function                               |
+-----------------------------------------+----------------------------------------------------+
| :cpp:func:`cbrt`                        | cubic root function                                |
+-----------------------------------------+----------------------------------------------------+
| :cpp:func:`hypot`                       | hypotenuse function                                |
+-----------------------------------------+----------------------------------------------------+

Trigonometric functions:

+---------------------------------------+----------------------------------------------------+
| :cpp:func:`sin`                       | sine function                                      |
+---------------------------------------+----------------------------------------------------+
| :cpp:func:`cos`                       | cosine function                                    |
+---------------------------------------+----------------------------------------------------+
| :cpp:func:`sincos`                    | sine and cosine function                           |
+---------------------------------------+----------------------------------------------------+
| :cpp:func:`tan`                       | tangent function                                   |
+---------------------------------------+----------------------------------------------------+
| :cpp:func:`asin`                      | arc sine function                                  |
+---------------------------------------+----------------------------------------------------+
| :cpp:func:`acos`                      | arc cosine function                                |
+---------------------------------------+----------------------------------------------------+
| :cpp:func:`atan`                      | arc tangent function                               |
+---------------------------------------+----------------------------------------------------+
| :cpp:func:`atan2`                     | arc tangent function, determining quadrants        |
+---------------------------------------+----------------------------------------------------+

Hyperbolic functions:

+---------------------------------------+----------------------------------------------------+
| :cpp:func:`sinh`                      | hyperbolic sine function                           |
+---------------------------------------+----------------------------------------------------+
| :cpp:func:`cosh`                      | hyperbolic cosine function                         |
+---------------------------------------+----------------------------------------------------+
| :cpp:func:`tanh`                      | hyperbolic tangent function                        |
+---------------------------------------+----------------------------------------------------+
| :cpp:func:`asinh`                     | inverse hyperbolic sine function                   |
+---------------------------------------+----------------------------------------------------+
| :cpp:func:`acosh`                     | inverse hyperbolic cosine function                 |
+---------------------------------------+----------------------------------------------------+
| :cpp:func:`atanh`                     | inverse hyperbolic tangent function                |
+---------------------------------------+----------------------------------------------------+

Error functions:

+---------------------------------------+----------------------------------------------------+
| :cpp:func:`erf`                       | error function                                     |
+---------------------------------------+----------------------------------------------------+
| :cpp:func:`erfc`                      | complementary error function                       |
+---------------------------------------+----------------------------------------------------+
| :cpp:func:`tgamma`                    | gamma function                                     |
+---------------------------------------+----------------------------------------------------+
| :cpp:func:`lgamma`                    | natural logarithm of the gamma function            |
+---------------------------------------+----------------------------------------------------+

Nearint operations:

+---------------------------------------+----------------------------------------------------+
| :cpp:func:`ceil`                      | nearest integers not less                          |
+---------------------------------------+----------------------------------------------------+
| :cpp:func:`floor`                     | nearest integers not greater                       |
+---------------------------------------+----------------------------------------------------+
| :cpp:func:`trunc`                     | nearest integers not greater in magnitude          |
+---------------------------------------+----------------------------------------------------+
| :cpp:func:`round`                     | nearest integers, rounding away from zero          |
+---------------------------------------+----------------------------------------------------+
| :cpp:func:`nearbyint`                 | nearest integers using current rounding mode       |
+---------------------------------------+----------------------------------------------------+
| :cpp:func:`rint`                      | nearest integers using current rounding mode       |
+---------------------------------------+----------------------------------------------------+


----

.. doxygengroup:: batch_math
   :project: xsimd
   :content-only:

.. doxygengroup:: batch_trigo
   :project: xsimd
   :content-only:

.. doxygengroup:: batch_rounding
   :project: xsimd
   :content-only:

.. doxygengroup:: batch_math_extra
   :project: xsimd
   :content-only:
