Developer Guide and Reference

ID 767253
Date 10/31/2024
Public
Document Table of Contents

IMF Device Library Hyperbolic Functions

The IMF Device Library supports the following hyperbolic and inverse hyperbolic functions:

acosh

Description: The acosh(x) function returns the inverse hyperbolic cosine of x.

Special Values:

Argument x Result acosh(x)
+1 +0
x < +1 QNAN
-∞ QNAN
+∞ +∞

Useful Identities:

acosh(x) = log( x + sqrt(x^2 - 1) )

Calling Interfaces:

  • Default accuracy:
    float       sycl::ext::intel::math::acosh ( float x );
    double      sycl::ext::intel::math::acosh ( double x );
  • High accuracy (HA):
    float       sycl::ext::intel::math::ha::acosh ( float x );
    double      sycl::ext::intel::math::ha::acosh ( double x );
  • Low accuracy (LA):
    float       sycl::ext::intel::math::la::acosh ( float x );
    double      sycl::ext::intel::math::la::acosh ( double x );
  • Enhanced performance:
    float       sycl::ext::intel::math::ep::acosh ( float x );

asinh

Description: The asinh(x) function returns the inverse hyperbolic sine of x.

Special Values:

Argument x Result asinh(x)
+/-0 +/-0
+/-∞ +/-∞

Useful Identities:

asinh(x) = log( x + sqrt(x^2 + 1) )

Calling Interfaces:

  • Default accuracy:
    float       sycl::ext::intel::math::asinh ( float x );
    double      sycl::ext::intel::math::asinh ( double x );
  • High accuracy (HA):
    float       sycl::ext::intel::math::ha::asinh ( float x );
    double      sycl::ext::intel::math::ha::asinh ( double x );
  • Low accuracy (LA):
    float       sycl::ext::intel::math::la::asinh ( float x );
    double      sycl::ext::intel::math::la::asinh ( double x );
  • Enhanced performance:
    float       sycl::ext::intel::math::ep::asinh ( float x );

atanh

Description: The atanh(x) function returns the inverse hyperbolic tangent of x.

Special Values:

Argument x Result atanh(x)
+/-1 +/-∞
|x| > 1 QNAN
+/-∞ QNAN

Useful Identities:

atanh(x) = 0.5 · log( (1 + x)/(1 - x) )

Calling Interfaces:

  • Default accuracy:
    float       sycl::ext::intel::math::atanh ( float x );
    double      sycl::ext::intel::math::atanh ( double x );
  • High accuracy (HA):
    float       sycl::ext::intel::math::ha::atanh ( float x );
    double      sycl::ext::intel::math::ha::atanh ( double x );
  • Low accuracy (LA):
    float       sycl::ext::intel::math::la::atanh ( float x );
    double      sycl::ext::intel::math::la::atanh ( double x );
  • Enhanced performance:
    float       sycl::ext::intel::math::ep::atanh ( float x );

cosh

Description: The cosh(x) function returns the hyperbolic cosine of x.

Special Values:

Argument x Result cosh(x)
+/-0 +1
x > +OVFL +∞
x < -OVFL +∞
+/-∞ +∞
NOTE:
OVFL is overflow threshold, OVFL = log(MAX)+log(2), where MAX is maximum floating point normal number for given precision.

Useful Identities:

cosh(x) = ( exp(x) + exp(-x) ) / 2

Calling Interfaces:

  • Default accuracy:
    float       sycl::ext::intel::math::cosh ( float x );
    double      sycl::ext::intel::math::cosh ( double x );
  • High accuracy (HA):
    float       sycl::ext::intel::math::ha::cosh ( float x );
    double      sycl::ext::intel::math::ha::cosh ( double x );
  • Low accuracy (LA):
    float       sycl::ext::intel::math::la::cosh ( float x );
    double      sycl::ext::intel::math::la::cosh ( double x );
  • Enhanced performance:
    float       sycl::ext::intel::math::ep::cosh ( float x );

sinh

Description: The sinh(x) function returns the hyperbolic sine of x.

Special Values:

Argument x Result sinh(x)
+/-0 +/-0
x > +OVFL +∞
x < -OVFL -∞
+/-∞ +/-∞
NOTE:
OVFL is overflow threshold, OVFL = log(MAX)+log(2), where MAX is maximum floating point normal number for given precision.

Useful Identities:

sinh(x) = ( exp(x) - exp(-x) ) / 2

Calling Interfaces:

  • Default accuracy:
    float       sycl::ext::intel::math::sinh ( float x );
    double      sycl::ext::intel::math::sinh ( double x );
  • High accuracy (HA):
    float       sycl::ext::intel::math::ha::sinh ( float x );
    double      sycl::ext::intel::math::ha::sinh ( double x );
  • Low accuracy (LA):
    float       sycl::ext::intel::math::la::sinh ( float x );
    double      sycl::ext::intel::math::la::sinh ( double x );
  • Enhanced performance:
    float       sycl::ext::intel::math::ep::sinh ( float x );

tanh

Description: The tanh(x) function returns the hyperbolic tangent of x.

Special Values:

Argument x Result tanh(x)
+/-0 +/-0
+/-∞ +/-1

Useful Identities:

tanh(x) = ( exp(x) - exp(-x) ) / ( exp(x) + exp(-x) )

Calling Interfaces:

  • Default accuracy:
    float       sycl::ext::intel::math::tanh ( float x );
    double      sycl::ext::intel::math::tanh ( double x );
  • High accuracy (HA):
    float       sycl::ext::intel::math::ha::tanh ( float x );
    double      sycl::ext::intel::math::ha::tanh ( double x );
  • Low accuracy (LA):
    float       sycl::ext::intel::math::la::tanh ( float x );
    double      sycl::ext::intel::math::la::tanh ( double x );
  • Enhanced performance:
    float       sycl::ext::intel::math::ep::tanh ( float x );