4coder/non-source/test_data/lots_of_files/amp_math.h

4352 lines
108 KiB
C++

/***
* ==++==
*
* Copyright (c) Microsoft Corporation. All rights reserved.
*
* ==--==
* =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
*
* amp_math.h
*
* C++ AMP Math Library
*
* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
****/
#pragma once
#include <cmath>
#include <amprt.h>
#define _AMP_MATH_H
extern "C"
{
//=============================================================================
// fast_math intrinsics.
//=============================================================================
float __dp_d3d_absf(float) __GPU_ONLY;
float __dp_d3d_acosf(float) __GPU_ONLY;
float __dp_d3d_asinf(float) __GPU_ONLY;
float __dp_d3d_atanf(float) __GPU_ONLY;
float __dp_d3d_atan2f(float, float) __GPU_ONLY;
float __dp_d3d_ceilf(float) __GPU_ONLY;
float __dp_d3d_cosf(float) __GPU_ONLY;
float __dp_d3d_coshf(float) __GPU_ONLY;
float __dp_d3d_expf(float) __GPU_ONLY;
float __dp_d3d_exp2f(float) __GPU_ONLY;
float __dp_d3d_floorf(float) __GPU_ONLY;
float __dp_d3d_fmodf(float, float) __GPU_ONLY;
float __dp_d3d_fracf(float) __GPU_ONLY;
float __dp_d3d_frexpf(float, _Out_ float *) __GPU_ONLY;
int __dp_d3d_isfinitef(float)__GPU_ONLY;
int __dp_d3d_isinff(float) __GPU_ONLY;
int __dp_d3d_isnanf(float) __GPU_ONLY;
float __dp_d3d_ldexpf(float, float) __GPU_ONLY;
float __dp_d3d_logf(float) __GPU_ONLY;
float __dp_d3d_log10f(float) __GPU_ONLY;
float __dp_d3d_log2f(float) __GPU_ONLY;
float __dp_d3d_maxf(float, float) __GPU_ONLY;
float __dp_d3d_minf(float, float) __GPU_ONLY;
float __dp_d3d_modff(float, _Out_ float *) __GPU_ONLY;
float __dp_d3d_powf(float, float) __GPU_ONLY;
float __dp_d3d_roundf(float) __GPU_ONLY;
float __dp_d3d_rsqrtf(float) __GPU_ONLY;
int __dp_d3d_signf(float) __GPU_ONLY;
float __dp_d3d_sincosf(float, _Out_ float *) __GPU_ONLY;
float __dp_d3d_sinf(float) __GPU_ONLY;
float __dp_d3d_sinhf(float) __GPU_ONLY;
float __dp_d3d_sqrtf(float) __GPU_ONLY;
float __dp_d3d_tanf(float) __GPU_ONLY;
float __dp_d3d_tanhf(float) __GPU_ONLY;
float __dp_d3d_truncf(float) __GPU_ONLY;
//=============================================================================
// Single-precision precise_math intrinsics.
//=============================================================================
float __dp_math_acosf(float) __GPU_ONLY;
float __dp_math_acoshf(float) __GPU_ONLY;
float __dp_math_asinf(float) __GPU_ONLY;
float __dp_math_asinhf(float) __GPU_ONLY;
float __dp_math_atanf(float) __GPU_ONLY;
float __dp_math_atan2f(float, float) __GPU_ONLY;
float __dp_math_atanhf(float) __GPU_ONLY;
float __dp_math_cbrtf(float) __GPU_ONLY;
float __dp_math_ceilf(float) __GPU_ONLY;
float __dp_math_copysignf(float, float) __GPU_ONLY;
float __dp_math_cosf(float) __GPU_ONLY;
float __dp_math_coshf(float) __GPU_ONLY;
float __dp_math_cospif(float) __GPU_ONLY;
float __dp_math_erff(float) __GPU_ONLY;
float __dp_math_erfcf(float) __GPU_ONLY;
float __dp_math_erfinvf(float) __GPU_ONLY;
float __dp_math_erfcinvf(float) __GPU_ONLY;
float __dp_math_expf(float) __GPU_ONLY;
float __dp_math_exp2f(float) __GPU_ONLY;
float __dp_math_exp10f(float) __GPU_ONLY;
float __dp_math_expm1f(float) __GPU_ONLY;
float __dp_math_fabsf(float) __GPU_ONLY;
float __dp_math_fdimf(float, float) __GPU_ONLY;
float __dp_math_floorf(float) __GPU_ONLY;
float __dp_math_fmaf(float, float, float) __GPU_ONLY;
float __dp_math_fmaxf(float, float) __GPU_ONLY;
float __dp_math_fminf(float, float) __GPU_ONLY;
float __dp_math_fmodf(float, float) __GPU_ONLY;
int __dp_math_fpclassifyf(float) __GPU_ONLY;
float __dp_math_frexpf(float, _Out_ int *) __GPU_ONLY;
float __dp_math_hypotf(float, float) __GPU_ONLY;
int __dp_math_ilogbf(float) __GPU_ONLY;
int __dp_math_isfinitef(float) __GPU_ONLY;
int __dp_math_isinff(float) __GPU_ONLY;
int __dp_math_isnanf(float) __GPU_ONLY;
int __dp_math_isnormalf(float) __GPU_ONLY;
float __dp_math_ldexpf(float, int) __GPU_ONLY;
float __dp_math_lgammaf(float, _Out_ int *) __GPU_ONLY;
float __dp_math_logf(float) __GPU_ONLY;
float __dp_math_log10f(float) __GPU_ONLY;
float __dp_math_log2f(float) __GPU_ONLY;
float __dp_math_log1pf(float) __GPU_ONLY;
float __dp_math_logbf(float) __GPU_ONLY;
float __dp_math_modff(float, _Out_ float *) __GPU_ONLY;
float __dp_math_nanf(int) __GPU_ONLY;
float __dp_math_nearbyintf(float) __GPU_ONLY;
float __dp_math_nextafterf(float, float) __GPU_ONLY;
float __dp_math_phif(float) __GPU_ONLY;
float __dp_math_powf(float, float) __GPU_ONLY;
float __dp_math_probitf(float) __GPU_ONLY;
float __dp_math_rcbrtf(float) __GPU_ONLY;
float __dp_math_remainderf(float, float) __GPU_ONLY;
float __dp_math_remquof(float, float, _Out_ int *) __GPU_ONLY;
float __dp_math_roundf(float) __GPU_ONLY;
float __dp_math_rsqrtf(float) __GPU_ONLY;
float __dp_math_scalbf(float, float) __GPU_ONLY;
float __dp_math_scalbnf(float, int) __GPU_ONLY;
int __dp_math_signbitf(float) __GPU_ONLY;
float __dp_math_sinf(float) __GPU_ONLY;
float __dp_math_sincosf(float, _Out_ float *) __GPU_ONLY;
float __dp_math_sinpif(float) __GPU_ONLY;
float __dp_math_sinhf(float) __GPU_ONLY;
float __dp_math_sqrtf(float) __GPU_ONLY;
float __dp_math_tanf(float) __GPU_ONLY;
float __dp_math_tanhf(float) __GPU_ONLY;
float __dp_math_tanpif(float) __GPU_ONLY;
float __dp_math_tgammaf(float) __GPU_ONLY;
float __dp_math_truncf(float) __GPU_ONLY;
//=============================================================================
// Double-precision precise_math intrinsics.
//=============================================================================
double __dp_math_acos(double) __GPU_ONLY;
double __dp_math_acosh(double) __GPU_ONLY;
double __dp_math_asin(double) __GPU_ONLY;
double __dp_math_asinh(double) __GPU_ONLY;
double __dp_math_atan(double) __GPU_ONLY;
double __dp_math_atan2(double, double) __GPU_ONLY;
double __dp_math_atanh(double) __GPU_ONLY;
double __dp_math_cbrt(double) __GPU_ONLY;
double __dp_math_ceil(double) __GPU_ONLY;
double __dp_math_copysign(double, double) __GPU_ONLY;
double __dp_math_cos(double) __GPU_ONLY;
double __dp_math_cosh(double) __GPU_ONLY;
double __dp_math_cospi(double) __GPU_ONLY;
double __dp_math_erf(double) __GPU_ONLY;
double __dp_math_erfc(double) __GPU_ONLY;
double __dp_math_erfinv(double) __GPU_ONLY;
double __dp_math_erfcinv(double) __GPU_ONLY;
double __dp_math_exp(double) __GPU_ONLY;
double __dp_math_exp2(double) __GPU_ONLY;
double __dp_math_exp10(double) __GPU_ONLY;
double __dp_math_expm1(double) __GPU_ONLY;
double __dp_math_fabs(double) __GPU_ONLY;
double __dp_math_fdim(double, double) __GPU_ONLY;
double __dp_math_floor(double) __GPU_ONLY;
double __dp_math_fma(double, double, double) __GPU_ONLY;
double __dp_math_fmax(double, double) __GPU_ONLY;
double __dp_math_fmin(double, double) __GPU_ONLY;
double __dp_math_fmod(double, double) __GPU_ONLY;
int __dp_math_fpclassify(double) __GPU_ONLY;
double __dp_math_frexp(double, _Out_ int *) __GPU_ONLY;
double __dp_math_hypot(double, double) __GPU_ONLY;
int __dp_math_ilogb(double) __GPU_ONLY;
int __dp_math_isfinite(double) __GPU_ONLY;
int __dp_math_isinf(double) __GPU_ONLY;
int __dp_math_isnan(double) __GPU_ONLY;
int __dp_math_isnormal(double) __GPU_ONLY;
double __dp_math_ldexp(double, int) __GPU_ONLY;
double __dp_math_lgamma(double, _Out_ int *) __GPU_ONLY;
double __dp_math_log(double) __GPU_ONLY;
double __dp_math_log10(double) __GPU_ONLY;
double __dp_math_log2(double) __GPU_ONLY;
double __dp_math_log1p(double) __GPU_ONLY;
double __dp_math_logb(double) __GPU_ONLY;
double __dp_math_modf(double, _Out_ double *) __GPU_ONLY;
double __dp_math_nan(int) __GPU_ONLY;
double __dp_math_nearbyint(double) __GPU_ONLY;
double __dp_math_nextafter(double, double) __GPU_ONLY;
double __dp_math_phi(double) __GPU_ONLY;
double __dp_math_pow(double, double) __GPU_ONLY;
double __dp_math_probit(double) __GPU_ONLY;
double __dp_math_rcbrt(double) __GPU_ONLY;
double __dp_math_remainder(double, double) __GPU_ONLY;
double __dp_math_remquo(double, double, _Out_ int *) __GPU_ONLY;
double __dp_math_round(double) __GPU_ONLY;
double __dp_math_rsqrt(double) __GPU_ONLY;
double __dp_math_scalb(double, double) __GPU_ONLY;
double __dp_math_scalbn(double, int) __GPU_ONLY;
int __dp_math_signbit(double) __GPU_ONLY;
double __dp_math_sin(double) __GPU_ONLY;
double __dp_math_sincos(double, _Out_ double *) __GPU_ONLY;
double __dp_math_sinpi(double) __GPU_ONLY;
double __dp_math_sinh(double) __GPU_ONLY;
double __dp_math_sqrt(double) __GPU_ONLY;
double __dp_math_tan(double) __GPU_ONLY;
double __dp_math_tanh(double) __GPU_ONLY;
double __dp_math_tanpi(double) __GPU_ONLY;
double __dp_math_tgamma(double) __GPU_ONLY;
double __dp_math_trunc(double) __GPU_ONLY;
}
namespace Concurrency
{
/// <summary>
/// Functions in the fast_math namespace have lower accuracy, and support
/// only single-precision float.
/// </summary>
namespace fast_math
{
/// <summary>
/// Returns the absolute value of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the absolute value of the argument
/// </returns>
inline float fabsf(float _X) __GPU_ONLY
{
return __dp_d3d_absf(_X);
}
/// <summary>
/// Returns the absolute value of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the absolute value of the argument
/// </returns>
inline float fabs(float _X) __GPU_ONLY
{
return __dp_d3d_absf(_X);
}
/// <summary>
/// Calculates the arccosine of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the arccosine value of the argument
/// </returns>
inline float acosf(float _X) __GPU_ONLY
{
return __dp_d3d_acosf(_X);
}
/// <summary>
/// Calculates the arccosine of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the arccosine value of the argument
/// </returns>
inline float acos(float _X) __GPU_ONLY
{
return __dp_d3d_acosf(_X);
}
/// <summary>
/// Calculates the arcsine of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the arcsine value of the argument
/// </returns>
inline float asinf(float _X) __GPU_ONLY
{
return __dp_d3d_asinf(_X);
}
/// <summary>
/// Calculates the arcsine of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the arcsine value of the argument
/// </returns>
inline float asin(float _X) __GPU_ONLY
{
return __dp_d3d_asinf(_X);
}
/// <summary>
/// Calculates the arctangent of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the arctangent value of the argument
/// </returns>
inline float atanf(float _X) __GPU_ONLY
{
return __dp_d3d_atanf(_X);
}
/// <summary>
/// Calculates the arctangent of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the arctangent value of the argument
/// </returns>
inline float atan(float _X) __GPU_ONLY
{
return __dp_d3d_atanf(_X);
}
/// <summary>
/// Calculates the arctangent of _Y/_X
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_Y">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the arctangent value of _Y/_X
/// </returns>
inline float atan2f(float _Y, float _X) __GPU_ONLY
{
return __dp_d3d_atan2f(_Y, _X);
}
/// <summary>
/// Calculates the arctangent of _Y/_X
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_Y">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the arctangent value of _Y/_X
/// </returns>
inline float atan2(float _Y, float _X) __GPU_ONLY
{
return __dp_d3d_atan2f(_Y, _X);
}
/// <summary>
/// Calculates the ceiling of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the ceiling of the argument
/// </returns>
inline float ceilf(float _X) __GPU_ONLY
{
return __dp_d3d_ceilf(_X);
}
/// <summary>
/// Calculates the ceiling of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the ceiling of the argument
/// </returns>
inline float ceil(float _X) __GPU_ONLY
{
return __dp_d3d_ceilf(_X);
}
/// <summary>
/// Calculates the cosine of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the cosine value of the argument
/// </returns>
inline float cosf(float _X) __GPU_ONLY
{
return __dp_d3d_cosf(_X);
}
/// <summary>
/// Calculates the cosine of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the cosine value of the argument
/// </returns>
inline float cos(float _X) __GPU_ONLY
{
return __dp_d3d_cosf(_X);
}
/// <summary>
/// Calculates the hyperbolic cosine value of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the hyperbolic cosine value of the argument
/// </returns>
inline float coshf(float _X) __GPU_ONLY
{
return __dp_d3d_coshf(_X);
}
/// <summary>
/// Calculates the hyperbolic cosine value of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the hyperbolic cosine value of the argument
/// </returns>
inline float cosh(float _X) __GPU_ONLY
{
return __dp_d3d_coshf(_X);
}
/// <summary>
/// Calculates the base-e exponential of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the base-e exponential of the argument
/// </returns>
inline float expf(float _X) __GPU_ONLY
{
return __dp_d3d_expf(_X);
}
/// <summary>
/// Calculates the base-e exponential of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the base-e exponential of the argument
/// </returns>
inline float exp(float _X) __GPU_ONLY
{
return __dp_d3d_expf(_X);
}
/// <summary>
/// Calculates the base-2 exponential of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the base-2 exponential of the argument
/// </returns>
inline float exp2f(float _X) __GPU_ONLY
{
return __dp_d3d_exp2f(_X);
}
/// <summary>
/// Calculates the base-2 exponential of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the base-2 exponential of the argument
/// </returns>
inline float exp2(float _X) __GPU_ONLY
{
return __dp_d3d_exp2f(_X);
}
/// <summary>
/// Calculates the floor of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the floor of the argument
/// </returns>
inline float floorf(float _X) __GPU_ONLY
{
return __dp_d3d_floorf(_X);
}
/// <summary>
/// Calculates the floor of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the floor of the argument
/// </returns>
inline float floor(float _X) __GPU_ONLY
{
return __dp_d3d_floorf(_X);
}
/// <summary>
/// Determine the maximum numeric value of the arguments
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_Y">
/// Floating-point value
/// </param>
/// <returns>
/// Return the maximum numeric value of the arguments
/// </returns>
inline float fmaxf(float _X, float _Y) __GPU_ONLY
{
return __dp_d3d_maxf(_X, _Y);
}
/// <summary>
/// Determine the maximum numeric value of the arguments
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_Y">
/// Floating-point value
/// </param>
/// <returns>
/// Return the maximum numeric value of the arguments
/// </returns>
inline float fmax(float _X, float _Y) __GPU_ONLY
{
return __dp_d3d_maxf(_X, _Y);
}
/// <summary>
/// Determine the minimum numeric value of the arguments
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_Y">
/// Floating-point value
/// </param>
/// <returns>
/// Return the minimum numeric value of the arguments
/// </returns>
inline float fminf(float _X, float _Y) __GPU_ONLY
{
return __dp_d3d_minf(_X, _Y);
}
/// <summary>
/// Determine the minimum numeric value of the arguments
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_Y">
/// Floating-point value
/// </param>
/// <returns>
/// Return the minimum numeric value of the arguments
/// </returns>
inline float fmin(float _X, float _Y) __GPU_ONLY
{
return __dp_d3d_minf(_X, _Y);
}
/// <summary>
/// Calculates the floating-point remainder of _X/_Y
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_Y">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the floating-point remainder of _X/_Y
/// </returns>
inline float fmodf(float _X, float _Y) __GPU_ONLY
{
return __dp_d3d_fmodf(_X, _Y);
}
/// <summary>
/// Calculates the floating-point remainder of _X/_Y
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_Y">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the floating-point remainder of _X/_Y
/// </returns>
inline float fmod(float _X, float _Y) __GPU_ONLY
{
return __dp_d3d_fmodf(_X, _Y);
}
/// <summary>
/// Gets the mantissa and exponent of _X
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_Exp">
/// Returns the integer exponent of _X in floating-point value
/// </param>
/// <returns>
/// Returns the mantissa _X
/// </returns>
inline float frexpf(float _X, _Out_ int * _Exp) __GPU_ONLY
{
float _FExp = 0.0f;
float _M = __dp_d3d_frexpf(_X, &_FExp);
*_Exp = static_cast<int>(_FExp);
// Currently, the mantissa returned by d3d's frexp is always positive
// Fetch the sign bit from _X to match cmath frexp
*reinterpret_cast<unsigned int*>(&_M) = *reinterpret_cast<unsigned int*>(&_M) | (*reinterpret_cast<unsigned int*>(&_X) & 0x80000000);
return _M;
}
/// <summary>
/// Gets the mantissa and exponent of _X
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_Exp">
/// Returns the integer exponent of _X in floating-point value
/// </param>
/// <returns>
/// Returns the mantissa _X
/// </returns>
inline float frexp(float _X, _Out_ int * _Exp) __GPU_ONLY
{
return frexpf(_X, _Exp);
}
/// <summary>
/// Determines whether the argument has a finite value
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns a nonzero value if and only if the argument has a finite value
/// </returns>
inline int isfinite(float _X) __GPU_ONLY
{
return __dp_d3d_isfinitef(_X);
}
/// <summary>
/// Determines whether the argument is an infinity
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns a nonzero value if and only if the argument has an infinite value
/// </returns>
inline int isinf(float _X) __GPU_ONLY
{
return __dp_d3d_isinff(_X);
}
/// <summary>
/// Determines whether the argument is a NaN
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns a nonzero value if and only if the argument has a NaN value
/// </returns>
inline int isnan(float _X) __GPU_ONLY
{
return __dp_d3d_isnanf(_X);
}
/// <summary>
/// Computes a real number from the mantissa and exponent
/// </summary>
/// <param name="_X">
/// Floating-point value, mantissa
/// </param>
/// <param name="_Exp">
/// Integer value, exponent
/// </param>
/// <returns>
/// Returns _X * 2^_Exp
/// </returns>
inline float ldexpf(float _X, int _Exp) __GPU_ONLY
{
float _FExp = static_cast<float>(_Exp);
return __dp_d3d_ldexpf(_X, _FExp);
}
/// <summary>
/// Computes a real number from the mantissa and exponent
/// </summary>
/// <param name="_X">
/// Floating-point value, mantissa
/// </param>
/// <param name="_Exp">
/// Integer value, exponent
/// </param>
/// <returns>
/// Returns _X * 2^_Exp
/// </returns>
inline float ldexp(float _X, int _Exp) __GPU_ONLY
{
return ldexpf(_X, _Exp);
}
/// <summary>
/// Calculates the base-e logarithm of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the base-e logarithm of the argument
/// </returns>
inline float logf(float _X) __GPU_ONLY
{
return __dp_d3d_logf(_X);
}
/// <summary>
/// Calculates the base-e logarithm of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the base-e logarithm of the argument
/// </returns>
inline float log(float _X) __GPU_ONLY
{
return __dp_d3d_logf(_X);
}
/// <summary>
/// Calculates the base-10 logarithm of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the base-10 logarithm of the argument
/// </returns>
inline float log10f(float _X) __GPU_ONLY
{
return __dp_d3d_log10f(_X);
}
/// <summary>
/// Calculates the base-10 logarithm of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the base-10 logarithm of the argument
/// </returns>
inline float log10(float _X) __GPU_ONLY
{
return __dp_d3d_log10f(_X);
}
/// <summary>
/// Calculates the base-2 logarithm of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the base-2 logarithm of the argument
/// </returns>
inline float log2f(float _X) __GPU_ONLY
{
return __dp_d3d_log2f(_X);
}
/// <summary>
/// Calculates the base-2 logarithm of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the base-2 logarithm of the argument
/// </returns>
inline float log2(float _X) __GPU_ONLY
{
return __dp_d3d_log2f(_X);
}
/// <summary>
/// Splits _X into fractional and integer parts.
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_Ip">
/// Returns the integer portion of _X in floating-point value
/// </param>
/// <returns>
/// Returns the signed fractional portion of _X
/// </returns>
inline float modff(float _X, float * _Ip) __GPU_ONLY
{
return __dp_d3d_modff(_X, _Ip);
}
/// <summary>
/// Splits _X into fractional and integer parts.
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_Ip">
/// Returns the integer portion of _X in floating-point value
/// </param>
/// <returns>
/// Returns the signed fractional portion of _X
/// </returns>
inline float modf(float _X, float * _Ip) __GPU_ONLY
{
return __dp_d3d_modff(_X, _Ip);
}
/// <summary>
/// Calculates _X raised to the power of _Y
/// </summary>
/// <param name="_X">
/// Floating-point value, base
/// </param>
/// <param name="_Y">
/// Floating-point value, exponent
/// </param>
/// <returns>
/// Returns the value of _X raised to the power of _Y
/// </returns>
inline float powf(float _X, float _Y) __GPU_ONLY
{
return __dp_d3d_powf(_X, _Y);
}
/// <summary>
/// Calculates _X raised to the power of _Y
/// </summary>
/// <param name="_X">
/// Floating-point value, base
/// </param>
/// <param name="_Y">
/// Floating-point value, exponent
/// </param>
/// <returns>
/// Returns the value of _X raised to the power of _Y
/// </returns>
inline float pow(float _X, float _Y) __GPU_ONLY
{
return __dp_d3d_powf(_X, _Y);
}
/// <summary>
/// Rounds _X to the nearest integer
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the nearest integer of _X
/// </returns>
inline float roundf(float _X) __GPU_ONLY
{
return __dp_d3d_roundf(_X);
}
/// <summary>
/// Rounds _X to the nearest integer
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the nearest integer of _X
/// </returns>
inline float round(float _X) __GPU_ONLY
{
return __dp_d3d_roundf(_X);
}
/// <summary>
/// Returns the reciprocal of the square root of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the reciprocal of the square root of the argument
/// </returns>
inline float rsqrtf(float _X) __GPU_ONLY
{
return __dp_d3d_rsqrtf(_X);
}
/// <summary>
/// Returns the reciprocal of the square root of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the reciprocal of the square root of the argument
/// </returns>
inline float rsqrt(float _X) __GPU_ONLY
{
return __dp_d3d_rsqrtf(_X);
}
/// <summary>
/// Returns the sign of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the sign of the argument
/// </returns>
inline int signbitf(float _X) __GPU_ONLY
{
return __dp_d3d_signf(_X);
}
/// <summary>
/// Returns the sign of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the sign of the argument
/// </returns>
inline int signbit(float _X) __GPU_ONLY
{
return __dp_d3d_signf(_X);
}
/// <summary>
/// Calculates the sine value of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the sine value of the argument
/// </returns>
inline float sinf(float _X) __GPU_ONLY
{
return __dp_d3d_sinf(_X);
}
/// <summary>
/// Calculates the sine value of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the sine value of the argument
/// </returns>
inline float sin(float _X) __GPU_ONLY
{
return __dp_d3d_sinf(_X);
}
/// <summary>
/// Calculates sine and cosine value of _X
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_S">
/// Returns the sine value of _X
/// </param>
/// <param name="_C">
/// Returns the cosine value of _X
/// </param>
inline void sincosf(float _X, float * _S, float * _C) __GPU_ONLY
{
*_C = __dp_d3d_sincosf(_X, _S);
}
/// <summary>
/// Calculates sine and cosine value of _X
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_S">
/// Returns the sine value of _X
/// </param>
/// <param name="_C">
/// Returns the cosine value of _X
/// </param>
inline void sincos(float _X, float * _S, float * _C) __GPU_ONLY
{
*_C = __dp_d3d_sincosf(_X, _S);
}
/// <summary>
/// Calculates the hyperbolic sine value of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the hyperbolic sine value of the argument
/// </returns>
inline float sinhf(float _X) __GPU_ONLY
{
return __dp_d3d_sinhf(_X);
}
/// <summary>
/// Calculates the hyperbolic sine value of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the hyperbolic sine value of the argument
/// </returns>
inline float sinh(float _X) __GPU_ONLY
{
return __dp_d3d_sinhf(_X);
}
/// <summary>
/// Calculates the squre root of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the squre root of the argument
/// </returns>
inline float sqrtf(float _X) __GPU_ONLY
{
return __dp_d3d_sqrtf(_X);
}
/// <summary>
/// Calculates the squre root of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the squre root of the argument
/// </returns>
inline float sqrt(float _X) __GPU_ONLY
{
return __dp_d3d_sqrtf(_X);
}
/// <summary>
/// Calculates the tangent value of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the tangent value of the argument
/// </returns>
inline float tanf(float _X) __GPU_ONLY
{
return __dp_d3d_tanf(_X);
}
/// <summary>
/// Calculates the tangent value of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the tangent value of the argument
/// </returns>
inline float tan(float _X) __GPU_ONLY
{
return __dp_d3d_tanf(_X);
}
/// <summary>
/// Calculates the hyperbolic tangent value of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the hyperbolic tangent value of the argument
/// </returns>
inline float tanhf(float _X) __GPU_ONLY
{
return __dp_d3d_tanhf(_X);
}
/// <summary>
/// Calculates the hyperbolic tangent value of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the hyperbolic tangent value of the argument
/// </returns>
inline float tanh(float _X) __GPU_ONLY
{
return __dp_d3d_tanhf(_X);
}
/// <summary>
/// Truncates the argument to the integer component
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the integer component of the argument
/// </returns>
inline float truncf(float _X) __GPU_ONLY
{
return __dp_d3d_truncf(_X);
}
/// <summary>
/// Truncates the argument to the integer component
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the integer component of the argument
/// </returns>
inline float trunc(float _X) __GPU_ONLY
{
return __dp_d3d_truncf(_X);
}
//=============================================================================
// Import CMATH C++ functions:
//=============================================================================
using std::acosf;
using std::asinf;
using std::atanf;
using std::atan2f;
using std::ceilf;
using std::cosf;
using std::coshf;
using std::expf;
using std::fabsf;
using std::floorf;
using std::fmodf;
using std::frexpf;
using std::ldexpf;
using std::logf;
using std::log10f;
using std::modff;
using std::powf;
using std::sinf;
using std::sinhf;
using std::sqrtf;
using std::tanf;
using std::tanhf;
using std::acos;
using std::asin;
using std::atan;
using std::atan2;
using std::ceil;
using std::cos;
using std::cosh;
using std::exp;
using std::fabs;
using std::floor;
using std::fmod;
using std::frexp;
using std::ldexp;
using std::log;
using std::log10;
using std::modf;
using std::pow;
using std::sin;
using std::sinh;
using std::sqrt;
using std::tan;
using std::tanh;
using std::exp2;
using std::exp2f;
using std::fmax;
using std::fmaxf;
using std::fmin;
using std::fminf;
using std::log2;
using std::log2f;
using std::round;
using std::roundf;
using std::trunc;
using std::truncf;
} // namespace fast_math
/// <summary>
/// Functions in the precise_math namespace have higher accuracy, but require
/// double-precision support, which not all accelerators do.
/// </summary>
namespace precise_math
{
/// <summary>
/// Calculates the arccosine of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the arccosine value of the argument
/// </returns>
inline float acosf(float _X) __GPU_ONLY
{
return __dp_math_acosf(_X);
}
/// <summary>
/// Calculates the arccosine of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the arccosine value of the argument
/// </returns>
inline float acos(float _X) __GPU_ONLY
{
return __dp_math_acosf(_X);
}
/// <summary>
/// Calculates the arccosine of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the arccosine value of the argument
/// </returns>
inline double acos(double _X) __GPU_ONLY
{
return __dp_math_acos(_X);
}
/// <summary>
/// Calculates the inverse hyperbolic cosine of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the inverse hyperbolic cosine value of the argument
/// </returns>
inline float acoshf(float _X) __GPU_ONLY
{
return __dp_math_acoshf(_X);
}
/// <summary>
/// Calculates the inverse hyperbolic cosine of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the inverse hyperbolic cosine value of the argument
/// </returns>
inline float acosh(float _X) __GPU_ONLY
{
return __dp_math_acoshf(_X);
}
/// <summary>
/// Calculates the inverse hyperbolic cosine of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the inverse hyperbolic cosine value of the argument
/// </returns>
inline double acosh(double _X) __GPU_ONLY
{
return __dp_math_acosh(_X);
}
/// <summary>
/// Calculates the arcsine of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the arcsine value of the argument
/// </returns>
inline float asinf(float _X) __GPU_ONLY
{
return __dp_math_asinf(_X);
}
/// <summary>
/// Calculates the arcsine of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the arcsine value of the argument
/// </returns>
inline float asin(float _X) __GPU_ONLY
{
return __dp_math_asinf(_X);
}
/// <summary>
/// Calculates the arcsine of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the arcsine value of the argument
/// </returns>
inline double asin(double _X) __GPU_ONLY
{
return __dp_math_asin(_X);
}
/// <summary>
/// Calculates the inverse hyperbolic sine of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the inverse hyperbolic sine value of the argument
/// </returns>
inline float asinhf(float _X) __GPU_ONLY
{
return __dp_math_asinhf(_X);
}
/// <summary>
/// Calculates the inverse hyperbolic sine of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the inverse hyperbolic sine value of the argument
/// </returns>
inline float asinh(float _X) __GPU_ONLY
{
return __dp_math_asinhf(_X);
}
/// <summary>
/// Calculates the inverse hyperbolic sine of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the inverse hyperbolic sine value of the argument
/// </returns>
inline double asinh(double _X) __GPU_ONLY
{
return __dp_math_asinh(_X);
}
/// <summary>
/// Calculates the arctangent of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the arctangent value of the argument
/// </returns>
inline float atanf(float _X) __GPU_ONLY
{
return __dp_math_atanf(_X);
}
/// <summary>
/// Calculates the arctangent of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the arctangent value of the argument
/// </returns>
inline float atan(float _X) __GPU_ONLY
{
return __dp_math_atanf(_X);
}
/// <summary>
/// Calculates the arctangent of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the arctangent value of the argument
/// </returns>
inline double atan(double _X) __GPU_ONLY
{
return __dp_math_atan(_X);
}
/// <summary>
/// Calculates the arctangent of _Y/_X
/// </summary>
/// <param name="_Y">
/// Floating-point value
/// </param>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the arctangent value of _Y/_X
/// </returns>
inline float atan2f(float _Y, float _X) __GPU_ONLY
{
return __dp_math_atan2f(_Y, _X);
}
/// <summary>
/// Calculates the arctangent of _Y/_X
/// </summary>
/// <param name="_Y">
/// Floating-point value
/// </param>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the arctangent value of _Y/_X
/// </returns>
inline float atan2(float _Y, float _X) __GPU_ONLY
{
return __dp_math_atan2f(_Y, _X);
}
/// <summary>
/// Calculates the arctangent of _Y/_X
/// </summary>
/// <param name="_Y">
/// Floating-point value
/// </param>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the arctangent value of _Y/_X
/// </returns>
inline double atan2(double _Y, double _X) __GPU_ONLY
{
return __dp_math_atan2(_Y, _X);
}
/// <summary>
/// Calculates the inverse hyperbolic tangent of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the inverse hyperbolic tangent value of the argument
/// </returns>
inline float atanhf(float _X) __GPU_ONLY
{
return __dp_math_atanhf(_X);
}
/// <summary>
/// Calculates the inverse hyperbolic tangent of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the inverse hyperbolic tangent value of the argument
/// </returns>
inline float atanh(float _X) __GPU_ONLY
{
return __dp_math_atanhf(_X);
}
/// <summary>
/// Calculates the inverse hyperbolic tangent of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the inverse hyperbolic tangent value of the argument
/// </returns>
inline double atanh(double _X) __GPU_ONLY
{
return __dp_math_atanh(_X);
}
/// <summary>
/// Computes the real cube root of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the real cube root of the argument
/// </returns>
inline float cbrtf(float _X) __GPU_ONLY
{
return __dp_math_cbrtf(_X);
}
/// <summary>
/// Computes the real cube root of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the real cube root of the argument
/// </returns>
inline float cbrt(float _X) __GPU_ONLY
{
return __dp_math_cbrtf(_X);
}
/// <summary>
/// Computes the real cube root of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the real cube root of the argument
/// </returns>
inline double cbrt(double _X) __GPU_ONLY
{
return __dp_math_cbrt(_X);
}
/// <summary>
/// Calculates the ceiling of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the ceiling of the argument
/// </returns>
inline float ceilf(float _X) __GPU_ONLY
{
return __dp_math_ceilf(_X);
}
/// <summary>
/// Calculates the ceiling of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the ceiling of the argument
/// </returns>
inline float ceil(float _X) __GPU_ONLY
{
return __dp_math_ceilf(_X);
}
/// <summary>
/// Calculates the ceiling of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the ceiling of the argument
/// </returns>
inline double ceil(double _X) __GPU_ONLY
{
return __dp_math_ceil(_X);
}
/// <summary>
/// Produces a value with the magnitude of _X and the sign of _Y
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_Y">
/// Floating-point value
/// </param>
/// <returns>
/// Returns a value with the magnitude of _X and the sign of _Y
/// </returns>
inline float copysignf(float _X, float _Y) __GPU_ONLY
{
return __dp_math_copysignf(_X, _Y);
}
/// <summary>
/// Produces a value with the magnitude of _X and the sign of _Y
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_Y">
/// Floating-point value
/// </param>
/// <returns>
/// Returns a value with the magnitude of _X and the sign of _Y
/// </returns>
inline float copysign(float _X, float _Y) __GPU_ONLY
{
return __dp_math_copysignf(_X, _Y);
}
/// <summary>
/// Produces a value with the magnitude of _X and the sign of _Y
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_Y">
/// Floating-point value
/// </param>
/// <returns>
/// Returns a value with the magnitude of _X and the sign of _Y
/// </returns>
inline double copysign(double _X, double _Y) __GPU_ONLY
{
return __dp_math_copysign(_X, _Y);
}
/// <summary>
/// Calculates the cosine of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the cosine value of the argument
/// </returns>
inline float cosf(float _X) __GPU_ONLY
{
return __dp_math_cosf(_X);
}
/// <summary>
/// Calculates the cosine of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the cosine value of the argument
/// </returns>
inline float cos(float _X) __GPU_ONLY
{
return __dp_math_cosf(_X);
}
/// <summary>
/// Calculates the cosine of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the cosine value of the argument
/// </returns>
inline double cos(double _X) __GPU_ONLY
{
return __dp_math_cos(_X);
}
/// <summary>
/// Calculates the hyperbolic cosine value of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the hyperbolic cosine value of the argument
/// </returns>
inline float coshf(float _X) __GPU_ONLY
{
return __dp_math_coshf(_X);
}
/// <summary>
/// Calculates the hyperbolic cosine value of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the hyperbolic cosine value of the argument
/// </returns>
inline float cosh(float _X) __GPU_ONLY
{
return __dp_math_coshf(_X);
}
/// <summary>
/// Calculates the hyperbolic cosine value of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the hyperbolic cosine value of the argument
/// </returns>
inline double cosh(double _X) __GPU_ONLY
{
return __dp_math_cosh(_X);
}
/// <summary>
/// Calculates the cosine value of pi * _X
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the cosine value of pi * _X
/// </returns>
inline float cospif(float _X) __GPU_ONLY
{
return __dp_math_cospif(_X);
}
/// <summary>
/// Calculates the cosine value of pi * _X
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the cosine value of pi * _X
/// </returns>
inline float cospi(float _X) __GPU_ONLY
{
return __dp_math_cospif(_X);
}
/// <summary>
/// Calculates the cosine value of pi * _X
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the cosine value of pi * _X
/// </returns>
inline double cospi(double _X) __GPU_ONLY
{
return __dp_math_cospi(_X);
}
/// <summary>
/// Computes the error function of _X
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the error function of _X
/// </returns>
inline float erff(float _X) __GPU_ONLY
{
return __dp_math_erff(_X);
}
/// <summary>
/// Computes the error function of _X
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the error function of _X
/// </returns>
inline float erf(float _X) __GPU_ONLY
{
return __dp_math_erff(_X);
}
/// <summary>
/// Computes the error function of _X
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the error function of _X
/// </returns>
inline double erf(double _X) __GPU_ONLY
{
return __dp_math_erf(_X);
}
/// <summary>
/// Computes the complementary error function of _X
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the complementary error function of _X
/// </returns>
inline float erfcf(float _X) __GPU_ONLY
{
return __dp_math_erfcf(_X);
}
/// <summary>
/// Computes the complementary error function of _X
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the complementary error function of _X
/// </returns>
inline float erfc(float _X) __GPU_ONLY
{
return __dp_math_erfcf(_X);
}
/// <summary>
/// Computes the complementary error function of _X
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the complementary error function of _X
/// </returns>
inline double erfc(double _X) __GPU_ONLY
{
return __dp_math_erfc(_X);
}
/// <summary>
/// Computes the inverse error function of _X
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the inverse error function of _X
/// </returns>
inline float erfinvf(float _X) __GPU_ONLY
{
return __dp_math_erfinvf(_X);
}
/// <summary>
/// Computes the inverse error function of _X
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the inverse error function of _X
/// </returns>
inline float erfinv(float _X) __GPU_ONLY
{
return __dp_math_erfinvf(_X);
}
/// <summary>
/// Computes the inverse error function of _X
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the inverse error function of _X
/// </returns>
inline double erfinv(double _X) __GPU_ONLY
{
return __dp_math_erfinv(_X);
}
/// <summary>
/// Computes the inverse complementary error function of _X
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the inverse complementary error function of _X
/// </returns>
inline float erfcinvf(float _X) __GPU_ONLY
{
return __dp_math_erfcinvf(_X);
}
/// <summary>
/// Computes the inverse complementary error function of _X
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the inverse complementary error function of _X
/// </returns>
inline float erfcinv(float _X) __GPU_ONLY
{
return __dp_math_erfcinvf(_X);
}
/// <summary>
/// Computes the inverse complementary error function of _X
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the inverse complementary error function of _X
/// </returns>
inline double erfcinv(double _X) __GPU_ONLY
{
return __dp_math_erfcinv(_X);
}
/// <summary>
/// Calculates the base-e exponential of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the base-e exponential of the argument
/// </returns>
inline float expf(float _X) __GPU_ONLY
{
return __dp_math_expf(_X);
}
/// <summary>
/// Calculates the base-e exponential of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the base-e exponential of the argument
/// </returns>
inline float exp(float _X) __GPU_ONLY
{
return __dp_math_expf(_X);
}
/// <summary>
/// Calculates the base-e exponential of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the base-e exponential of the argument
/// </returns>
inline double exp(double _X) __GPU_ONLY
{
return __dp_math_exp(_X);
}
/// <summary>
/// Calculates the base-2 exponential of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the base-2 exponential of the argument
/// </returns>
inline float exp2f(float _X) __GPU_ONLY
{
return __dp_math_exp2f(_X);
}
/// <summary>
/// Calculates the base-2 exponential of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the base-2 exponential of the argument
/// </returns>
inline float exp2(float _X) __GPU_ONLY
{
return __dp_math_exp2f(_X);
}
/// <summary>
/// Calculates the base-2 exponential of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the base-2 exponential of the argument
/// </returns>
inline double exp2(double _X) __GPU_ONLY
{
return __dp_math_exp2(_X);
}
/// <summary>
/// Calculates the base-10 exponential of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the base-10 exponential of the argument
/// </returns>
inline float exp10f(float _X) __GPU_ONLY
{
return __dp_math_exp10f(_X);
}
/// <summary>
/// Calculates the base-10 exponential of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the base-10 exponential of the argument
/// </returns>
inline float exp10(float _X) __GPU_ONLY
{
return __dp_math_exp10f(_X);
}
/// <summary>
/// Calculates the base-10 exponential of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the base-10 exponential of the argument
/// </returns>
inline double exp10(double _X) __GPU_ONLY
{
return __dp_math_exp10(_X);
}
/// <summary>
/// Calculates the base-e exponential of the argument, minus 1
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the base-e exponential of the argument, minus 1
/// </returns>
inline float expm1f(float _X) __GPU_ONLY
{
return __dp_math_expm1f(_X);
}
/// <summary>
/// Calculates the base-e exponential of the argument, minus 1
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the base-e exponential of the argument, minus 1
/// </returns>
inline float expm1(float _X) __GPU_ONLY
{
return __dp_math_expm1f(_X);
}
/// <summary>
/// Calculates the base-e exponential of the argument, minus 1
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the base-e exponential of the argument, minus 1
/// </returns>
inline double expm1(double _X) __GPU_ONLY
{
return __dp_math_expm1(_X);
}
/// <summary>
/// Returns the absolute value of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the absolute value of the argument
/// </returns>
inline float fabsf(float _X) __GPU_ONLY
{
return __dp_math_fabsf(_X);
}
/// <summary>
/// Returns the absolute value of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the absolute value of the argument
/// </returns>
inline float fabs(float _X) __GPU_ONLY
{
return __dp_math_fabsf(_X);
}
/// <summary>
/// Returns the absolute value of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the absolute value of the argument
/// </returns>
inline double fabs(double _X) __GPU_ONLY
{
return __dp_math_fabs(_X);
}
/// <summary>
/// Determines the positive difference between the arguments
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_Y">
/// Floating-point value
/// </param>
/// <returns>
/// Returns _X - _Y if _X &gt; _Y; +0, otherwise
/// </returns>
inline float fdimf(float _X, float _Y) __GPU_ONLY
{
return __dp_math_fdimf(_X, _Y);
}
/// <summary>
/// Determines the positive difference between the arguments
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_Y">
/// Floating-point value
/// </param>
/// <returns>
/// Returns _X - _Y if _X &gt; _Y; +0, otherwise
/// </returns>
inline float fdim(float _X, float _Y) __GPU_ONLY
{
return __dp_math_fdimf(_X, _Y);
}
/// <summary>
/// Determines the positive difference between the arguments
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_Y">
/// Floating-point value
/// </param>
/// <returns>
/// Returns _X - _Y if _X &gt; _Y; +0, otherwise
/// </returns>
inline double fdim(double _X, double _Y) __GPU_ONLY
{
return __dp_math_fdim(_X, _Y);
}
/// <summary>
/// Calculates the floor of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the floor of the argument
/// </returns>
inline float floorf(float _X) __GPU_ONLY
{
return __dp_math_floorf(_X);
}
/// <summary>
/// Calculates the floor of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the floor of the argument
/// </returns>
inline float floor(float _X) __GPU_ONLY
{
return __dp_math_floorf(_X);
}
/// <summary>
/// Calculates the floor of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the floor of the argument
/// </returns>
inline double floor(double _X) __GPU_ONLY
{
return __dp_math_floor(_X);
}
/// <summary>
/// Compute (_X * _Y) + _Z, rounded as one ternary operation
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_Y">
/// Floating-point value
/// </param>
/// <param name="_Z">
/// Floating-point value
/// </param>
/// <returns>
/// Returns (_X * _Y) + _Z, rounded as one ternary operation
/// </returns>
inline float fmaf(float _X, float _Y, float _Z) __GPU_ONLY
{
return __dp_math_fmaf(_X, _Y, _Z);
}
/// <summary>
/// Compute (_X * _Y) + _Z, rounded as one ternary operation
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_Y">
/// Floating-point value
/// </param>
/// <param name="_Z">
/// Floating-point value
/// </param>
/// <returns>
/// Returns (_X * _Y) + _Z, rounded as one ternary operation
/// </returns>
inline float fma(float _X, float _Y, float _Z) __GPU_ONLY
{
return __dp_math_fmaf(_X, _Y, _Z);
}
/// <summary>
/// Compute (_X * _Y) + _Z, rounded as one ternary operation
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_Y">
/// Floating-point value
/// </param>
/// <param name="_Z">
/// Floating-point value
/// </param>
/// <returns>
/// Returns (_X * _Y) + _Z, rounded as one ternary operation
/// </returns>
inline double fma(double _X, double _Y, double _Z) __GPU_ONLY
{
return __dp_math_fma(_X, _Y, _Z);
}
/// <summary>
/// Determine the maximum numeric value of the arguments
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_Y">
/// Floating-point value
/// </param>
/// <returns>
/// Return the maximum numeric value of the arguments
/// </returns>
inline float fmaxf(float _X, float _Y) __GPU_ONLY
{
return __dp_math_fmaxf(_X, _Y);
}
/// <summary>
/// Determine the maximum numeric value of the arguments
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_Y">
/// Floating-point value
/// </param>
/// <returns>
/// Return the maximum numeric value of the arguments
/// </returns>
inline float fmax(float _X, float _Y) __GPU_ONLY
{
return __dp_math_fmaxf(_X, _Y);
}
/// <summary>
/// Determine the maximum numeric value of the arguments
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_Y">
/// Floating-point value
/// </param>
/// <returns>
/// Return the maximum numeric value of the arguments
/// </returns>
inline double fmax(double _X, double _Y) __GPU_ONLY
{
return __dp_math_fmax(_X, _Y);
}
/// <summary>
/// Determine the minimum numeric value of the arguments
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_Y">
/// Floating-point value
/// </param>
/// <returns>
/// Return the minimum numeric value of the arguments
/// </returns>
inline float fminf(float _X, float _Y) __GPU_ONLY
{
return __dp_math_fminf(_X, _Y);
}
/// <summary>
/// Determine the minimum numeric value of the arguments
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_Y">
/// Floating-point value
/// </param>
/// <returns>
/// Return the minimum numeric value of the arguments
/// </returns>
inline float fmin(float _X, float _Y) __GPU_ONLY
{
return __dp_math_fminf(_X, _Y);
}
/// <summary>
/// Determine the minimum numeric value of the arguments
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_Y">
/// Floating-point value
/// </param>
/// <returns>
/// Return the minimum numeric value of the arguments
/// </returns>
inline double fmin(double _X, double _Y) __GPU_ONLY
{
return __dp_math_fmin(_X, _Y);
}
/// <summary>
/// Calculates the floating-point remainder of _X/_Y
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_Y">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the floating-point remainder of _X/_Y
/// </returns>
inline float fmodf(float _X, float _Y) __GPU_ONLY
{
return __dp_math_fmodf(_X, _Y);
}
/// <summary>
/// Calculates the floating-point remainder of _X/_Y
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_Y">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the floating-point remainder of _X/_Y
/// </returns>
inline float fmod(float _X, float _Y) __GPU_ONLY
{
return __dp_math_fmodf(_X, _Y);
}
/// <summary>
/// Calculates the floating-point remainder of _X/_Y
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_Y">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the floating-point remainder of _X/_Y
/// </returns>
inline double fmod(double _X, double _Y) __GPU_ONLY
{
return __dp_math_fmod(_X, _Y);
}
/// <summary>
/// Classifies the argument value as NaN, infinite, normal, subnormal, zero
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the value of the number classification macro appropriate to the value of the argument.
/// </returns>
inline int fpclassify(float _X) __GPU_ONLY
{
return __dp_math_fpclassifyf(_X);
}
/// <summary>
/// Classifies the argument value as NaN, infinite, normal, subnormal, zero
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the value of the number classification macro appropriate to the value of the argument.
/// </returns>
inline int fpclassify(double _X) __GPU_ONLY
{
return __dp_math_fpclassify(_X);
}
/// <summary>
/// Gets the mantissa and exponent of _X
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_Exp">
/// Returns the integer exponent of _X in floating-point value
/// </param>
/// <returns>
/// Returns the mantissa _X
/// </returns>
inline float frexpf(float _X, _Out_ int * _Exp) __GPU_ONLY
{
return __dp_math_frexpf(_X, _Exp);
}
/// <summary>
/// Gets the mantissa and exponent of _X
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_Exp">
/// Returns the integer exponent of _X in floating-point value
/// </param>
/// <returns>
/// Returns the mantissa _X
/// </returns>
inline float frexp(float _X, _Out_ int * _Exp) __GPU_ONLY
{
return __dp_math_frexpf(_X, _Exp);
}
/// <summary>
/// Gets the mantissa and exponent of _X
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_Exp">
/// Returns the integer exponent of _X in floating-point value
/// </param>
/// <returns>
/// Returns the mantissa _X
/// </returns>
inline double frexp(double _X, _Out_ int * _Exp) __GPU_ONLY
{
return __dp_math_frexp(_X, _Exp);
}
/// <summary>
/// Computes the square root of the sum of the squares of _X and _Y
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_Y">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the square root of the sum of the squares of _X and _Y
/// </returns>
inline float hypotf(float _X, float _Y) __GPU_ONLY
{
return __dp_math_hypotf(_X, _Y);
}
/// <summary>
/// Computes the square root of the sum of the squares of _X and _Y
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_Y">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the square root of the sum of the squares of _X and _Y
/// </returns>
inline float hypot(float _X, float _Y) __GPU_ONLY
{
return __dp_math_hypotf(_X, _Y);
}
/// <summary>
/// Computes the square root of the sum of the squares of _X and _Y
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_Y">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the square root of the sum of the squares of _X and _Y
/// </returns>
inline double hypot(double _X, double _Y) __GPU_ONLY
{
return __dp_math_hypot(_X, _Y);
}
/// <summary>
/// Extract the exponent of _X as a signed int value
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the exponent of _X as a signed int value
/// </returns>
inline int ilogbf(float _X) __GPU_ONLY
{
return __dp_math_ilogbf(_X);
}
/// <summary>
/// Extract the exponent of _X as a signed int value
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the exponent of _X as a signed int value
/// </returns>
inline int ilogb(float _X) __GPU_ONLY
{
return __dp_math_ilogbf(_X);
}
/// <summary>
/// Extract the exponent of _X as a signed int value
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the exponent of _X as a signed int value
/// </returns>
inline int ilogb(double _X) __GPU_ONLY
{
return __dp_math_ilogb(_X);
}
/// <summary>
/// Determines whether the argument has a finite value
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns a nonzero value if and only if the argument has a finite value
/// </returns>
inline int isfinite(float _X) __GPU_ONLY
{
return __dp_math_isfinitef(_X);
}
/// <summary>
/// Determines whether the argument has a finite value
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns a nonzero value if and only if the argument has a finite value
/// </returns>
inline int isfinite(double _X) __GPU_ONLY
{
return __dp_math_isfinite(_X);
}
/// <summary>
/// Determines whether the argument is an infinity
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns a nonzero value if and only if the argument has an infinite value
/// </returns>
inline int isinf(float _X) __GPU_ONLY
{
return __dp_math_isinff(_X);
}
/// <summary>
/// Determines whether the argument is an infinity
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns a nonzero value if and only if the argument has an infinite value
/// </returns>
inline int isinf(double _X) __GPU_ONLY
{
return __dp_math_isinf(_X);
}
/// <summary>
/// Determines whether the argument is a NaN
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns a nonzero value if and only if the argument has a NaN value
/// </returns>
inline int isnan(float _X) __GPU_ONLY
{
return __dp_math_isnanf(_X);
}
/// <summary>
/// Determines whether the argument is a NaN
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns a nonzero value if and only if the argument has a NaN value
/// </returns>
inline int isnan(double _X) __GPU_ONLY
{
return __dp_math_isnan(_X);
}
/// <summary>
/// Determines whether the argument is a normal
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns a nonzero value if and only if the argument has a normal value
/// </returns>
inline int isnormal(float _X) __GPU_ONLY
{
return __dp_math_isnormalf(_X);
}
/// <summary>
/// Determines whether the argument is a normal
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns a nonzero value if and only if the argument has a normal value
/// </returns>
inline int isnormal(double _X) __GPU_ONLY
{
return __dp_math_isnormal(_X);
}
/// <summary>
/// Computes a real number from the mantissa and exponent
/// </summary>
/// <param name="_X">
/// Floating-point value, mantissa
/// </param>
/// <param name="_Exp">
/// Integer value, exponent
/// </param>
/// <returns>
/// Returns _X * 2^_Exp
/// </returns>
inline float ldexpf(float _X, int _Exp) __GPU_ONLY
{
return __dp_math_ldexpf(_X, _Exp);
}
/// <summary>
/// Computes a real number from the mantissa and exponent
/// </summary>
/// <param name="_X">
/// Floating-point value, mantissa
/// </param>
/// <param name="_Exp">
/// Integer value, exponent
/// </param>
/// <returns>
/// Returns _X * 2^_Exp
/// </returns>
inline float ldexp(float _X, int _Exp) __GPU_ONLY
{
return __dp_math_ldexpf(_X, _Exp);
}
/// <summary>
/// Computes a real number from the mantissa and exponent
/// </summary>
/// <param name="_X">
/// Floating-point value, mantissa
/// </param>
/// <param name="_Exp">
/// Integer value, exponent
/// </param>
/// <returns>
/// Returns _X * 2^_Exp
/// </returns>
inline double ldexp(double _X, int _Exp) __GPU_ONLY
{
return __dp_math_ldexp(_X, _Exp);
}
/// <summary>
/// Computes the natural logarithm of the absolute value of gamma of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_Sign">
/// Returns the sign
/// </param>
/// <returns>
/// Returns the natural logarithm of the absolute value of gamma of the argument
/// </returns>
inline float lgammaf(float _X, _Out_ int * _Sign) __GPU_ONLY
{
return __dp_math_lgammaf(_X, _Sign);
}
/// <summary>
/// Computes the natural logarithm of the absolute value of gamma of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_Sign">
/// Returns the sign
/// </param>
/// <returns>
/// Returns the natural logarithm of the absolute value of gamma of the argument
/// </returns>
inline float lgamma(float _X, _Out_ int * _Sign) __GPU_ONLY
{
return __dp_math_lgammaf(_X, _Sign);
}
/// <summary>
/// Computes the natural logarithm of the absolute value of gamma of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_Sign">
/// Returns the sign
/// </param>
/// <returns>
/// Returns the natural logarithm of the absolute value of gamma of the argument
/// </returns>
inline double lgamma(double _X, _Out_ int * _Sign) __GPU_ONLY
{
return __dp_math_lgamma(_X, _Sign);
}
/// <summary>
/// Calculates the base-e logarithm of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the base-e logarithm of the argument
/// </returns>
inline float logf(float _X) __GPU_ONLY
{
return __dp_math_logf(_X);
}
/// <summary>
/// Calculates the base-e logarithm of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the base-e logarithm of the argument
/// </returns>
inline float log(float _X) __GPU_ONLY
{
return __dp_math_logf(_X);
}
/// <summary>
/// Calculates the base-e logarithm of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the base-e logarithm of the argument
/// </returns>
inline double log(double _X) __GPU_ONLY
{
return __dp_math_log(_X);
}
/// <summary>
/// Calculates the base-10 logarithm of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the base-10 logarithm of the argument
/// </returns>
inline float log10f(float _X) __GPU_ONLY
{
return __dp_math_log10f(_X);
}
/// <summary>
/// Calculates the base-10 logarithm of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the base-10 logarithm of the argument
/// </returns>
inline float log10(float _X) __GPU_ONLY
{
return __dp_math_log10f(_X);
}
/// <summary>
/// Calculates the base-10 logarithm of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the base-10 logarithm of the argument
/// </returns>
inline double log10(double _X) __GPU_ONLY
{
return __dp_math_log10(_X);
}
/// <summary>
/// Calculates the base-2 logarithm of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the base-10 logarithm of the argument
/// </returns>
inline float log2f(float _X) __GPU_ONLY
{
return __dp_math_log2f(_X);
}
/// <summary>
/// Calculates the base-2 logarithm of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the base-10 logarithm of the argument
/// </returns>
inline float log2(float _X) __GPU_ONLY
{
return __dp_math_log2f(_X);
}
/// <summary>
/// Calculates the base-2 logarithm of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the base-10 logarithm of the argument
/// </returns>
inline double log2(double _X) __GPU_ONLY
{
return __dp_math_log2(_X);
}
/// <summary>
/// Calculates the base-e logarithm of 1 plus the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the base-e logarithm of 1 plus the argument
/// </returns>
inline float log1pf(float _X) __GPU_ONLY
{
return __dp_math_log1pf(_X);
}
/// <summary>
/// Calculates the base-e logarithm of 1 plus the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the base-e logarithm of 1 plus the argument
/// </returns>
inline float log1p(float _X) __GPU_ONLY
{
return __dp_math_log1pf(_X);
}
/// <summary>
/// Calculates the base-e logarithm of 1 plus the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the base-e logarithm of 1 plus the argument
/// </returns>
inline double log1p(double _X) __GPU_ONLY
{
return __dp_math_log1p(_X);
}
/// <summary>
/// Extracts the exponent of _X, as a signed integer value in floating-point format
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the signed exponent of _X
/// </returns>
inline float logbf(float _X) __GPU_ONLY
{
return __dp_math_logbf(_X);
}
/// <summary>
/// Extracts the exponent of _X, as a signed integer value in floating-point format
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the signed exponent of _X
/// </returns>
inline float logb(float _X) __GPU_ONLY
{
return __dp_math_logbf(_X);
}
/// <summary>
/// Extracts the exponent of _X, as a signed integer value in floating-point format
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the signed exponent of _X
/// </returns>
inline double logb(double _X) __GPU_ONLY
{
return __dp_math_logb(_X);
}
/// <summary>
/// Splits _X into fractional and integer parts.
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_Iptr">
/// Returns the integer portion of _X in floating-point value
/// </param>
/// <returns>
/// Returns the signed fractional portion of _X
/// </returns>
inline float modff(float _X, _Out_ float * _Iptr) __GPU_ONLY
{
return __dp_math_modff(_X, _Iptr);
}
/// <summary>
/// Splits _X into fractional and integer parts.
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_Iptr">
/// Returns the integer portion of _X in floating-point value
/// </param>
/// <returns>
/// Returns the signed fractional portion of _X
/// </returns>
inline float modf(float _X, _Out_ float * _Iptr) __GPU_ONLY
{
return __dp_math_modff(_X, _Iptr);
}
/// <summary>
/// Splits _X into fractional and integer parts.
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_Iptr">
/// Returns the integer portion of _X in floating-point value
/// </param>
/// <returns>
/// Returns the signed fractional portion of _X
/// </returns>
inline double modf(double _X, _Out_ double * _Iptr) __GPU_ONLY
{
return __dp_math_modf(_X, _Iptr);
}
/// <summary>
/// Returns a quiet NaN
/// </summary>
/// <param name="_X">
/// Integer value
/// </param>
/// <returns>
/// Returns a quiet NaN, if available, with the content indicated in _X
/// </returns>
inline float nanf(int _X) __GPU_ONLY
{
return __dp_math_nanf(_X);
}
/// <summary>
/// Returns a quiet NaN
/// </summary>
/// <param name="_X">
/// Integer value
/// </param>
/// <returns>
/// Returns a quiet NaN, if available, with the content indicated in _X
/// </returns>
inline double nan(int _X) __GPU_ONLY
{
return __dp_math_nan(_X);
}
/// <summary>
/// Rounds the argument to an integer value in
/// floating-point format, using the current rounding direction.
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the rounded integer value.
/// </returns>
inline float nearbyintf(float _X) __GPU_ONLY
{
return __dp_math_nearbyintf(_X);
}
/// <summary>
/// Rounds the argument to an integer value in
/// floating-point format, using the current rounding direction.
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the rounded integer value.
/// </returns>
inline float nearbyint(float _X) __GPU_ONLY
{
return __dp_math_nearbyintf(_X);
}
/// <summary>
/// Rounds the argument to an integer value in
/// floating-point format, using the current rounding direction.
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the rounded integer value.
/// </returns>
inline double nearbyint(double _X) __GPU_ONLY
{
return __dp_math_nearbyint(_X);
}
/// <summary>
/// Determine the next representable value, in the type of the function,
/// after _X in the direction of _Y
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_Y">
/// Floating-point value
/// </param>
/// <returns>
/// Returnsthe the next representable value, in the type of the function,
/// after _X in the direction of _Y
/// </returns>
inline float nextafterf(float _X, float _Y) __GPU_ONLY
{
return __dp_math_nextafterf(_X, _Y);
}
/// <summary>
/// Determine the next representable value, in the type of the function,
/// after _X in the direction of _Y
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_Y">
/// Floating-point value
/// </param>
/// <returns>
/// Returnsthe the next representable value, in the type of the function,
/// after _X in the direction of _Y
/// </returns>
inline float nextafter(float _X, float _Y) __GPU_ONLY
{
return __dp_math_nextafterf(_X, _Y);
}
/// <summary>
/// Determine the next representable value, in the type of the function,
/// after _X in the direction of _Y
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_Y">
/// Floating-point value
/// </param>
/// <returns>
/// Returnsthe the next representable value, in the type of the function,
/// after _X in the direction of _Y
/// </returns>
inline double nextafter(double _X, double _Y) __GPU_ONLY
{
return __dp_math_nextafter(_X, _Y);
}
/// <summary>
/// Returns the cumulative distribution function of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the cumulative distribution function of the argument
/// </returns>
inline float phif(float _X) __GPU_ONLY
{
return __dp_math_phif(_X);
}
/// <summary>
/// Returns the cumulative distribution function of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the cumulative distribution function of the argument
/// </returns>
inline float phi(float _X) __GPU_ONLY
{
return __dp_math_phif(_X);
}
/// <summary>
/// Returns the cumulative distribution function of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the cumulative distribution function of the argument
/// </returns>
inline double phi(double _X) __GPU_ONLY
{
return __dp_math_phi(_X);
}
/// <summary>
/// Calculates _X raised to the power of _Y
/// </summary>
/// <param name="_X">
/// Floating-point value, base
/// </param>
/// <param name="_Y">
/// Floating-point value, exponent
/// </param>
/// <returns>
/// Returns the value of _X raised to the power of _Y
/// </returns>
inline float powf(float _X, float _Y) __GPU_ONLY
{
return __dp_math_powf(_X, _Y);
}
/// <summary>
/// Calculates _X raised to the power of _Y
/// </summary>
/// <param name="_X">
/// Floating-point value, base
/// </param>
/// <param name="_Y">
/// Floating-point value, exponent
/// </param>
/// <returns>
/// Returns the value of _X raised to the power of _Y
/// </returns>
inline float pow(float _X, float _Y) __GPU_ONLY
{
return __dp_math_powf(_X, _Y);
}
/// <summary>
/// Calculates _X raised to the power of _Y
/// </summary>
/// <param name="_X">
/// Floating-point value, base
/// </param>
/// <param name="_Y">
/// Floating-point value, exponent
/// </param>
/// <returns>
/// Returns the value of _X raised to the power of _Y
/// </returns>
inline double pow(double _X, double _Y) __GPU_ONLY
{
return __dp_math_pow(_X, _Y);
}
/// <summary>
/// Returns the inverse cumulative distribution function of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the inverse cumulative distribution function of the argument
/// </returns>
inline float probitf(float _X) __GPU_ONLY
{
return __dp_math_probitf(_X);
}
/// <summary>
/// Returns the inverse cumulative distribution function of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the inverse cumulative distribution function of the argument
/// </returns>
inline float probit(float _X) __GPU_ONLY
{
return __dp_math_probitf(_X);
}
/// <summary>
/// Returns the inverse cumulative distribution function of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the inverse cumulative distribution function of the argument
/// </returns>
inline double probit(double _X) __GPU_ONLY
{
return __dp_math_probit(_X);
}
/// <summary>
/// Returns the reciprocal of the cube root of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the reciprocal of the cube root of the argument
/// </returns>
inline float rcbrtf(float _X) __GPU_ONLY
{
return __dp_math_rcbrtf(_X);
}
/// <summary>
/// Returns the reciprocal of the cube root of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the reciprocal of the cube root of the argument
/// </returns>
inline float rcbrt(float _X) __GPU_ONLY
{
return __dp_math_rcbrtf(_X);
}
/// <summary>
/// Returns the reciprocal of the cube root of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the reciprocal of the cube root of the argument
/// </returns>
inline double rcbrt(double _X) __GPU_ONLY
{
return __dp_math_rcbrt(_X);
}
/// <summary>
/// Computes the remainder: _X REM _Y
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_Y">
/// Floating-point value
/// </param>
/// <returns>
/// Returns _X REM _Y
/// </returns>
inline float remainderf(float _X, float _Y) __GPU_ONLY
{
return __dp_math_remainderf(_X, _Y);
}
/// <summary>
/// Computes the remainder: _X REM _Y
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_Y">
/// Floating-point value
/// </param>
/// <returns>
/// Returns _X REM _Y
/// </returns>
inline float remainder(float _X, float _Y) __GPU_ONLY
{
return __dp_math_remainderf(_X, _Y);
}
/// <summary>
/// Computes the remainder: _X REM _Y
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_Y">
/// Floating-point value
/// </param>
/// <returns>
/// Returns _X REM _Y
/// </returns>
inline double remainder(double _X, double _Y) __GPU_ONLY
{
return __dp_math_remainder(_X, _Y);
}
/// <summary>
/// Computes the same remainder as _X REM _Y. Also calculates
/// the lower 24 bits of the integral quotient _X/_Y, and
/// gives that value the same sign as _X/_Y. It stores this
/// signed value in the integer pointed to by _Quo.
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_Y">
/// Floating-point value
/// </param>
/// <param name="_Quo">
/// Pointer to an integer value
/// </param>
/// <returns>
/// Returns the remainder
/// </returns>
inline float remquof(float _X, float _Y, _Out_ int * _Quo) __GPU_ONLY
{
return __dp_math_remquof(_X, _Y, _Quo);
}
/// <summary>
/// Computes the same remainder as _X REM _Y. Also calculates
/// the lower 24 bits of the integral quotient _X/_Y, and
/// gives that value the same sign as _X/_Y. It stores this
/// signed value in the integer pointed to by _Quo.
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_Y">
/// Floating-point value
/// </param>
/// <param name="_Quo">
/// Pointer to an integer value
/// </param>
/// <returns>
/// Returns the remainder
/// </returns>
inline float remquo(float _X, float _Y, _Out_ int * _Quo) __GPU_ONLY
{
return __dp_math_remquof(_X, _Y, _Quo);
}
/// <summary>
/// Computes the same remainder as _X REM _Y. Also calculates
/// the lower 31 bits of the integral quotient _X/_Y, and
/// gives that value the same sign as _X/_Y. It stores this
/// signed value in the integer pointed to by _Quo.
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_Y">
/// Floating-point value
/// </param>
/// <param name="_Quo">
/// Pointer to an integer value
/// </param>
/// <returns>
/// Returns the remainder
/// </returns>
inline double remquo(double _X, double _Y, _Out_ int * _Quo) __GPU_ONLY
{
return __dp_math_remquo(_X, _Y, _Quo);
}
/// <summary>
/// Rounds _X to the nearest integer
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the nearest integer of _X
/// </returns>
inline float roundf(float _X) __GPU_ONLY
{
return __dp_math_roundf(_X);
}
/// <summary>
/// Rounds _X to the nearest integer
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the nearest integer of _X
/// </returns>
inline float round(float _X) __GPU_ONLY
{
return __dp_math_roundf(_X);
}
/// <summary>
/// Rounds _X to the nearest integer
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the nearest integer of _X
/// </returns>
inline double round(double _X) __GPU_ONLY
{
return __dp_math_round(_X);
}
/// <summary>
/// Returns the reciprocal of the square root of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the reciprocal of the square root of the argument
/// </returns>
inline float rsqrtf(float _X) __GPU_ONLY
{
return __dp_math_rsqrtf(_X);
}
/// <summary>
/// Returns the reciprocal of the square root of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the reciprocal of the square root of the argument
/// </returns>
inline float rsqrt(float _X) __GPU_ONLY
{
return __dp_math_rsqrtf(_X);
}
/// <summary>
/// Returns the reciprocal of the square root of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the reciprocal of the square root of the argument
/// </returns>
inline double rsqrt(double _X) __GPU_ONLY
{
return __dp_math_rsqrt(_X);
}
/// <summary>
/// Multiplies _X by FLT_RADIX to the power _Y
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_Y">
/// Floating-point value
/// </param>
/// <returns>
/// Returns _X * (FLT_RADIX ^ _Y)
/// </returns>
inline float scalbf(float _X, float _Y) __GPU_ONLY
{
return __dp_math_scalbf(_X, _Y);
}
/// <summary>
/// Multiplies _X by FLT_RADIX to the power _Y
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_Y">
/// Floating-point value
/// </param>
/// <returns>
/// Returns _X * (FLT_RADIX ^ _Y)
/// </returns>
inline float scalb(float _X, float _Y) __GPU_ONLY
{
return __dp_math_scalbf(_X, _Y);
}
/// <summary>
/// Multiplies _X by FLT_RADIX to the power _Y
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_Y">
/// Floating-point value
/// </param>
/// <returns>
/// Returns _X * (FLT_RADIX ^ _Y)
/// </returns>
inline double scalb(double _X, double _Y) __GPU_ONLY
{
return __dp_math_scalb(_X, _Y);
}
/// <summary>
/// Multiplies _X by FLT_RADIX to the power _Y
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_Y">
/// Integer value
/// </param>
/// <returns>
/// Returns _X * (FLT_RADIX ^ _Y)
/// </returns>
inline float scalbnf(float _X, int _Y) __GPU_ONLY
{
return __dp_math_scalbnf(_X, _Y);
}
/// <summary>
/// Multiplies _X by FLT_RADIX to the power _Y
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_Y">
/// Integer value
/// </param>
/// <returns>
/// Returns _X * (FLT_RADIX ^ _Y)
/// </returns>
inline float scalbn(float _X, int _Y) __GPU_ONLY
{
return __dp_math_scalbnf(_X, _Y);
}
/// <summary>
/// Multiplies _X by FLT_RADIX to the power _Y
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_Y">
/// Integer value
/// </param>
/// <returns>
/// Returns _X * (FLT_RADIX ^ _Y)
/// </returns>
inline double scalbn(double _X, int _Y) __GPU_ONLY
{
return __dp_math_scalbn(_X, _Y);
}
/// <summary>
/// Determines whether the sign of _X is negative
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns a nonzero value if and only if the sign of _X
/// is negative
/// </returns>
inline int signbitf(float _X) __GPU_ONLY
{
return __dp_math_signbitf(_X);
}
/// <summary>
/// Determines whether the sign of _X is negative
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns a nonzero value if and only if the sign of _X
/// is negative
/// </returns>
inline int signbit(float _X) __GPU_ONLY
{
return __dp_math_signbitf(_X);
}
/// <summary>
/// Determines whether the sign of _X is negative
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns a nonzero value if and only if the sign of _X
/// is negative
/// </returns>
inline int signbit(double _X) __GPU_ONLY
{
return __dp_math_signbit(_X);
}
/// <summary>
/// Calculates the sine value of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the sine value of the argument
/// </returns>
inline float sinf(float _X) __GPU_ONLY
{
return __dp_math_sinf(_X);
}
/// <summary>
/// Calculates the sine value of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the sine value of the argument
/// </returns>
inline float sin(float _X) __GPU_ONLY
{
return __dp_math_sinf(_X);
}
/// <summary>
/// Calculates the sine value of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the sine value of the argument
/// </returns>
inline double sin(double _X) __GPU_ONLY
{
return __dp_math_sin(_X);
}
/// <summary>
/// Calculates sine and cosine value of _X
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_S">
/// Returns the sine value of _X
/// </param>
/// <param name="_C">
/// Returns the cosine value of _X
/// </param>
inline void sincosf(float _X, _Out_ float * _S, _Out_ float * _C) __GPU_ONLY
{
*_C = __dp_math_sincosf(_X, _S);
}
/// <summary>
/// Calculates sine and cosine value of _X
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_S">
/// Returns the sine value of _X
/// </param>
/// <param name="_C">
/// Returns the cosine value of _X
/// </param>
inline void sincos(float _X, _Out_ float * _S, _Out_ float * _C) __GPU_ONLY
{
*_C = __dp_math_sincosf(_X, _S);
}
/// <summary>
/// Calculates sine and cosine value of _X
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <param name="_S">
/// Returns the sine value of _X
/// </param>
/// <param name="_C">
/// Returns the cosine value of _X
/// </param>
inline void sincos(double _X, _Out_ double * _S, _Out_ double * _C) __GPU_ONLY
{
*_C = __dp_math_sincos(_X, _S);
}
/// <summary>
/// Calculates the hyperbolic sine value of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the hyperbolic sine value of the argument
/// </returns>
inline float sinhf(float _X) __GPU_ONLY
{
return __dp_math_sinhf(_X);
}
/// <summary>
/// Calculates the hyperbolic sine value of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the hyperbolic sine value of the argument
/// </returns>
inline float sinh(float _X) __GPU_ONLY
{
return __dp_math_sinhf(_X);
}
/// <summary>
/// Calculates the hyperbolic sine value of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the hyperbolic sine value of the argument
/// </returns>
inline double sinh(double _X) __GPU_ONLY
{
return __dp_math_sinh(_X);
}
/// <summary>
/// Calculates the sine value of pi * _X
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the sine value of pi * _X
/// </returns>
inline float sinpif(float _X) __GPU_ONLY
{
return __dp_math_sinpif(_X);
}
/// <summary>
/// Calculates the sine value of pi * _X
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the sine value of pi * _X
/// </returns>
inline float sinpi(float _X) __GPU_ONLY
{
return __dp_math_sinpif(_X);
}
/// <summary>
/// Calculates the sine value of pi * _X
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the sine value of pi * _X
/// </returns>
inline double sinpi(double _X) __GPU_ONLY
{
return __dp_math_sinpi(_X);
}
/// <summary>
/// Calculates the squre root of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the squre root of the argument
/// </returns>
inline float sqrtf(float _X) __GPU_ONLY
{
return __dp_math_sqrtf(_X);
}
/// <summary>
/// Calculates the squre root of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the squre root of the argument
/// </returns>
inline float sqrt(float _X) __GPU_ONLY
{
return __dp_math_sqrtf(_X);
}
/// <summary>
/// Calculates the squre root of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the squre root of the argument
/// </returns>
inline double sqrt(double _X) __GPU_ONLY
{
return __dp_math_sqrt(_X);
}
/// <summary>
/// Computes the gamma function of _X
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the result of gamma function of _X
/// </returns>
inline float tgammaf(float _X) __GPU_ONLY
{
return __dp_math_tgammaf(_X);
}
/// <summary>
/// Computes the gamma function of _X
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the result of gamma function of _X
/// </returns>
inline float tgamma(float _X) __GPU_ONLY
{
return __dp_math_tgammaf(_X);
}
/// <summary>
/// Computes the gamma function of _X
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the result of gamma function of _X
/// </returns>
inline double tgamma(double _X) __GPU_ONLY
{
return __dp_math_tgamma(_X);
}
/// <summary>
/// Calculates the tangent value of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the tangent value of the argument
/// </returns>
inline float tanf(float _X) __GPU_ONLY
{
return __dp_math_tanf(_X);
}
/// <summary>
/// Calculates the tangent value of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the tangent value of the argument
/// </returns>
inline float tan(float _X) __GPU_ONLY
{
return __dp_math_tanf(_X);
}
/// <summary>
/// Calculates the tangent value of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the tangent value of the argument
/// </returns>
inline double tan(double _X) __GPU_ONLY
{
return __dp_math_tan(_X);
}
/// <summary>
/// Calculates the hyperbolic tangent value of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the hyperbolic tangent value of the argument
/// </returns>
inline float tanhf(float _X) __GPU_ONLY
{
return __dp_math_tanhf(_X);
}
/// <summary>
/// Calculates the hyperbolic tangent value of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the hyperbolic tangent value of the argument
/// </returns>
inline float tanh(float _X) __GPU_ONLY
{
return __dp_math_tanhf(_X);
}
/// <summary>
/// Calculates the hyperbolic tangent value of the argument
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the hyperbolic tangent value of the argument
/// </returns>
inline double tanh(double _X) __GPU_ONLY
{
return __dp_math_tanh(_X);
}
/// <summary>
/// Calculates the tangent value of pi * _X
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the tangent value of pi * _X
/// </returns>
inline float tanpif(float _X) __GPU_ONLY
{
return __dp_math_tanpif(_X);
}
/// <summary>
/// Calculates the tangent value of pi * _X
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the tangent value of pi * _X
/// </returns>
inline float tanpi(float _X) __GPU_ONLY
{
return __dp_math_tanpif(_X);
}
/// <summary>
/// Calculates the tangent value of pi * _X
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the tangent value of pi * _X
/// </returns>
inline double tanpi(double _X) __GPU_ONLY
{
return __dp_math_tanpi(_X);
}
/// <summary>
/// Truncates the argument to the integer component
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the integer component of the argument
/// </returns>
inline float truncf(float _X) __GPU_ONLY
{
return __dp_math_truncf(_X);
}
/// <summary>
/// Truncates the argument to the integer component
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the integer component of the argument
/// </returns>
inline float trunc(float _X) __GPU_ONLY
{
return __dp_math_truncf(_X);
}
/// <summary>
/// Truncates the argument to the integer component
/// </summary>
/// <param name="_X">
/// Floating-point value
/// </param>
/// <returns>
/// Returns the integer component of the argument
/// </returns>
inline double trunc(double _X) __GPU_ONLY
{
return __dp_math_trunc(_X);
}
//=============================================================================
// Import CMATH C++ functions:
//=============================================================================
using std::acosf;
using std::asinf;
using std::atanf;
using std::atan2f;
using std::ceilf;
using std::cosf;
using std::coshf;
using std::expf;
using std::fabsf;
using std::floorf;
using std::fmodf;
using std::frexpf;
using std::hypotf;
using std::ldexpf;
using std::logf;
using std::log10f;
using std::modff;
using std::powf;
using std::sinf;
using std::sinhf;
using std::sqrtf;
using std::tanf;
using std::tanhf;
using std::acos;
using std::asin;
using std::atan;
using std::atan2;
using std::ceil;
using std::cos;
using std::cosh;
using std::exp;
using std::fabs;
using std::floor;
using std::fmod;
using std::frexp;
using std::hypot;
using std::ldexp;
using std::log;
using std::log10;
using std::modf;
using std::pow;
using std::sin;
using std::sinh;
using std::sqrt;
using std::tan;
using std::tanh;
using std::acosh;
using std::acoshf;
using std::asinh;
using std::asinhf;
using std::atanh;
using std::atanhf;
using std::cbrt;
using std::cbrtf;
using std::copysign;
using std::copysignf;
using std::erf;
using std::erfc;
using std::erfcf;
using std::erff;
using std::exp2;
using std::exp2f;
using std::expm1;
using std::expm1f;
using std::fdim;
using std::fdimf;
using std::fma;
using std::fmaf;
using std::fmax;
using std::fmaxf;
using std::fmin;
using std::fminf;
using std::ilogb;
using std::ilogbf;
using std::log1p;
using std::log1pf;
using std::log2;
using std::log2f;
using std::logb;
using std::logbf;
using std::nearbyint;
using std::nearbyintf;
using std::nextafter;
using std::nextafterf;
using std::remainder;
using std::remainderf;
using std::remquo;
using std::remquof;
using std::round;
using std::roundf;
using std::scalbn;
using std::scalbnf;
using std::tgamma;
using std::tgammaf;
using std::trunc;
using std::truncf;
} // namespace precise_math
} // namespace Concurrency