SLEEF - Math library reference (scalar)

# SLEEF - Math library reference

## Table of contents

- Introduction
- Compiling and installing the library
- Math library reference
  - Data types and functions for all architectures
  - Function naming convention
  - Data types
  - Trigonometric functions
  - Power, exponential, and logarithmic functions
  - Inverse trigonometric functions
  - Hyperbolic functions and inverse hyperbolic functions
  - Error and gamma functions
  - Nearest integer functions
  - Other functions
  - Data types and functions for x86 architecture
  - Data types and functions for AArch64 architecture
  - Data types and functions for PPC64 architecture
  - Data types and functions for System/390 architecture
  - Data types and functions for CUDA
- Quad-precision math library reference
- DFT library reference
- Other tools included in the package
- Benchmark results
- Additional notes

## Function naming convention

The functions whose names end with "purecfma" and "purec" are implemented with and without using FMA instructions, respectively. Functions with FMA instructions are only available on architectures with FMA instructions. The two digits number after "_u" is 10 times the maximum error for typical input domain in ULP. The functions whose names contain "finz" and "cinz" are functions that give bit-wise consistent results across all platforms. The "f" attribute indicates that it utilizes FMA instructions, while "c" means no FMA.

## Data types

Sleef_double2

Description

Sleef_double2 is a generic data type for storing two double-precision floating point values, which is defined in <sleef.h> as follows:

    typedef struct {
          double x, y;
    } Sleef_double2;

Sleef_float2

Description

Sleef_float2 is a generic data type for storing two single-precision floating point values, which is defined in <sleef.h> as follows:

    typedef struct {
          float x, y;
    } Sleef_float2;

## Trigonometric Functions

Sleef_sin_u10, Sleef_sinf_u10 - sine functions with 1.0 ULP error bound

Synopsis

#include <sleef.h>
double Sleef_sin_u10(double a);
float Sleef_sinf_u10(float a);
double Sleef_sind1_u10(double a);
double Sleef_sind1_u10purec(double a);
double Sleef_sind1_u10purecfma(double a);
double Sleef_cinz_sind1_u10purec(double a);
double Sleef_finz_sind1_u10purecfma(double a);
float Sleef_sinf1_u10(float a);
float Sleef_sinf1_u10purec(float a);
float Sleef_sinf1_u10purecfma(float a);
float Sleef_cinz_sinf1_u10purec(float a);
float Sleef_finz_sinf1_u10purecfma(float a);
Link with -lsleef.

Description

These functions evaluate the sine function of a value in a. The error bound of the returned value is 1.0 ULP. These functions treat the non-number arguments and return non-numbers as specified in the C99 specification. These functions do not set errno nor raise an exception.

Sleef_sin_u35, Sleef_sinf_u35 - sine functions with 3.5 ULP error bound

Synopsis

#include <sleef.h>
double Sleef_sin_u35(double a);
float Sleef_sinf_u35(float a);
double Sleef_sind1_u35(double a);
double Sleef_sind1_u35purec(double a);
double Sleef_sind1_u35purecfma(double a);
double Sleef_cinz_sind1_u35purec(double a);
double Sleef_finz_sind1_u35purecfma(double a);
float Sleef_sinf1_u35(float a);
float Sleef_sinf1_u35purec(float a);
float Sleef_sinf1_u35purecfma(float a);
float Sleef_cinz_sinf1_u35purec(float a);
float Sleef_finz_sinf1_u35purecfma(float a);
Link with -lsleef.

Description

These functions evaluate the sine function of a value in a. The error bound of the returned value is 3.5 ULP. These functions treat the non-number arguments and return non-numbers as specified in the C99 specification. These functions do not set errno nor raise an exception.

Sleef_cos_u10, Sleef_cosf_u10 - cosine functions with 1.0 ULP error bound

Synopsis

#include <sleef.h>
double Sleef_cos_u10(double a);
float Sleef_cosf_u10(float a);
double Sleef_cosd1_u10(double a);
double Sleef_cosd1_u10purec(double a);
double Sleef_cosd1_u10purecfma(double a);
double Sleef_cinz_cosd1_u10purec(double a);
double Sleef_finz_cosd1_u10purecfma(double a);
float Sleef_cosf1_u10(float a);
float Sleef_cosf1_u10purec(float a);
float Sleef_cosf1_u10purecfma(float a);
float Sleef_cinz_cosf1_u10purec(float a);
float Sleef_finz_cosf1_u10purecfma(float a);
Link with -lsleef.

Description

These functions evaluate the cosine function of a value in a. The error bound of the returned value is 1.0 ULP. These functions treat the non-number arguments and return non-numbers as specified in the C99 specification. These functions do not set errno nor raise an exception.

Sleef_cos_u35, Sleef_cosf_u35 - cosine functions with 3.5 ULP error bound

Synopsis

#include <sleef.h>
double Sleef_cos_u35(double a);
float Sleef_cosf_u35(float a);
double Sleef_cosd1_u35(double a);
double Sleef_cosd1_u35purec(double a);
double Sleef_cosd1_u35purecfma(double a);
double Sleef_cinz_cosd1_u35purec(double a);
double Sleef_finz_cosd1_u35purecfma(double a);
float Sleef_cosf1_u35(float a);
float Sleef_cosf1_u35purec(float a);
float Sleef_cosf1_u35purecfma(float a);
float Sleef_cinz_cosf1_u35purec(float a);
float Sleef_finz_cosf1_u35purecfma(float a);
Link with -lsleef.

Description

These functions evaluate the cosine function of a value in a. The error bound of the returned value is 3.5 ULP. These functions treat the non-number arguments and return non-numbers as specified in the C99 specification. These functions do not set errno nor raise an exception.

Sleef_sincos_u10, Sleef_sincosf_u10 - evaluate sine and cosine functions simultaneously with 1.0 ULP error bound

Synopsis

#include <sleef.h>
Sleef_double2 Sleef_sincos_u10(double a)
Sleef_float2 Sleef_sincosf_u10(float a)
Sleef_double2 Sleef_sincosd1_u10(double a);
Sleef_double2 Sleef_sincosd1_u10purec(double a);
Sleef_double2 Sleef_sincosd1_u10purecfma(double a);
Sleef_double2 Sleef_cinz_sincosd1_u10purec(double a);
Sleef_double2 Sleef_finz_sincosd1_u10purecfma(double a);
Sleef_float2 Sleef_sincosf1_u10(float a);
Sleef_float2 Sleef_sincosf1_u10purec(float a);
Sleef_float2 Sleef_sincosf1_u10purecfma(float a);
Sleef_float2 Sleef_cinz_sincosf1_u10purec(float a);
Sleef_float2 Sleef_finz_sincosf1_u10purecfma(float a);
Link with -lsleef.

Description

Evaluates the sine and cosine functions of a value in a at a time, and store the two values in x and y elements in the returned value, respectively. The error bound of the returned values is 1.0 ULP. If a is a NaN or infinity, a NaN is returned.

Sleef_sincos_u35, Sleef_sincosf_u35 - evaluate sine and cosine functions simultaneously with 3.5 ULP error bound

Synopsis

#include <sleef.h>
Sleef_double2 Sleef_sincos_u35(double a)
Sleef_float2 Sleef_sincosf_u35(float a)
Sleef_double2 Sleef_sincosd1_u35(double a);
Sleef_double2 Sleef_sincosd1_u35purec(double a);
Sleef_double2 Sleef_sincosd1_u35purecfma(double a);
Sleef_double2 Sleef_cinz_sincosd1_u35purec(double a);
Sleef_double2 Sleef_finz_sincosd1_u35purecfma(double a);
Sleef_float2 Sleef_sincosf1_u35(float a);
Sleef_float2 Sleef_sincosf1_u35purec(float a);
Sleef_float2 Sleef_sincosf1_u35purecfma(float a);
Sleef_float2 Sleef_cinz_sincosf1_u35purec(float a);
Sleef_float2 Sleef_finz_sincosf1_u35purecfma(float a);
Link with -lsleef.

Description

Evaluates the sine and cosine functions of a value in a at a time, and store the two values in x and y elements in the returned value, respectively. The error bound of the returned values is 3.5 ULP. If a is a NaN or infinity, a NaN is returned.

Sleef_sincospi_u05, Sleef_sincospif_u05, Sleef_sincospil_u05 - evaluate sin( πa ) and cos( πa ) for given a simultaneously with 0.506 ULP error bound

Synopsis

#include <sleef.h>
Sleef_double2 Sleef_sincospi_u05(double a)
Sleef_float2 Sleef_sincospif_u05(float a)
Sleef_double2 Sleef_sincospid1_u05(double a);
Sleef_double2 Sleef_sincospid1_u05purec(double a);
Sleef_double2 Sleef_sincospid1_u05purecfma(double a);
Sleef_double2 Sleef_cinz_sincospid1_u05purec(double a);
Sleef_double2 Sleef_finz_sincospid1_u05purecfma(double a);
Sleef_float2 Sleef_sincospif1_u05(float a);
Sleef_float2 Sleef_sincospif1_u05purec(float a);
Sleef_float2 Sleef_sincospif1_u05purecfma(float a);
Sleef_float2 Sleef_cinz_sincospif1_u05purec(float a);
Sleef_float2 Sleef_finz_sincospif1_u05purecfma(float a);
Link with -lsleef.

Description

Evaluates the sine and cosine functions of πa at a time, and store the two values in x and y elements in the returned value, respectively. The error bound of the returned value are max(0.506 ULP, DBL_MIN) if a is in [-1e+9, 1e+9] for double-precision function, or max(0.506 ULP, FLT_MIN) if [-1e+7, 1e+7] for the single-precision function. If a is a finite value out of this range, an arbitrary value within [-1, 1] is returned. If a is a NaN or infinity, a NaN is returned.

Sleef_sincospi_u35, Sleef_sincospif_u35, Sleef_sincospil_u35 - evaluate sin( πa ) and cos( πa ) for given a simultaneously with 3.5 ULP error bound

Synopsis

#include <sleef.h>
Sleef_double2 Sleef_sincospi_u35(double a)
Sleef_float2 Sleef_sincospif_u35(float a)
Sleef_double2 Sleef_sincospid1_u35(double a);
Sleef_double2 Sleef_sincospid1_u35purec(double a);
Sleef_double2 Sleef_sincospid1_u35purecfma(double a);
Sleef_double2 Sleef_cinz_sincospid1_u35purec(double a);
Sleef_double2 Sleef_finz_sincospid1_u35purecfma(double a);
Sleef_float2 Sleef_sincospif1_u35(float a);
Sleef_float2 Sleef_sincospif1_u35purec(float a);
Sleef_float2 Sleef_sincospif1_u35purecfma(float a);
Sleef_float2 Sleef_cinz_sincospif1_u35purec(float a);
Sleef_float2 Sleef_finz_sincospif1_u35purecfma(float a);
Link with -lsleef.

Description

Evaluates the sine and cosine functions of πa at a time, and store the two values in x and y elements in the returned value, respectively. The error bound of the returned values is 3.5 ULP if a is in [-1e+9, 1e+9] for double-precision function or [-1e+7, 1e+7] for the single-precision function. If a is a finite value out of this range, an arbitrary value within [-1, 1] is returned. If a is a NaN or infinity, a NaN is returned.

Sleef_sinpi_u05, Sleef_sinpif_u05 - evaluate sin( πa ) for given a with 0.506 ULP error bound

Synopsis

#include <sleef.h>
double Sleef_sinpi_u05(double a);
float Sleef_sinpif_u05(float a);
double Sleef_sinpid1_u05(double a);
double Sleef_sinpid1_u05purec(double a);
double Sleef_sinpid1_u05purecfma(double a);
double Sleef_cinz_sinpid1_u05purec(double a);
double Sleef_finz_sinpid1_u05purecfma(double a);
float Sleef_sinpif1_u05(float a);
float Sleef_sinpif1_u05purec(float a);
float Sleef_sinpif1_u05purecfma(float a);
float Sleef_cinz_sinpif1_u05purec(float a);
float Sleef_finz_sinpif1_u05purecfma(float a);
Link with -lsleef.

Description

These functions evaluate the sine functions of πa . The error bound of the returned value are max(0.506 ULP, DBL_MIN) if a is in [-1e+9, 1e+9] for double-precision function, or max(0.506 ULP, FLT_MIN) if [-1e+7, 1e+7] for the single-precision function. If a is a finite value out of this range, an arbitrary value within [-1, 1] is returned. If a is a NaN or infinity, a NaN is returned.

Sleef_cospi_u05, Sleef_cospif_u05 - evaluate cos( πa ) for given a with 0.506 ULP error bound

Synopsis

#include <sleef.h>
double Sleef_cospi_u05(double a);
float Sleef_cospif_u05(float a);
double Sleef_cospid1_u05(double a);
double Sleef_cospid1_u05purec(double a);
double Sleef_cospid1_u05purecfma(double a);
double Sleef_cinz_cospid1_u05purec(double a);
double Sleef_finz_cospid1_u05purecfma(double a);
float Sleef_cospif1_u05(float a);
float Sleef_cospif1_u05purec(float a);
float Sleef_cospif1_u05purecfma(float a);
float Sleef_cinz_cospif1_u05purec(float a);
float Sleef_finz_cospif1_u05purecfma(float a);
Link with -lsleef.

Description

These functions evaluate the cosine functions of πa . The error bound of the returned value are max(0.506 ULP, DBL_MIN) if a is in [-1e+9, 1e+9] for double-precision function, or max(0.506 ULP, FLT_MIN) if [-1e+7, 1e+7] for the single-precision function. If a is a finite value out of this range, an arbitrary value within [-1, 1] is returned. If a is a NaN or infinity, a NaN is returned.

Sleef_tan_u10, Sleef_tanf_u10 - tangent functions with 1.0 ULP error bound

Synopsis

#include <sleef.h>
double Sleef_tan_u10(double a);
float Sleef_tanf_u10(float a);
double Sleef_tand1_u10(double a);
double Sleef_tand1_u10purec(double a);
double Sleef_tand1_u10purecfma(double a);
double Sleef_cinz_tand1_u10purec(double a);
double Sleef_finz_tand1_u10purecfma(double a);
float Sleef_tanf1_u10(float a);
float Sleef_tanf1_u10purec(float a);
float Sleef_tanf1_u10purecfma(float a);
float Sleef_cinz_tanf1_u10purec(float a);
float Sleef_finz_tanf1_u10purecfma(float a);
Link with -lsleef.

Description

These functions evaluate the tangent function of a value in a. The error bound of the returned value is 1.0 ULP. These functions treat the non-number arguments and return non-numbers as specified in the C99 specification. These functions do not set errno nor raise an exception.

Sleef_tan_u35, Sleef_tanf_u35 - tangent functions with 3.5 ULP error bound

Synopsis

#include <sleef.h>
double Sleef_tan_u35(double a);
float Sleef_tanf_u35(float a);
double Sleef_tand1_u35(double a);
double Sleef_tand1_u35purec(double a);
double Sleef_tand1_u35purecfma(double a);
double Sleef_cinz_tand1_u35purec(double a);
double Sleef_finz_tand1_u35purecfma(double a);
float Sleef_tanf1_u35(float a);
float Sleef_tanf1_u35purec(float a);
float Sleef_tanf1_u35purecfma(float a);
float Sleef_cinz_tanf1_u35purec(float a);
float Sleef_finz_tanf1_u35purecfma(float a);
Link with -lsleef.

Description

These functions evaluate the tangent function of a value in a. The error bound of the returned value is 3.5 ULP. These functions treat the non-number arguments and return non-numbers as specified in the C99 specification. These functions do not set errno nor raise an exception.

## Power, exponential, and logarithmic functions

Sleef_pow_u10, Sleef_powf_u10 - power functions

Synopsis

#include <sleef.h>
double Sleef_pow_u10(double x, double y);
float Sleef_powf_u10(float x, float y);
double Sleef_powd1_u10(double a, double b);
double Sleef_powd1_u10purec(double a, double b);
double Sleef_powd1_u10purecfma(double a, double b);
double Sleef_cinz_powd1_u10purec(double a, double b);
double Sleef_finz_powd1_u10purecfma(double a, double b);
float Sleef_powf1_u10(float a, float b);
float Sleef_powf1_u10purec(float a, float b);
float Sleef_powf1_u10purecfma(float a, float b);
float Sleef_cinz_powf1_u10purec(float a, float b);
float Sleef_finz_powf1_u10purecfma(float a, float b);
Link with -lsleef.

Description

These functions return the value of x raised to the power of y. The error bound of the returned value is 1.0 ULP. These functions treat the non-number arguments and return non-numbers as specified in the C99 specification. These functions do not set errno nor raise an exception.

Sleef_log_u10, Sleef_logf_u10 - natural logarithmic functions with 1.0 ULP error bound

Synopsis

#include <sleef.h>
double Sleef_log_u10(double a);
float Sleef_logf_u10(float a);
double Sleef_logd1_u10(double a);
double Sleef_logd1_u10purec(double a);
double Sleef_logd1_u10purecfma(double a);
double Sleef_cinz_logd1_u10purec(double a);
double Sleef_finz_logd1_u10purecfma(double a);
float Sleef_logf1_u10(float a);
float Sleef_logf1_u10purec(float a);
float Sleef_logf1_u10purecfma(float a);
float Sleef_cinz_logf1_u10purec(float a);
float Sleef_finz_logf1_u10purecfma(float a);
Link with -lsleef.

Description

These functions return the natural logarithm of a. The error bound of the returned value is 1.0 ULP. These functions treat the non-number arguments and return non-numbers as specified in the C99 specification. These functions do not set errno nor raise an exception.

Sleef_log_u35, Sleef_logf_u35 - natural logarithmic functions with 3.5 ULP error bound

Synopsis

#include <sleef.h>
double Sleef_log_u35(double a);
float Sleef_logf_u35(float a);
double Sleef_logd1_u35(double a);
double Sleef_logd1_u35purec(double a);
double Sleef_logd1_u35purecfma(double a);
double Sleef_cinz_logd1_u35purec(double a);
double Sleef_finz_logd1_u35purecfma(double a);
float Sleef_logf1_u35(float a);
float Sleef_logf1_u35purec(float a);
float Sleef_logf1_u35purecfma(float a);
float Sleef_cinz_logf1_u35purec(float a);
float Sleef_finz_logf1_u35purecfma(float a);
Link with -lsleef.

Description

These functions return the natural logarithm of a. The error bound of the returned value is 3.5 ULP. These functions treat the non-number arguments and return non-numbers as specified in the C99 specification. These functions do not set errno nor raise an exception.

Sleef_log10_u10, Sleef_log10f_u10 - base-10 logarithmic functions

Synopsis

#include <sleef.h>
double Sleef_log10_u10(double a);
float Sleef_log10f_u10(float a);
double Sleef_log10d1_u10(double a);
double Sleef_log10d1_u10purec(double a);
double Sleef_log10d1_u10purecfma(double a);
double Sleef_cinz_log10d1_u10purec(double a);
double Sleef_finz_log10d1_u10purecfma(double a);
float Sleef_log10f1_u10(float a);
float Sleef_log10f1_u10purec(float a);
float Sleef_log10f1_u10purecfma(float a);
float Sleef_cinz_log10f1_u10purec(float a);
float Sleef_finz_log10f1_u10purecfma(float a);
Link with -lsleef.

Description

These functions return the base-10 logarithm of a. The error bound of the returned value is 1.0 ULP. These functions treat the non-number arguments and return non-numbers as specified in the C99 specification. These functions do not set errno nor raise an exception.

Sleef_log2_u10, Sleef_log2f_u10 - base-2 logarithmic functions

Synopsis

#include <sleef.h>
double Sleef_log2_u10(double a);
float Sleef_log2f_u10(float a);
double Sleef_log2d1_u10(double a);
double Sleef_log2d1_u10purec(double a);
double Sleef_log2d1_u10purecfma(double a);
double Sleef_cinz_log2d1_u10purec(double a);
double Sleef_finz_log2d1_u10purecfma(double a);
float Sleef_log2f1_u10(float a);
float Sleef_log2f1_u10purec(float a);
float Sleef_log2f1_u10purecfma(float a);
float Sleef_cinz_log2f1_u10purec(float a);
float Sleef_finz_log2f1_u10purecfma(float a);
Link with -lsleef.

Description

These functions return the base-2 logarithm of a. The error bound of the returned value is 1.0 ULP. These functions treat the non-number arguments and return non-numbers as specified in the C99 specification. These functions do not set errno nor raise an exception.

Sleef_log1p_u10, Sleef_log1pf_u10 - logarithm of one plus argument

Synopsis

#include <sleef.h>
double Sleef_log1p_u10(double a);
float Sleef_log1pf_u10(float a);
double Sleef_log1pd1_u10(double a);
double Sleef_log1pd1_u10purec(double a);
double Sleef_log1pd1_u10purecfma(double a);
double Sleef_cinz_log1pd1_u10purec(double a);
double Sleef_finz_log1pd1_u10purecfma(double a);
float Sleef_log1pf1_u10(float a);
float Sleef_log1pf1_u10purec(float a);
float Sleef_log1pf1_u10purecfma(float a);
float Sleef_cinz_log1pf1_u10purec(float a);
float Sleef_finz_log1pf1_u10purecfma(float a);
Link with -lsleef.

Description

These functions return the natural logarithm of (1+a). The error bound of the returned value is 1.0 ULP. These functions treat the non-number arguments and return non-numbers as specified in the C99 specification. These functions do not set errno nor raise an exception.

Sleef_exp_u10, Sleef_expf_u10 - base-e exponential functions

Synopsis

#include <sleef.h>
double Sleef_exp_u10(double a);
float Sleef_expf_u10(float a);
double Sleef_expd1_u10(double a);
double Sleef_expd1_u10purec(double a);
double Sleef_expd1_u10purecfma(double a);
double Sleef_cinz_expd1_u10purec(double a);
double Sleef_finz_expd1_u10purecfma(double a);
float Sleef_expf1_u10(float a);
float Sleef_expf1_u10purec(float a);
float Sleef_expf1_u10purecfma(float a);
float Sleef_cinz_expf1_u10purec(float a);
float Sleef_finz_expf1_u10purecfma(float a);
Link with -lsleef.

Description

These functions return the value of e raised to a. The error bound of the returned value is 1.0 ULP. These functions treat the non-number arguments and return non-numbers as specified in the C99 specification. These functions do not set errno nor raise an exception.

Sleef_exp2_u10, Sleef_exp2f_u10 - base-2 exponential functions

Synopsis

#include <sleef.h>
double Sleef_exp2_u10(double a);
float Sleef_exp2f_u10(float a);
double Sleef_exp2d1_u10(double a);
double Sleef_exp2d1_u10purec(double a);
double Sleef_exp2d1_u10purecfma(double a);
double Sleef_cinz_exp2d1_u10purec(double a);
double Sleef_finz_exp2d1_u10purecfma(double a);
float Sleef_exp2f1_u10(float a);
float Sleef_exp2f1_u10purec(float a);
float Sleef_exp2f1_u10purecfma(float a);
float Sleef_cinz_exp2f1_u10purec(float a);
float Sleef_finz_exp2f1_u10purecfma(float a);
Link with -lsleef.

Description

These functions return 2 raised to a. The error bound of the returned value is 1.0 ULP. These functions treat the non-number arguments and return non-numbers as specified in the C99 specification. These functions do not set errno nor raise an exception.

Sleef_exp10_u10, Sleef_exp10f_u10 - base-10 exponential functions

Synopsis

#include <sleef.h>
double Sleef_exp10_u10(double a);
float Sleef_exp10f_u10(float a);
double Sleef_exp10d1_u10(double a);
double Sleef_exp10d1_u10purec(double a);
double Sleef_exp10d1_u10purecfma(double a);
double Sleef_cinz_exp10d1_u10purec(double a);
double Sleef_finz_exp10d1_u10purecfma(double a);
float Sleef_exp10f1_u10(float a);
float Sleef_exp10f1_u10purec(float a);
float Sleef_exp10f1_u10purecfma(float a);
float Sleef_cinz_exp10f1_u10purec(float a);
float Sleef_finz_exp10f1_u10purecfma(float a);
Link with -lsleef.

Description

These functions return 10 raised to a. The error bound of the returned value is 1.09 ULP. These functions treat the non-number arguments and return non-numbers as specified in the C99 specification. These functions do not set errno nor raise an exception.

Sleef_expm1_u10, Sleef_expm1f_u10 - base-e exponential functions minus 1

Synopsis

#include <sleef.h>
double Sleef_expm1_u10(double a);
float Sleef_expm1f_u10(float a);
double Sleef_expm1d1_u10(double a);
double Sleef_expm1d1_u10purec(double a);
double Sleef_expm1d1_u10purecfma(double a);
double Sleef_cinz_expm1d1_u10purec(double a);
double Sleef_finz_expm1d1_u10purecfma(double a);
float Sleef_expm1f1_u10(float a);
float Sleef_expm1f1_u10purec(float a);
float Sleef_expm1f1_u10purecfma(float a);
float Sleef_cinz_expm1f1_u10purec(float a);
float Sleef_finz_expm1f1_u10purecfma(float a);
Link with -lsleef.

Description

These functions return the value one less than e raised to a. The error bound of the returned value is 1.0 ULP. These functions treat the non-number arguments and return non-numbers as specified in the C99 specification. These functions do not set errno nor raise an exception.

Sleef_sqrt_u05, Sleef_sqrtf_u05 - square root function with 0.5001 ULP error bound

Synopsis

#include <sleef.h>
double Sleef_sqrt_u05(double x);
float Sleef_sqrtf_u05(float x);
double Sleef_sqrtd1_u05(double a);
double Sleef_sqrtd1_u05purec(double a);
double Sleef_sqrtd1_u05purecfma(double a);
double Sleef_cinz_sqrtd1_u05purec(double a);
double Sleef_finz_sqrtd1_u05purecfma(double a);
float Sleef_sqrtf1_u05(float a);
float Sleef_sqrtf1_u05purec(float a);
float Sleef_sqrtf1_u05purecfma(float a);
float Sleef_cinz_sqrtf1_u05purec(float a);
float Sleef_finz_sqrtf1_u05purecfma(float a);
Link with -lsleef.

Description

These functions return the value as specified in the C99 specification of sqrt and sqrtf functions. The error bound of the returned value is 0.5001 ULP. These functions do not set errno nor raise an exception.

Sleef_sqrtf_u35 - square root function with 3.5 ULP error bound

Synopsis

#include <sleef.h>
double Sleef_sqrt_u35(double x);
float Sleef_sqrtf_u35(float x);
double Sleef_sqrtd1_u35(double a);
double Sleef_sqrtd1_u35purec(double a);
double Sleef_sqrtd1_u35purecfma(double a);
double Sleef_cinz_sqrtd1_u35purec(double a);
double Sleef_finz_sqrtd1_u35purecfma(double a);
float Sleef_sqrtf1_u35(float a);
float Sleef_sqrtf1_u35purec(float a);
float Sleef_sqrtf1_u35purecfma(float a);
float Sleef_cinz_sqrtf1_u35purec(float a);
float Sleef_finz_sqrtf1_u35purecfma(float a);
Link with -lsleef.

Description

These functions return the value as specified in the C99 specification of sqrt and sqrtf functions. The error bound of the returned value is 3.5 ULP. These functions do not set errno nor raise an exception.

Sleef_cbrt_u10, Sleef_cbrtf_u10 - cube root function with 1.0 ULP error bound

Synopsis

#include <sleef.h>
double Sleef_cbrt_u10(double a);
float Sleef_cbrtf_u10(float a);
double Sleef_cbrtd1_u10(double a);
double Sleef_cbrtd1_u10purec(double a);
double Sleef_cbrtd1_u10purecfma(double a);
double Sleef_cinz_cbrtd1_u10purec(double a);
double Sleef_finz_cbrtd1_u10purecfma(double a);
float Sleef_cbrtf1_u10(float a);
float Sleef_cbrtf1_u10purec(float a);
float Sleef_cbrtf1_u10purecfma(float a);
float Sleef_cinz_cbrtf1_u10purec(float a);
float Sleef_finz_cbrtf1_u10purecfma(float a);
Link with -lsleef.

Description

These functions return the real cube root of a. The error bound of the returned value is 1.0 ULP. These functions treat the non-number arguments and return non-numbers as specified in the C99 specification. These functions do not set errno nor raise an exception.

Sleef_cbrt_u35, Sleef_cbrtf_u35 - cube root function with 3.5 ULP error bound

Synopsis

#include <sleef.h>
double Sleef_cbrt_u35(double a);
float Sleef_cbrtf_u35(float a);
double Sleef_cbrtd1_u35(double a);
double Sleef_cbrtd1_u35purec(double a);
double Sleef_cbrtd1_u35purecfma(double a);
double Sleef_cinz_cbrtd1_u35purec(double a);
double Sleef_finz_cbrtd1_u35purecfma(double a);
float Sleef_cbrtf1_u35(float a);
float Sleef_cbrtf1_u35purec(float a);
float Sleef_cbrtf1_u35purecfma(float a);
float Sleef_cinz_cbrtf1_u35purec(float a);
float Sleef_finz_cbrtf1_u35purecfma(float a);
Link with -lsleef.

Description

These functions return the real cube root of a. The error bound of the returned value is 1.0 ULP. These functions treat the non-number arguments and return non-numbers as specified in the C99 specification. These functions do not set errno nor raise an exception.

Sleef_hypot_u05, Sleef_hypotf_u05 - 2D Euclidian distance function with 0.5 ULP error bound

Synopsis

#include <sleef.h>
double Sleef_hypot_u05(double x, double y);
float Sleef_hypotf_u05(float x, float y);
double Sleef_hypotd1_u05(double a, double b);
double Sleef_hypotd1_u05purec(double a, double b);
double Sleef_hypotd1_u05purecfma(double a, double b);
double Sleef_cinz_hypotd1_u05purec(double a, double b);
double Sleef_finz_hypotd1_u05purecfma(double a, double b);
float Sleef_hypotf1_u05(float a, float b);
float Sleef_hypotf1_u05purec(float a, float b);
float Sleef_hypotf1_u05purecfma(float a, float b);
float Sleef_cinz_hypotf1_u05purec(float a, float b);
float Sleef_finz_hypotf1_u05purecfma(float a, float b);
Link with -lsleef.

Description

These functions return the value as specified in the C99 specification of hypot and hypotf functions. The error bound of the returned value is 0.5001 ULP. These functions do not set errno nor raise an exception.

Sleef_hypot_u35, Sleef_hypotf_u35 - 2D Euclidian distance function with 3.5 ULP error bound

Synopsis

#include <sleef.h>
double Sleef_hypot_u35(double x, double y);
float Sleef_hypotf_u35(float x, float y);
double Sleef_hypotd1_u35(double a, double b);
double Sleef_hypotd1_u35purec(double a, double b);
double Sleef_hypotd1_u35purecfma(double a, double b);
double Sleef_cinz_hypotd1_u35purec(double a, double b);
double Sleef_finz_hypotd1_u35purecfma(double a, double b);
float Sleef_hypotf1_u35(float a, float b);
float Sleef_hypotf1_u35purec(float a, float b);
float Sleef_hypotf1_u35purecfma(float a, float b);
float Sleef_cinz_hypotf1_u35purec(float a, float b);
float Sleef_finz_hypotf1_u35purecfma(float a, float b);
Link with -lsleef.

Description

These functions return the value as specified in the C99 specification of hypot and hypotf functions. The error bound of the returned value is 0.5001 ULP. These functions do not set errno nor raise an exception.

## Inverse Trigonometric Functions

Sleef_asin_u10, Sleef_asinf_u10 - arc sine functions with 1.0 ULP error bound

Synopsis

#include <sleef.h>
double Sleef_asin_u10(double a);
float Sleef_asinf_u10(float a);
double Sleef_asind1_u10(double a);
double Sleef_asind1_u10purec(double a);
double Sleef_asind1_u10purecfma(double a);
double Sleef_cinz_asind1_u10purec(double a);
double Sleef_finz_asind1_u10purecfma(double a);
float Sleef_asinf1_u10(float a);
float Sleef_asinf1_u10purec(float a);
float Sleef_asinf1_u10purecfma(float a);
float Sleef_cinz_asinf1_u10purec(float a);
float Sleef_finz_asinf1_u10purecfma(float a);
Link with -lsleef.

Description

These functions evaluate the arc sine function of a value in a. The error bound of the returned value is 1.0 ULP. These functions treat the non-number arguments and return non-numbers as specified in the C99 specification. These functions do not set errno nor raise an exception.

Sleef_asin_u35, Sleef_asinf_u35 - arc sine functions with 3.5 ULP error bound

Synopsis

#include <sleef.h>
double Sleef_asin_u35(double a);
float Sleef_asinf_u35(float a);
double Sleef_asind1_u35(double a);
double Sleef_asind1_u35purec(double a);
double Sleef_asind1_u35purecfma(double a);
double Sleef_cinz_asind1_u35purec(double a);
double Sleef_finz_asind1_u35purecfma(double a);
float Sleef_asinf1_u35(float a);
float Sleef_asinf1_u35purec(float a);
float Sleef_asinf1_u35purecfma(float a);
float Sleef_cinz_asinf1_u35purec(float a);
float Sleef_finz_asinf1_u35purecfma(float a);
Link with -lsleef.

Description

These functions evaluate the arc sine function of a value in a. The error bound of the returned value is 3.5 ULP. These functions treat the non-number arguments and return non-numbers as specified in the C99 specification. These functions do not set errno nor raise an exception.

Sleef_acos_u10, Sleef_acosf_u10 - arc cosine functions with 1.0 ULP error bound

Synopsis

#include <sleef.h>
double Sleef_acos_u10(double a);
float Sleef_acosf_u10(float a);
double Sleef_acosd1_u10(double a);
double Sleef_acosd1_u10purec(double a);
double Sleef_acosd1_u10purecfma(double a);
double Sleef_cinz_acosd1_u10purec(double a);
double Sleef_finz_acosd1_u10purecfma(double a);
float Sleef_acosf1_u10(float a);
float Sleef_acosf1_u10purec(float a);
float Sleef_acosf1_u10purecfma(float a);
float Sleef_cinz_acosf1_u10purec(float a);
float Sleef_finz_acosf1_u10purecfma(float a);
Link with -lsleef.

Description

These functions evaluate the arc cosine function of a value in a. The error bound of the returned value is 1.0 ULP. These functions treat the non-number arguments and return non-numbers as specified in the C99 specification. These functions do not set errno nor raise an exception.

Sleef_acos_u35, Sleef_acosf_u35 - arc cosine functions with 3.5 ULP error bound

Synopsis

#include <sleef.h>
double Sleef_acos_u35(double a);
float Sleef_acosf_u35(float a);
double Sleef_acosd1_u35(double a);
double Sleef_acosd1_u35purec(double a);
double Sleef_acosd1_u35purecfma(double a);
double Sleef_cinz_acosd1_u35purec(double a);
double Sleef_finz_acosd1_u35purecfma(double a);
float Sleef_acosf1_u35(float a);
float Sleef_acosf1_u35purec(float a);
float Sleef_acosf1_u35purecfma(float a);
float Sleef_cinz_acosf1_u35purec(float a);
float Sleef_finz_acosf1_u35purecfma(float a);
Link with -lsleef.

Description

These functions evaluate the arc cosine function of a value in a. The error bound of the returned value is 3.5 ULP. These functions treat the non-number arguments and return non-numbers as specified in the C99 specification. These functions do not set errno nor raise an exception.

Sleef_atan_u10, Sleef_atanf_u10 - arc tangent functions with 1.0 ULP error bound

Synopsis

#include <sleef.h>
double Sleef_atan_u10(double a);
float Sleef_atanf_u10(float a);
double Sleef_atand1_u10(double a);
double Sleef_atand1_u10purec(double a);
double Sleef_atand1_u10purecfma(double a);
double Sleef_cinz_atand1_u10purec(double a);
double Sleef_finz_atand1_u10purecfma(double a);
float Sleef_atanf1_u10(float a);
float Sleef_atanf1_u10purec(float a);
float Sleef_atanf1_u10purecfma(float a);
float Sleef_cinz_atanf1_u10purec(float a);
float Sleef_finz_atanf1_u10purecfma(float a);
Link with -lsleef.

Description

These functions evaluate the arc tangent function of a value in a. The error bound of the returned value is 1.0 ULP. These functions treat the non-number arguments and return non-numbers as specified in the C99 specification. These functions do not set errno nor raise an exception.

Sleef_atan_u35, Sleef_atanf_u35 - arc tangent functions with 3.5 ULP error bound

Synopsis

#include <sleef.h>
double Sleef_atan_u35(double a);
float Sleef_atanf_u35(float a);
double Sleef_atand1_u35(double a);
double Sleef_atand1_u35purec(double a);
double Sleef_atand1_u35purecfma(double a);
double Sleef_cinz_atand1_u35purec(double a);
double Sleef_finz_atand1_u35purecfma(double a);
float Sleef_atanf1_u35(float a);
float Sleef_atanf1_u35purec(float a);
float Sleef_atanf1_u35purecfma(float a);
float Sleef_cinz_atanf1_u35purec(float a);
float Sleef_finz_atanf1_u35purecfma(float a);
Link with -lsleef.

Description

These functions evaluate the arc tangent function of a value in a. The error bound of the returned value is 3.5 ULP. These functions treat the non-number arguments and return non-numbers as specified in the C99 specification. These functions do not set errno nor raise an exception.

Sleef_atan2_u10, Sleef_atan2f_u10 - arc tangent functions of two variables with 1.0 ULP error bound

Synopsis

#include <sleef.h>
double Sleef_atan2_u10(double y, double x);
float Sleef_atan2f_u10(float y, float x);
double Sleef_atan2d1_u10(double a, double b);
double Sleef_atan2d1_u10purec(double a, double b);
double Sleef_atan2d1_u10purecfma(double a, double b);
double Sleef_cinz_atan2d1_u10purec(double a, double b);
double Sleef_finz_atan2d1_u10purecfma(double a, double b);
float Sleef_atan2f1_u10(float a, float b);
float Sleef_atan2f1_u10purec(float a, float b);
float Sleef_atan2f1_u10purecfma(float a, float b);
float Sleef_cinz_atan2f1_u10purec(float a, float b);
float Sleef_finz_atan2f1_u10purecfma(float a, float b);
Link with -lsleef.

Description

These functions evaluate the arc tangent function of (y / x). The quadrant of the result is determined according to the signs of x and y. The error bounds of the returned values are max(1.0 ULP, DBL_MIN) and max(1.0 ULP, FLT_MIN), respectively. These functions treat the non-number arguments and return non-numbers as specified in the C99 specification. These functions do not set errno nor raise an exception.

Sleef_atan2_u35, Sleef_atan2f_u35 - arc tangent functions of two variables with 3.5 ULP error bound

Synopsis

#include <sleef.h>
double Sleef_atan2_u35(double y, double x);
float Sleef_atan2f_u35(float y, float x);
double Sleef_atan2d1_u35(double a, double b);
double Sleef_atan2d1_u35purec(double a, double b);
double Sleef_atan2d1_u35purecfma(double a, double b);
double Sleef_cinz_atan2d1_u35purec(double a, double b);
double Sleef_finz_atan2d1_u35purecfma(double a, double b);
float Sleef_atan2f1_u35(float a, float b);
float Sleef_atan2f1_u35purec(float a, float b);
float Sleef_atan2f1_u35purecfma(float a, float b);
float Sleef_cinz_atan2f1_u35purec(float a, float b);
float Sleef_finz_atan2f1_u35purecfma(float a, float b);
Link with -lsleef.

Description

These functions evaluate the arc tangent function of (y / x). The quadrant of the result is determined according to the signs of x and y. The error bound of the returned value is 3.5 ULP. These functions treat the non-number arguments and return non-numbers as specified in the C99 specification. These functions do not set errno nor raise an exception.

## Hyperbolic functions and inverse hyperbolic functions

Sleef_sinh_u10, Sleef_sinhf_u10 - hyperbolic sine functions

Synopsis

#include <sleef.h>
double Sleef_sinh_u10(double a);
float Sleef_sinhf_u10(float a);
double Sleef_sinhd1_u10(double a);
double Sleef_sinhd1_u10purec(double a);
double Sleef_sinhd1_u10purecfma(double a);
double Sleef_cinz_sinhd1_u10purec(double a);
double Sleef_finz_sinhd1_u10purecfma(double a);
float Sleef_sinhf1_u10(float a);
float Sleef_sinhf1_u10purec(float a);
float Sleef_sinhf1_u10purecfma(float a);
float Sleef_cinz_sinhf1_u10purec(float a);
float Sleef_finz_sinhf1_u10purecfma(float a);
Link with -lsleef.

Description

These functions evaluate the hyperbolic sine function of a value in a. The error bound of the returned value is 1.0 ULP if a is in [-709, 709] for the double-precision function or [-88.5, 88.5] for the single-precision function . If a is a finite value out of this range, infinity with a correct sign or a correct value with 1.0 ULP error bound is returned. These functions treat the non-number arguments and return non-numbers as specified in the C99 specification. These functions do not set errno nor raise an exception.

Sleef_sinh_u35, Sleef_sinhf_u35 - hyperbolic sine functions

Synopsis

#include <sleef.h>
double Sleef_sinh_u35(double a);
float Sleef_sinhf_u35(float a);
double Sleef_sinhd1_u35(double a);
double Sleef_sinhd1_u35purec(double a);
double Sleef_sinhd1_u35purecfma(double a);
double Sleef_cinz_sinhd1_u35purec(double a);
double Sleef_finz_sinhd1_u35purecfma(double a);
float Sleef_sinhf1_u35(float a);
float Sleef_sinhf1_u35purec(float a);
float Sleef_sinhf1_u35purecfma(float a);
float Sleef_cinz_sinhf1_u35purec(float a);
float Sleef_finz_sinhf1_u35purecfma(float a);
Link with -lsleef.

Description

These functions evaluate the hyperbolic sine function of a value in a. The error bound of the returned value is 3.5 ULP if a is in [-709, 709] for the double-precision function or [-88, 88] for the single-precision function . If a is a finite value out of this range, infinity with a correct sign or a correct value with 3.5 ULP error bound is returned. These functions treat the non-number arguments and return non-numbers as specified in the C99 specification. These functions do not set errno nor raise an exception.

Sleef_cosh_u10, Sleef_coshf_u10 - hyperbolic cosine functions

Synopsis

#include <sleef.h>
double Sleef_cosh_u10(double a);
float Sleef_coshf_u10(float a);
double Sleef_coshd1_u10(double a);
double Sleef_coshd1_u10purec(double a);
double Sleef_coshd1_u10purecfma(double a);
double Sleef_cinz_coshd1_u10purec(double a);
double Sleef_finz_coshd1_u10purecfma(double a);
float Sleef_coshf1_u10(float a);
float Sleef_coshf1_u10purec(float a);
float Sleef_coshf1_u10purecfma(float a);
float Sleef_cinz_coshf1_u10purec(float a);
float Sleef_finz_coshf1_u10purecfma(float a);
Link with -lsleef.

Description

These functions evaluate the hyperbolic cosine function of a value in a. The error bound of the returned value is 1.0 ULP if a is in [-709, 709] for the double-precision function or [-88.5, 88.5] for the single-precision function . If a is a finite value out of this range, infinity with a correct sign or a correct value with 1.0 ULP error bound is returned. These functions treat the non-number arguments and return non-numbers as specified in the C99 specification. These functions do not set errno nor raise an exception.

Sleef_cosh_u35, Sleef_coshf_u35 - hyperbolic cosine functions

Synopsis

#include <sleef.h>
double Sleef_cosh_u35(double a);
float Sleef_coshf_u35(float a);
double Sleef_coshd1_u35(double a);
double Sleef_coshd1_u35purec(double a);
double Sleef_coshd1_u35purecfma(double a);
double Sleef_cinz_coshd1_u35purec(double a);
double Sleef_finz_coshd1_u35purecfma(double a);
float Sleef_coshf1_u35(float a);
float Sleef_coshf1_u35purec(float a);
float Sleef_coshf1_u35purecfma(float a);
float Sleef_cinz_coshf1_u35purec(float a);
float Sleef_finz_coshf1_u35purecfma(float a);
Link with -lsleef.

Description

These functions evaluate the hyperbolic cosine function of a value in a. The error bound of the returned value is 3.5 ULP if a is in [-709, 709] for the double-precision function or [-88, 88] for the single-precision function . If a is a finite value out of this range, infinity with a correct sign or a correct value with 3.5 ULP error bound is returned. These functions treat the non-number arguments and return non-numbers as specified in the C99 specification. These functions do not set errno nor raise an exception.

Sleef_tanh_u10, Sleef_tanhf_u10 - hyperbolic tangent functions

Synopsis

#include <sleef.h>
double Sleef_tanh_u10(double a);
float Sleef_tanhf_u10(float a);
double Sleef_tanhd1_u10(double a);
double Sleef_tanhd1_u10purec(double a);
double Sleef_tanhd1_u10purecfma(double a);
double Sleef_cinz_tanhd1_u10purec(double a);
double Sleef_finz_tanhd1_u10purecfma(double a);
float Sleef_tanhf1_u10(float a);
float Sleef_tanhf1_u10purec(float a);
float Sleef_tanhf1_u10purecfma(float a);
float Sleef_cinz_tanhf1_u10purec(float a);
float Sleef_finz_tanhf1_u10purecfma(float a);
Link with -lsleef.

Description

These functions evaluate the hyperbolic tangent function of a value in a. The error bound of the returned value is 1.0 ULP for the double-precision function or 1.0001 ULP for the single-precision function. These functions treat the non-number arguments and return non-numbers as specified in the C99 specification. These functions do not set errno nor raise an exception.

Sleef_tanh_u35, Sleef_tanhf_u35 - hyperbolic tangent functions

Synopsis

#include <sleef.h>
double Sleef_tanh_u35(double a);
float Sleef_tanhf_u35(float a);
double Sleef_tanhd1_u35(double a);
double Sleef_tanhd1_u35purec(double a);
double Sleef_tanhd1_u35purecfma(double a);
double Sleef_cinz_tanhd1_u35purec(double a);
double Sleef_finz_tanhd1_u35purecfma(double a);
float Sleef_tanhf1_u35(float a);
float Sleef_tanhf1_u35purec(float a);
float Sleef_tanhf1_u35purecfma(float a);
float Sleef_cinz_tanhf1_u35purec(float a);
float Sleef_finz_tanhf1_u35purecfma(float a);
Link with -lsleef.

Description

These functions evaluate the hyperbolic tangent function of a value in a. The error bound of the returned value is 3.5 ULP for the double-precision function or 3.5 ULP for the single-precision function. These functions treat the non-number arguments and return non-numbers as specified in the C99 specification. These functions do not set errno nor raise an exception.

Sleef_asinh_u10, Sleef_asinhf_u10 - inverse hyperbolic sine functions

Synopsis

#include <sleef.h>
double Sleef_asinh_u10(double a);
float Sleef_asinhf_u10(float a);
double Sleef_asinhd1_u10(double a);
double Sleef_asinhd1_u10purec(double a);
double Sleef_asinhd1_u10purecfma(double a);
double Sleef_cinz_asinhd1_u10purec(double a);
double Sleef_finz_asinhd1_u10purecfma(double a);
float Sleef_asinhf1_u10(float a);
float Sleef_asinhf1_u10purec(float a);
float Sleef_asinhf1_u10purecfma(float a);
float Sleef_cinz_asinhf1_u10purec(float a);
float Sleef_finz_asinhf1_u10purecfma(float a);
Link with -lsleef.

Description

These functions evaluate the inverse hyperbolic sine function of a value in a. The error bound of the returned value is 1.0 ULP if a is in [-1.34e+154, 1.34e+154] for the double-precision function or 1.001 ULP if a is in [-1.84e+19, 1.84e+19] for the single-precision function . If a is a finite value out of this range, infinity with a correct sign or a correct value with 1.0 ULP error bound is returned. These functions treat the non-number arguments and return non-numbers as specified in the C99 specification. These functions do not set errno nor raise an exception.

Sleef_acosh_u10, Sleef_acoshf_u10 - inverse hyperbolic cosine functions

Synopsis

#include <sleef.h>
double Sleef_acosh_u10(double a);
float Sleef_acoshf_u10(float a);
double Sleef_acoshd1_u10(double a);
double Sleef_acoshd1_u10purec(double a);
double Sleef_acoshd1_u10purecfma(double a);
double Sleef_cinz_acoshd1_u10purec(double a);
double Sleef_finz_acoshd1_u10purecfma(double a);
float Sleef_acoshf1_u10(float a);
float Sleef_acoshf1_u10purec(float a);
float Sleef_acoshf1_u10purecfma(float a);
float Sleef_cinz_acoshf1_u10purec(float a);
float Sleef_finz_acoshf1_u10purecfma(float a);
Link with -lsleef.

Description

These functions evaluate the inverse hyperbolic cosine function of a value in a. The error bound of the returned value is 1.0 ULP if a is in [-1.34e+154, 1.34e+154] for the double-precision function or 1.001 ULP if a is in [-1.84e+19, 1.84e+19] for the single-precision function . If a is a finite value out of this range, infinity with a correct sign or a correct value with 1.0 ULP error bound is returned. These functions treat the non-number arguments and return non-numbers as specified in the C99 specification. These functions do not set errno nor raise an exception.

Sleef_atanh_u10, Sleef_atanhf_u10 - inverse hyperbolic tangent functions

Synopsis

#include <sleef.h>
double Sleef_atanh_u10(double a);
float Sleef_atanhf_u10(float a);
double Sleef_atanhd1_u10(double a);
double Sleef_atanhd1_u10purec(double a);
double Sleef_atanhd1_u10purecfma(double a);
double Sleef_cinz_atanhd1_u10purec(double a);
double Sleef_finz_atanhd1_u10purecfma(double a);
float Sleef_atanhf1_u10(float a);
float Sleef_atanhf1_u10purec(float a);
float Sleef_atanhf1_u10purecfma(float a);
float Sleef_cinz_atanhf1_u10purec(float a);
float Sleef_finz_atanhf1_u10purecfma(float a);
Link with -lsleef.

Description

These functions evaluate the inverse hyperbolic tangent function of a value in a. The error bound of the returned value is 1.0 ULP for the double-precision function or 1.0001 ULP for the single-precision function. These functions treat the non-number arguments and return non-numbers as specified in the C99 specification. These functions do not set errno nor raise an exception.

## Error and gamma functions

Sleef_erf_u10, Sleef_erff_u10 - error functions with 1.0 ULP error bound

Synopsis

#include <sleef.h>
double Sleef_erf_u10(double x);
float Sleef_erff_u10(float x);
double Sleef_erfd1_u10(double a);
double Sleef_erfd1_u10purec(double a);
double Sleef_erfd1_u10purecfma(double a);
double Sleef_cinz_erfd1_u10purec(double a);
double Sleef_finz_erfd1_u10purecfma(double a);
float Sleef_erff1_u10(float a);
float Sleef_erff1_u10purec(float a);
float Sleef_erff1_u10purecfma(float a);
float Sleef_cinz_erff1_u10purec(float a);
float Sleef_finz_erff1_u10purecfma(float a);
Link with -lsleef.

Description

These functions return the value as specified in the C99 specification of erf and erff functions. The error bound of the returned value is 1.0 ULP. These functions do not set errno nor raise an exception.

Sleef_erfc_u15, Sleef_erfcf_u15 - complementary error functions

Synopsis

#include <sleef.h>
double Sleef_erfc_u15(double x);
float Sleef_erfcf_u15(float x);
double Sleef_erfcd1_u15(double a);
double Sleef_erfcd1_u15purec(double a);
double Sleef_erfcd1_u15purecfma(double a);
double Sleef_cinz_erfcd1_u15purec(double a);
double Sleef_finz_erfcd1_u15purecfma(double a);
float Sleef_erfcf1_u15(float a);
float Sleef_erfcf1_u15purec(float a);
float Sleef_erfcf1_u15purecfma(float a);
float Sleef_cinz_erfcf1_u15purec(float a);
float Sleef_finz_erfcf1_u15purecfma(float a);
Link with -lsleef.

Description

These functions return the value as specified in the C99 specification of erfc and erfcf functions. The error bound of the returned value for the DP function is max(1.5 ULP, DBL_MIN) if the argument is less than 26.2, and max(2.5 ULP, DBL_MIN) otherwise. For the SP function, the error bound is max(1.5 ULP, FLT_MIN). These functions do not set errno nor raise an exception.

Sleef_tgamma_u10, Sleef_tgammaf_u10 - gamma functions with 1.0 ULP error bound

Synopsis

#include <sleef.h>
double Sleef_tgamma_u10(double x);
float Sleef_tgammaf_u10(float x);
double Sleef_tgammad1_u10(double a);
double Sleef_tgammad1_u10purec(double a);
double Sleef_tgammad1_u10purecfma(double a);
double Sleef_cinz_tgammad1_u10purec(double a);
double Sleef_finz_tgammad1_u10purecfma(double a);
float Sleef_tgammaf1_u10(float a);
float Sleef_tgammaf1_u10purec(float a);
float Sleef_tgammaf1_u10purecfma(float a);
float Sleef_cinz_tgammaf1_u10purec(float a);
float Sleef_finz_tgammaf1_u10purecfma(float a);
Link with -lsleef.

Description

These functions return the value as specified in the C99 specification of tgamma and tgammaf functions. The error bound of the returned value is 1.0 ULP. These functions do not set errno nor raise an exception.

Sleef_lgamma_u10, Sleef_lgammaf_u10 - log gamma functions with 1.0 ULP error bound

Synopsis

#include <sleef.h>
double Sleef_lgamma_u10(double x);
float Sleef_lgammaf_u10(float x);
double Sleef_lgammad1_u10(double a);
double Sleef_lgammad1_u10purec(double a);
double Sleef_lgammad1_u10purecfma(double a);
double Sleef_cinz_lgammad1_u10purec(double a);
double Sleef_finz_lgammad1_u10purecfma(double a);
float Sleef_lgammaf1_u10(float a);
float Sleef_lgammaf1_u10purec(float a);
float Sleef_lgammaf1_u10purecfma(float a);
float Sleef_cinz_lgammaf1_u10purec(float a);
float Sleef_finz_lgammaf1_u10purecfma(float a);
Link with -lsleef.

Description

These functions return the value as specified in the C99 specification of lgamma and lgammaf functions. The error bound of the returned value is 1.0 ULP if the argument is positive. If the argument is larger than 2e+305 for the DP function and 4e+36 for the SP function, it may return infinity instead of the correct value. The error bound is max(1 ULP, 1e-15) for the DP function and max(1 ULP and 1e-8) for the SP function, if the argument is negative. These functions do not set errno nor raise an exception.

## Nearest integer functions

Sleef_trunc, Sleef_truncf - round to integer towards zero

Synopsis

#include <sleef.h>
double Sleef_trunc(double x);
float Sleef_truncf(float x);
double Sleef_truncd1(double a);
double Sleef_truncd1_purec(double a);
double Sleef_truncd1_purecfma(double a);
double Sleef_cinz_truncd1_purec(double a);
double Sleef_finz_truncd1_purecfma(double a);
float Sleef_truncf1(float a);
float Sleef_truncf1_purec(float a);
float Sleef_truncf1_purecfma(float a);
float Sleef_cinz_truncf1_purec(float a);
float Sleef_finz_truncf1_purecfma(float a);
Link with -lsleef.

Description

These functions return the value as specified in the C99 specification of trunc and truncf functions. These functions do not set errno nor raise an exception.

Sleef_floor, Sleef_floorf - round to integer towards minus infinity

Synopsis

#include <sleef.h>
double Sleef_floor(double x);
float Sleef_floorf(float x);
double Sleef_floord1(double a);
double Sleef_floord1_purec(double a);
double Sleef_floord1_purecfma(double a);
double Sleef_cinz_floord1_purec(double a);
double Sleef_finz_floord1_purecfma(double a);
float Sleef_floorf1(float a);
float Sleef_floorf1_purec(float a);
float Sleef_floorf1_purecfma(float a);
float Sleef_cinz_floorf1_purec(float a);
float Sleef_finz_floorf1_purecfma(float a);
Link with -lsleef.

Description

These functions return the value as specified in the C99 specification of floor and floorf functions. These functions do not set errno nor raise an exception.

Sleef_ceil, Sleef_ceilf - round to integer towards plus infinity

Synopsis

#include <sleef.h>
double Sleef_ceil(double x);
float Sleef_ceilf(float x);
double Sleef_ceild1(double a);
double Sleef_ceild1_purec(double a);
double Sleef_ceild1_purecfma(double a);
double Sleef_cinz_ceild1_purec(double a);
double Sleef_finz_ceild1_purecfma(double a);
float Sleef_ceilf1(float a);
float Sleef_ceilf1_purec(float a);
float Sleef_ceilf1_purecfma(float a);
float Sleef_cinz_ceilf1_purec(float a);
float Sleef_finz_ceilf1_purecfma(float a);
Link with -lsleef.

Description

These functions return the value as specified in the C99 specification of ceil and ceilf functions. These functions do not set errno nor raise an exception.

Sleef_round, Sleef_roundf - round to integer away from zero

Synopsis

#include <sleef.h>
double Sleef_round(double x);
float Sleef_roundf(float x);
double Sleef_roundd1(double a);
double Sleef_roundd1_purec(double a);
double Sleef_roundd1_purecfma(double a);
double Sleef_cinz_roundd1_purec(double a);
double Sleef_finz_roundd1_purecfma(double a);
float Sleef_roundf1(float a);
float Sleef_roundf1_purec(float a);
float Sleef_roundf1_purecfma(float a);
float Sleef_cinz_roundf1_purec(float a);
float Sleef_finz_roundf1_purecfma(float a);
Link with -lsleef.

Description

These functions return the value as specified in the C99 specification of round and roundf functions. These functions do not set errno nor raise an exception.

Sleef_rint, Sleef_rintf - round to integer, ties round to even

Synopsis

#include <sleef.h>
double Sleef_rint(double x);
float Sleef_rintf(float x);
double Sleef_rintd1(double a);
double Sleef_rintd1_purec(double a);
double Sleef_rintd1_purecfma(double a);
double Sleef_cinz_rintd1_purec(double a);
double Sleef_finz_rintd1_purecfma(double a);
float Sleef_rintf1(float a);
float Sleef_rintf1_purec(float a);
float Sleef_rintf1_purecfma(float a);
float Sleef_cinz_rintf1_purec(float a);
float Sleef_finz_rintf1_purecfma(float a);
Link with -lsleef.

Description

These functions return the value as specified in the C99 specification of rint and rintf functions. These functions do not set errno nor raise an exception.

## Other functions

Sleef_fma, Sleef_fmaf - fused multiply and accumulate

Synopsis

#include <sleef.h>
double Sleef_fma(double x, double y, double z);
float Sleef_fmaf(float x, float y, float z);
double Sleef_fmad1(double x, double y, double z);
double Sleef_fmad1_purec(double x, double y, double z);
double Sleef_fmad1_purecfma(double x, double y, double z);
double Sleef_cinz_fmad1_purec(double x, double y, double z);
double Sleef_finz_fmad1_purecfma(double x, double y, double z);
float Sleef_fmaf1(float x, float y, float z);
float Sleef_fmaf1_purec(float x, float y, float z);
float Sleef_fmaf1_purecfma(float x, float y, float z);
float Sleef_cinz_fmaf1_purec(float x, float y, float z);
float Sleef_finz_fmaf1_purecfma(float x, float y, float z);
Link with -lsleef.

Description

These functions compute (x × y + z) without rounding, and then return the rounded value of the result. These functions may return infinity with a correct sign if the absolute value of the correct return value is greater than 1e+300 and 1e+33, respectively. The error bounds of the returned values are 0.5 ULP and max(0.50001 ULP, FLT_MIN), respectively.

Sleef_fmod, Sleef_fmodf - FP remainder

Synopsis

#include <sleef.h>
double Sleef_fmod(double x, double y);
float Sleef_fmodf(float x, float y);
double Sleef_fmodd1(double x, double y);
double Sleef_fmodd1_purec(double x, double y);
double Sleef_fmodd1_purecfma(double x, double y);
double Sleef_cinz_fmodd1_purec(double x, double y);
double Sleef_finz_fmodd1_purecfma(double x, double y);
float Sleef_fmodf1(float x, float y);
float Sleef_fmodf1_purec(float x, float y);
float Sleef_fmodf1_purecfma(float x, float y);
float Sleef_cinz_fmodf1_purec(float x, float y);
float Sleef_finz_fmodf1_purecfma(float x, float y);
Link with -lsleef.

Description

These functions return the value as specified in the C99 specification of fmod and fmodf functions, if |x / y| is smaller than 1e+300 and 1e+38, respectively. The returned value is undefined, otherwise. These functions do not set errno nor raise an exception.

Sleef_remainder, Sleef_remainderf - FP remainder

Synopsis

#include <sleef.h>
double Sleef_remainder(double x, double y);
float Sleef_remainderf(float x, float y);
double Sleef_remainderd1(double x, double y);
double Sleef_remainderd1_purec(double x, double y);
double Sleef_remainderd1_purecfma(double x, double y);
double Sleef_cinz_remainderd1_purec(double x, double y);
double Sleef_finz_remainderd1_purecfma(double x, double y);
float Sleef_remainderf1(float x, float y);
float Sleef_remainderf1_purec(float x, float y);
float Sleef_remainderf1_purecfma(float x, float y);
float Sleef_cinz_remainderf1_purec(float x, float y);
float Sleef_finz_remainderf1_purecfma(float x, float y);
Link with -lsleef.

Description

These functions return the value as specified in the C99 specification of remainder and remainderf functions, if |x / y| is smaller than 1e+300 and 1e+38, respectively. The returned value is undefined, otherwise. These functions do not set errno nor raise an exception.

Sleef_ldexp, Sleef_ldexpf - multiply by integral power of 2

Synopsis

#include <sleef.h>
double Sleef_ldexp(double m, int x);
float Sleef_ldexpf(float m, int x);
double Sleef_ldexpd1(double m, int x);
double Sleef_ldexpd1_purec(double m, int x);
double Sleef_ldexpd1_purecfma(double m, int x);
double Sleef_cinz_ldexpd1_purec(double m, int x);
double Sleef_finz_ldexpd1_purecfma(double m, int x);
float Sleef_ldexpf1(float m, int x);
float Sleef_ldexpf1_purec(float m, int x);
float Sleef_ldexpf1_purecfma(float m, int x);
float Sleef_cinz_ldexpf1_purec(float m, int x);
float Sleef_finz_ldexpf1_purecfma(float m, int x);
Link with -lsleef.

Description

These functions return the result of multiplying m by 2 raised to the power x. These functions treat the non-number arguments and return non-numbers as specified in the C99 specification. These functions do not set errno nor raise an exception.

Sleef_frfrexp, Sleef_frfrexpf - fractional component of an FP number

Synopsis

#include <sleef.h>
double Sleef_frfrexp(double x);
float Sleef_frfrexpf(float x);
double Sleef_frfrexpd1(double x);
double Sleef_frfrexpd1_purec(double x);
double Sleef_frfrexpd1_purecfma(double x);
double Sleef_cinz_frfrexpd1_purec(double x);
double Sleef_finz_frfrexpd1_purecfma(double x);
float Sleef_frfrexpf1(float x);
float Sleef_frfrexpf1_purec(float x);
float Sleef_frfrexpf1_purecfma(float x);
float Sleef_cinz_frfrexpf1_purec(float x);
float Sleef_finz_frfrexpf1_purecfma(float x);
Link with -lsleef.

Description

These functions return the value as specified in the C99 specification of frexp and frexpf functions. These functions do not set errno nor raise an exception.

Sleef_expfrexp, Sleef_expfrexpf - exponent of an FP number

Synopsis

#include <sleef.h>
int Sleef_expfrexp(double x);
int Sleef_expfrexpf(float x);
int Sleef_expfrexpd1(double x);
int Sleef_expfrexpd1_purec(double x);
int Sleef_expfrexpd1_purecfma(double x);
int Sleef_cinz_expfrexpd1_purec(double x);
int Sleef_finz_expfrexpd1_purecfma(double x);
int Sleef_expfrexpf1(float x);
int Sleef_expfrexpf1_purec(float x);
int Sleef_expfrexpf1_purecfma(float x);
int Sleef_cinz_expfrexpf1_purec(float x);
int Sleef_finz_expfrexpf1_purecfma(float x);
Link with -lsleef.

Description

These functions return the exponent returned by frexp and frexpf functions as specified in the C99 specification. These functions do not set errno nor raise an exception.

Sleef_ilogb, Sleef_ilogbf - integer exponent of an FP number

Synopsis

#include <sleef.h>
int Sleef_ilogb(double m, int x);
int Sleef_ilogbf(float m, int x);
int Sleef_ilogbd1(double m, int x);
int Sleef_ilogbd1_purec(double m, int x);
int Sleef_ilogbd1_purecfma(double m, int x);
int Sleef_cinz_ilogbd1_purec(double m, int x);
int Sleef_finz_ilogbd1_purecfma(double m, int x);
int Sleef_ilogbf1(float m, int x);
int Sleef_ilogbf1_purec(float m, int x);
int Sleef_ilogbf1_purecfma(float m, int x);
int Sleef_cinz_ilogbf1_purec(float m, int x);
int Sleef_finz_ilogbf1_purecfma(float m, int x);
Link with -lsleef.

Description

These functions return the value as specified in the C99 specification of ilogb and ilogbf functions. These functions do not set errno nor raise an exception.

Sleef_modf, Sleef_modff - integral and fractional value of FP number

Synopsis

#include <sleef.h>
Sleef_double2 Sleef_modf(double x);
Sleef_float2 Sleef_modff(float x);
Sleef_double2 Sleef_modfd1(double x);
Sleef_double2 Sleef_modfd1_purec(double x);
Sleef_double2 Sleef_modfd1_purecfma(double x);
Sleef_double2 Sleef_cinz_modfd1_purec(double x);
Sleef_double2 Sleef_finz_modfd1_purecfma(double x);
Sleef_float2 Sleef_modff1(float x);
Sleef_float2 Sleef_modff1_purec(float x);
Sleef_float2 Sleef_modff1_purecfma(float x);
Sleef_float2 Sleef_cinz_modff1_purec(float x);
Sleef_float2 Sleef_finz_modff1_purecfma(float x);
Link with -lsleef.

Description

These functions return the value as specified in the C99 specification of modf and modff functions. These functions do not set errno nor raise an exception.

Sleef_fabs, Sleef_fabsf - absolute value

Synopsis

#include <sleef.h>
double Sleef_fabs(double x);
float Sleef_fabsf(float x);
double Sleef_fabsd1(double x);
double Sleef_fabsd1_purec(double x);
double Sleef_fabsd1_purecfma(double x);
double Sleef_cinz_fabsd1_purec(double x);
double Sleef_finz_fabsd1_purecfma(double x);
float Sleef_fabsf1(float x);
float Sleef_fabsf1_purec(float x);
float Sleef_fabsf1_purecfma(float x);
float Sleef_cinz_fabsf1_purec(float x);
float Sleef_finz_fabsf1_purecfma(float x);
Link with -lsleef.

Description

These functions return the value as specified in the C99 specification of fabs and fabsf functions. These functions do not set errno nor raise an exception.

Sleef_fmax, Sleef_fmaxf - maximum of two numbers

Synopsis

#include <sleef.h>
double Sleef_fmax(double x, double y);
float Sleef_fmaxf(float x, float y);
double Sleef_fmaxd1(double x, double y);
double Sleef_fmaxd1_purec(double x, double y);
double Sleef_fmaxd1_purecfma(double x, double y);
double Sleef_cinz_fmaxd1_purec(double x, double y);
double Sleef_finz_fmaxd1_purecfma(double x, double y);
float Sleef_fmaxf1(float x, float y);
float Sleef_fmaxf1_purec(float x, float y);
float Sleef_fmaxf1_purecfma(float x, float y);
float Sleef_cinz_fmaxf1_purec(float x, float y);
float Sleef_finz_fmaxf1_purecfma(float x, float y);
Link with -lsleef.

Description

These functions return the value as specified in the C99 specification of fmax and fmaxf functions. These functions do not set errno nor raise an exception.

Sleef_fmin, Sleef_fminf - minimum of two numbers

Synopsis

#include <sleef.h>
double Sleef_fmin(double x, double y);
float Sleef_fminf(float x, float y);
double Sleef_fmind1(double x, double y);
double Sleef_fmind1_purec(double x, double y);
double Sleef_fmind1_purecfma(double x, double y);
double Sleef_cinz_fmind1_purec(double x, double y);
double Sleef_finz_fmind1_purecfma(double x, double y);
float Sleef_fminf1(float x, float y);
float Sleef_fminf1_purec(float x, float y);
float Sleef_fminf1_purecfma(float x, float y);
float Sleef_cinz_fminf1_purec(float x, float y);
float Sleef_finz_fminf1_purecfma(float x, float y);
Link with -lsleef.

Description

These functions return the value as specified in the C99 specification of fmin and fminf functions. These functions do not set errno nor raise an exception.

Sleef_fdim, Sleef_fdimf - positive difference

Synopsis

#include <sleef.h>
double Sleef_fdim(double x, double y);
float Sleef_fdimf(float x, float y);
double Sleef_fdimd1(double x, double y);
double Sleef_fdimd1_purec(double x, double y);
double Sleef_fdimd1_purecfma(double x, double y);
double Sleef_cinz_fdimd1_purec(double x, double y);
double Sleef_finz_fdimd1_purecfma(double x, double y);
float Sleef_fdimf1(float x, float y);
float Sleef_fdimf1_purec(float x, float y);
float Sleef_fdimf1_purecfma(float x, float y);
float Sleef_cinz_fdimf1_purec(float x, float y);
float Sleef_finz_fdimf1_purecfma(float x, float y);
Link with -lsleef.

Description

These functions return the value as specified in the C99 specification of fdim and fdimf functions. These functions do not set errno nor raise an exception.

Sleef_copysign, Sleef_copysignf - copy sign of a number

Synopsis

#include <sleef.h>
double Sleef_copysign(double x, double y);
float Sleef_copysignf(float x, float y);
double Sleef_copysignd1(double x, double y);
double Sleef_copysignd1_purec(double x, double y);
double Sleef_copysignd1_purecfma(double x, double y);
double Sleef_cinz_copysignd1_purec(double x, double y);
double Sleef_finz_copysignd1_purecfma(double x, double y);
float Sleef_copysignf1(float x, float y);
float Sleef_copysignf1_purec(float x, float y);
float Sleef_copysignf1_purecfma(float x, float y);
float Sleef_cinz_copysignf1_purec(float x, float y);
float Sleef_finz_copysignf1_purecfma(float x, float y);
Link with -lsleef.

Description

These functions return the value as specified in the C99 specification of copysign and copysignf functions. These functions do not set errno nor raise an exception.

Sleef_nextafter, Sleef_nextafterf - find the next representable FP value

Synopsis

#include <sleef.h>
double Sleef_nextafter(double x, double y);
float Sleef_nextafterf(float x, float y);
double Sleef_nextafterd1(double x, double y);
double Sleef_nextafterd1_purec(double x, double y);
double Sleef_nextafterd1_purecfma(double x, double y);
double Sleef_cinz_nextafterd1_purec(double x, double y);
double Sleef_finz_nextafterd1_purecfma(double x, double y);
float Sleef_nextafterf1(float x, float y);
float Sleef_nextafterf1_purec(float x, float y);
float Sleef_nextafterf1_purecfma(float x, float y);
float Sleef_cinz_nextafterf1_purec(float x, float y);
float Sleef_finz_nextafterf1_purecfma(float x, float y);
Link with -lsleef.

Description

These functions return the value as specified in the C99 specification of nextafter and nextafterf functions. These functions do not set errno nor raise an exception.