TensorRT  7.2.1.6
NVIDIA TensorRT
Looking for a C++ dev who knows TensorRT?
I'm looking for work. Hire me!
half_float::detail Namespace Reference

Implementation details. More...

Classes

struct  binary_specialized
 Wrapper for binary half-precision functions needing specialization for individual argument types. More...
 
struct  binary_specialized< half, half >
 
struct  binary_t
 Tag type for binary construction. More...
 
struct  bits
 Type traits for floating point bits. More...
 
struct  bits< const T >
 
struct  bits< const volatile T >
 
struct  bits< double >
 Unsigned integer of (at least) 64 bits width. More...
 
struct  bits< float >
 Unsigned integer of (at least) 32 bits width. More...
 
struct  bits< volatile T >
 
struct  bool_type
 Helper for tag dispatching. More...
 
struct  conditional
 Conditional type. More...
 
struct  conditional< false, T, F >
 
struct  enable
 SFINAE helper for generic half-precision functions. More...
 
struct  enable< T, expr, expr, expr >
 
struct  enable< T, expr, expr, half >
 
struct  enable< T, expr, expr, void >
 
struct  enable< T, expr, half, expr >
 
struct  enable< T, expr, half, half >
 
struct  enable< T, expr, half, void >
 
struct  enable< T, expr, void, void >
 
struct  enable< T, half, expr, expr >
 
struct  enable< T, half, expr, half >
 
struct  enable< T, half, expr, void >
 
struct  enable< T, half, half, expr >
 
struct  enable< T, half, half, half >
 
struct  enable< T, half, half, void >
 
struct  enable< T, half, void, void >
 
struct  expr
 Temporary half-precision expression. More...
 
struct  functions
 Wrapper implementing unspecialized half-precision functions. More...
 
struct  half_caster
 Helper class for half casts. More...
 
struct  half_caster< half, expr, R >
 
struct  half_caster< half, half, R >
 
struct  half_caster< half, U, R >
 
struct  half_caster< T, expr, R >
 
struct  half_caster< T, half, R >
 
struct  is_float
 Type traits for floating point types. More...
 
struct  is_float< const T >
 
struct  is_float< const volatile T >
 
struct  is_float< double >
 
struct  is_float< float >
 
struct  is_float< long double >
 
struct  is_float< volatile T >
 
struct  result
 Return type for specialized generic 2-argument half-precision functions. More...
 
struct  result< half, half >
 
struct  unary_specialized
 Wrapper for unary half-precision functions needing specialization for individual argument types. More...
 
struct  unary_specialized< expr >
 

Typedefs

typedef bool_type< true > true_type
 
typedef bool_type< false > false_type
 
typedef unsigned short uint16
 Unsigned integer of (at least) 16 bits width. More...
 

Variables

const binary_t binary = binary_t()
 Tag for binary construction. More...
 

Conversion

template<std::float_round_style R>
uint16 float2half_impl (float value, true_type)
 Convert IEEE single-precision to half-precision. More...
 
template<std::float_round_style R>
uint16 float2half_impl (double value, true_type)
 Convert IEEE double-precision to half-precision. More...
 
template<std::float_round_style R, typename T >
uint16 float2half_impl (T value, false_type)
 Convert non-IEEE floating point to half-precision. More...
 
template<std::float_round_style R, typename T >
uint16 float2half (T value)
 Convert floating point to half-precision. More...
 
template<std::float_round_style R, bool S, typename T >
uint16 int2half_impl (T value)
 Convert integer to half-precision floating point. More...
 
template<std::float_round_style R, typename T >
uint16 int2half (T value)
 Convert integer to half-precision floating point. More...
 
float half2float_impl (uint16 value, float, true_type)
 Convert half-precision to IEEE single-precision. More...
 
double half2float_impl (uint16 value, double, true_type)
 Convert half-precision to IEEE double-precision. More...
 
template<typename T >
half2float_impl (uint16 value, T,...)
 Convert half-precision to non-IEEE floating point. More...
 
template<typename T >
half2float (uint16 value)
 Convert half-precision to floating point. More...
 
template<std::float_round_style R, bool E, typename T >
half2int_impl (uint16 value)
 Convert half-precision floating point to integer. More...
 
template<std::float_round_style R, typename T >
half2int (uint16 value)
 Convert half-precision floating point to integer. More...
 
template<typename T >
half2int_up (uint16 value)
 Convert half-precision floating point to integer using round-to-nearest-away-from-zero. More...
 
template<std::float_round_style R, bool E>
uint16 round_half_impl (uint16 value)
 Round half-precision number to nearest integer value. More...
 
template<std::float_round_style R>
uint16 round_half (uint16 value)
 Round half-precision number to nearest integer value. More...
 
uint16 round_half_up (uint16 value)
 Round half-precision number to nearest integer value using round-to-nearest-away-from-zero. More...
 
template<std::float_round_style R, typename T >
uint16 float2half_impl (T value,...)
 Convert non-IEEE floating point to half-precision. More...
 

Detailed Description

Implementation details.

Typedef Documentation

◆ true_type

◆ false_type

◆ uint16

typedef unsigned short half_float::detail::uint16

Unsigned integer of (at least) 16 bits width.

Function Documentation

◆ builtin_isinf()

template<typename T >
bool half_float::detail::builtin_isinf ( arg)

Check for infinity.

Template Parameters
Targument type (builtin floating point type)
Parameters
argvalue to query
Return values
trueif infinity
falseelse
Here is the caller graph for this function:

◆ builtin_isnan()

template<typename T >
bool half_float::detail::builtin_isnan ( arg)

Check for NaN.

Template Parameters
Targument type (builtin floating point type)
Parameters
argvalue to query
Return values
trueif not a number
falseelse
Here is the caller graph for this function:

◆ builtin_signbit()

template<typename T >
bool half_float::detail::builtin_signbit ( arg)

Check sign.

Template Parameters
Targument type (builtin floating point type)
Parameters
argvalue to query
Return values
trueif signbit set
falseelse
Here is the caller graph for this function:

◆ float2half_impl() [1/4]

template<std::float_round_style R>
uint16 half_float::detail::float2half_impl ( float  value,
true_type   
)

Convert IEEE single-precision to half-precision.

Credit for this goes to Jeroen van der Zijp.

Template Parameters
Rrounding mode to use, std::round_indeterminate for fastest rounding
Parameters
valuesingle-precision value
Returns
binary representation of half-precision value

◆ float2half_impl() [2/4]

template<std::float_round_style R>
uint16 half_float::detail::float2half_impl ( double  value,
true_type   
)

Convert IEEE double-precision to half-precision.

Template Parameters
Rrounding mode to use, std::round_indeterminate for fastest rounding
Parameters
valuedouble-precision value
Returns
binary representation of half-precision value
Here is the call graph for this function:

◆ float2half_impl() [3/4]

template<std::float_round_style R, typename T >
uint16 half_float::detail::float2half_impl ( value,
false_type   
)

Convert non-IEEE floating point to half-precision.

Template Parameters
Rrounding mode to use, std::round_indeterminate for fastest rounding
Tsource type (builtin floating point type)
Parameters
valuefloating point value
Returns
binary representation of half-precision value
Here is the call graph for this function:

◆ float2half()

template<std::float_round_style R, typename T >
uint16 half_float::detail::float2half ( value)

Convert floating point to half-precision.

Template Parameters
Rrounding mode to use, std::round_indeterminate for fastest rounding
Tsource type (builtin floating point type)
Parameters
valuefloating point value
Returns
binary representation of half-precision value

◆ int2half_impl()

template<std::float_round_style R, bool S, typename T >
uint16 half_float::detail::int2half_impl ( value)

Convert integer to half-precision floating point.

Template Parameters
Rrounding mode to use, std::round_indeterminate for fastest rounding
Strue if value negative, false else
Ttype to convert (builtin integer type)
Parameters
valuenon-negative integral value
Returns
binary representation of half-precision value
Here is the call graph for this function:

◆ int2half()

template<std::float_round_style R, typename T >
uint16 half_float::detail::int2half ( value)

Convert integer to half-precision floating point.

Template Parameters
Rrounding mode to use, std::round_indeterminate for fastest rounding
Ttype to convert (builtin integer type)
Parameters
valueintegral value
Returns
binary representation of half-precision value

◆ half2float_impl() [1/3]

float half_float::detail::half2float_impl ( uint16  value,
float  ,
true_type   
)
inline

Convert half-precision to IEEE single-precision.

Credit for this goes to Jeroen van der Zijp.

Parameters
valuebinary representation of half-precision value
Returns
single-precision value
Here is the caller graph for this function:

◆ half2float_impl() [2/3]

double half_float::detail::half2float_impl ( uint16  value,
double  ,
true_type   
)
inline

Convert half-precision to IEEE double-precision.

Parameters
valuebinary representation of half-precision value
Returns
double-precision value
Here is the call graph for this function:

◆ half2float_impl() [3/3]

template<typename T >
T half_float::detail::half2float_impl ( uint16  value,
,
  ... 
)

Convert half-precision to non-IEEE floating point.

Template Parameters
Ttype to convert to (builtin integer type)
Parameters
valuebinary representation of half-precision value
Returns
floating point value
Here is the call graph for this function:

◆ half2float()

template<typename T >
T half_float::detail::half2float ( uint16  value)

Convert half-precision to floating point.

Template Parameters
Ttype to convert to (builtin integer type)
Parameters
valuebinary representation of half-precision value
Returns
floating point value
Here is the call graph for this function:

◆ half2int_impl()

template<std::float_round_style R, bool E, typename T >
T half_float::detail::half2int_impl ( uint16  value)

Convert half-precision floating point to integer.

Template Parameters
Rrounding mode to use, std::round_indeterminate for fastest rounding
Etrue for round to even, false for round away from zero
Ttype to convert to (buitlin integer type with at least 16 bits precision, excluding any implicit sign bits)
Parameters
valuebinary representation of half-precision value
Returns
integral value
Template Parameters
Rrounding mode to use, std::round_indeterminate for fastest rounding
Etrue for round to even, false for round away from zero
Ttype to convert to (buitlin integer type with at least 16 bits precision, excluding any implicit sign bits)
Parameters
valuebinary representation of half-precision value
Returns
integral value

◆ half2int()

template<std::float_round_style R, typename T >
T half_float::detail::half2int ( uint16  value)

Convert half-precision floating point to integer.

Template Parameters
Rrounding mode to use, std::round_indeterminate for fastest rounding
Ttype to convert to (buitlin integer type with at least 16 bits precision, excluding any implicit sign bits)
Parameters
valuebinary representation of half-precision value
Returns
integral value
Template Parameters
Rrounding mode to use, std::round_indeterminate for fastest rounding
Ttype to convert to (buitlin integer type with at least 16 bits precision, excluding any implicit sign bits)
Parameters
valuebinary representation of half-precision value
Returns
integral value

◆ half2int_up()

template<typename T >
T half_float::detail::half2int_up ( uint16  value)

Convert half-precision floating point to integer using round-to-nearest-away-from-zero.

Template Parameters
Ttype to convert to (buitlin integer type with at least 16 bits precision, excluding any implicit sign bits)
Parameters
valuebinary representation of half-precision value
Returns
integral value
Template Parameters
Ttype to convert to (buitlin integer type with at least 16 bits precision, excluding any implicit sign bits)
Parameters
valuebinary representation of half-precision value
Returns
integral value

◆ round_half_impl()

template<std::float_round_style R, bool E>
uint16 half_float::detail::round_half_impl ( uint16  value)

Round half-precision number to nearest integer value.

Template Parameters
Rrounding mode to use, std::round_indeterminate for fastest rounding
Etrue for round to even, false for round away from zero
Parameters
valuebinary representation of half-precision value
Returns
half-precision bits for nearest integral value

◆ round_half()

template<std::float_round_style R>
uint16 half_float::detail::round_half ( uint16  value)

Round half-precision number to nearest integer value.

Template Parameters
Rrounding mode to use, std::round_indeterminate for fastest rounding
Parameters
valuebinary representation of half-precision value
Returns
half-precision bits for nearest integral value

◆ round_half_up()

uint16 half_float::detail::round_half_up ( uint16  value)
inline

Round half-precision number to nearest integer value using round-to-nearest-away-from-zero.

Parameters
valuebinary representation of half-precision value
Returns
half-precision bits for nearest integral value
Here is the caller graph for this function:

◆ operator==()

template<typename T , typename U >
enable< bool, T, U >::type half_float::detail::operator== ( x,
y 
)

Comparison for equality.

Parameters
xfirst operand
ysecond operand
Return values
trueif operands equal
falseelse
Here is the call graph for this function:

◆ operator!=()

template<typename T , typename U >
enable< bool, T, U >::type half_float::detail::operator!= ( x,
y 
)

Comparison for inequality.

Parameters
xfirst operand
ysecond operand
Return values
trueif operands not equal
falseelse
Here is the call graph for this function:

◆ operator<()

template<typename T , typename U >
enable< bool, T, U >::type half_float::detail::operator< ( x,
y 
)

Comparison for less than.

Parameters
xfirst operand
ysecond operand
Return values
trueif x less than y
falseelse
Here is the call graph for this function:

◆ operator>()

template<typename T , typename U >
enable< bool, T, U >::type half_float::detail::operator> ( x,
y 
)

Comparison for greater than.

Parameters
xfirst operand
ysecond operand
Return values
trueif x greater than y
falseelse
Here is the call graph for this function:

◆ operator<=()

template<typename T , typename U >
enable< bool, T, U >::type half_float::detail::operator<= ( x,
y 
)

Comparison for less equal.

Parameters
xfirst operand
ysecond operand
Return values
trueif x less equal y
falseelse
Here is the call graph for this function:

◆ operator>=()

template<typename T , typename U >
enable< bool, T, U >::type half_float::detail::operator>= ( x,
y 
)

Comparison for greater equal.

Parameters
xfirst operand
ysecond operand
Return values
trueif x greater equal y
falseelse
Here is the call graph for this function:

◆ operator+() [1/2]

template<typename T , typename U >
enable< expr, T, U >::type half_float::detail::operator+ ( x,
y 
)

Add halfs.

Parameters
xleft operand
yright operand
Returns
sum of half expressions
Here is the call graph for this function:

◆ operator-() [1/2]

template<typename T , typename U >
enable< expr, T, U >::type half_float::detail::operator- ( x,
y 
)

Subtract halfs.

Parameters
xleft operand
yright operand
Returns
difference of half expressions
Here is the call graph for this function:

◆ operator*()

template<typename T , typename U >
enable< expr, T, U >::type half_float::detail::operator* ( x,
y 
)

Multiply halfs.

Parameters
xleft operand
yright operand
Returns
product of half expressions
Here is the call graph for this function:

◆ operator/()

template<typename T , typename U >
enable< expr, T, U >::type half_float::detail::operator/ ( x,
y 
)

Divide halfs.

Parameters
xleft operand
yright operand
Returns
quotient of half expressions
Here is the call graph for this function:

◆ operator+() [2/2]

template<typename T >
enable< T, T >::type half_float::detail::operator+ ( arg)

Identity.

Parameters
argoperand
Returns
uncahnged operand

◆ operator-() [2/2]

template<typename T >
enable< T, T >::type half_float::detail::operator- ( arg)

Negation.

Parameters
argoperand
Returns
negated operand
Here is the call graph for this function:

◆ operator<<()

template<typename T , typename charT , typename traits >
enable< std::basic_ostream< charT, traits > &, T >::type half_float::detail::operator<< ( std::basic_ostream< charT, traits > &  out,
arg 
)

Output operator.

Parameters
outoutput stream to write into
arghalf expression to write
Returns
reference to output stream
Here is the call graph for this function:

◆ operator>>()

template<typename charT , typename traits >
std::basic_istream< charT, traits > & half_float::detail::operator>> ( std::basic_istream< charT, traits > &  in,
half arg 
)

Input operator.

Parameters
ininput stream to read from
arghalf to read into
Returns
reference to input stream
Here is the call graph for this function:

◆ abs() [1/2]

half half_float::detail::abs ( half  arg)
inline

Absolute value.

Parameters
argoperand
Returns
absolute value of arg
Here is the call graph for this function:
Here is the caller graph for this function:

◆ abs() [2/2]

expr half_float::detail::abs ( expr  arg)
inline

Absolute value.

Parameters
argoperand
Returns
absolute value of arg
Here is the call graph for this function:

◆ fabs() [1/2]

half half_float::detail::fabs ( half  arg)
inline

Absolute value.

Parameters
argoperand
Returns
absolute value of arg
Here is the call graph for this function:
Here is the caller graph for this function:

◆ fabs() [2/2]

expr half_float::detail::fabs ( expr  arg)
inline

Absolute value.

Parameters
argoperand
Returns
absolute value of arg
Here is the call graph for this function:

◆ fmod() [1/4]

expr half_float::detail::fmod ( half  x,
half  y 
)
inline

Remainder of division.

Parameters
xfirst operand
ysecond operand
Returns
remainder of floating point division.
Here is the call graph for this function:

◆ fmod() [2/4]

expr half_float::detail::fmod ( half  x,
expr  y 
)
inline

Absolute value.

Parameters
argoperand
Returns
absolute value of arg
Here is the call graph for this function:

◆ fmod() [3/4]

expr half_float::detail::fmod ( expr  x,
half  y 
)
inline

Absolute value.

Parameters
argoperand
Returns
absolute value of arg
Here is the call graph for this function:

◆ fmod() [4/4]

expr half_float::detail::fmod ( expr  x,
expr  y 
)
inline

Absolute value.

Parameters
argoperand
Returns
absolute value of arg
Here is the call graph for this function:

◆ remainder() [1/4]

expr half_float::detail::remainder ( half  x,
half  y 
)
inline

Remainder of division.

Parameters
xfirst operand
ysecond operand
Returns
remainder of floating point division.
Here is the call graph for this function:

◆ remainder() [2/4]

expr half_float::detail::remainder ( half  x,
expr  y 
)
inline

Absolute value.

Parameters
argoperand
Returns
absolute value of arg
Here is the call graph for this function:

◆ remainder() [3/4]

expr half_float::detail::remainder ( expr  x,
half  y 
)
inline

Absolute value.

Parameters
argoperand
Returns
absolute value of arg
Here is the call graph for this function:

◆ remainder() [4/4]

expr half_float::detail::remainder ( expr  x,
expr  y 
)
inline

Absolute value.

Parameters
argoperand
Returns
absolute value of arg
Here is the call graph for this function:

◆ remquo() [1/4]

expr half_float::detail::remquo ( half  x,
half  y,
int quo 
)
inline

Remainder of division.

Parameters
xfirst operand
ysecond operand
quoaddress to store some bits of quotient at
Returns
remainder of floating point division.
Here is the call graph for this function:

◆ remquo() [2/4]

expr half_float::detail::remquo ( half  x,
expr  y,
int quo 
)
inline

Absolute value.

Parameters
argoperand
Returns
absolute value of arg
Here is the call graph for this function:

◆ remquo() [3/4]

expr half_float::detail::remquo ( expr  x,
half  y,
int quo 
)
inline

Absolute value.

Parameters
argoperand
Returns
absolute value of arg
Here is the call graph for this function:

◆ remquo() [4/4]

expr half_float::detail::remquo ( expr  x,
expr  y,
int quo 
)
inline

Absolute value.

Parameters
argoperand
Returns
absolute value of arg
Here is the call graph for this function:

◆ fma() [1/8]

expr half_float::detail::fma ( half  x,
half  y,
half  z 
)
inline

Fused multiply add.

Parameters
xfirst operand
ysecond operand
zthird operand
Returns
( x * y ) + z rounded as one operation.
Here is the call graph for this function:

◆ fma() [2/8]

expr half_float::detail::fma ( half  x,
half  y,
expr  z 
)
inline

Absolute value.

Parameters
argoperand
Returns
absolute value of arg
Here is the call graph for this function:

◆ fma() [3/8]

expr half_float::detail::fma ( half  x,
expr  y,
half  z 
)
inline

Absolute value.

Parameters
argoperand
Returns
absolute value of arg
Here is the call graph for this function:

◆ fma() [4/8]

expr half_float::detail::fma ( half  x,
expr  y,
expr  z 
)
inline

Absolute value.

Parameters
argoperand
Returns
absolute value of arg
Here is the call graph for this function:

◆ fma() [5/8]

expr half_float::detail::fma ( expr  x,
half  y,
half  z 
)
inline

Absolute value.

Parameters
argoperand
Returns
absolute value of arg
Here is the call graph for this function:

◆ fma() [6/8]

expr half_float::detail::fma ( expr  x,
half  y,
expr  z 
)
inline

Absolute value.

Parameters
argoperand
Returns
absolute value of arg
Here is the call graph for this function:

◆ fma() [7/8]

expr half_float::detail::fma ( expr  x,
expr  y,
half  z 
)
inline

Absolute value.

Parameters
argoperand
Returns
absolute value of arg
Here is the call graph for this function:

◆ fma() [8/8]

expr half_float::detail::fma ( expr  x,
expr  y,
expr  z 
)
inline

Absolute value.

Parameters
argoperand
Returns
absolute value of arg
Here is the call graph for this function:

◆ fmax() [1/4]

half half_float::detail::fmax ( half  x,
half  y 
)
inline

Maximum of half expressions.

Parameters
xfirst operand
ysecond operand
Returns
maximum of operands
Here is the call graph for this function:

◆ fmax() [2/4]

expr half_float::detail::fmax ( half  x,
expr  y 
)
inline

Absolute value.

Parameters
argoperand
Returns
absolute value of arg
Here is the call graph for this function:

◆ fmax() [3/4]

expr half_float::detail::fmax ( expr  x,
half  y 
)
inline

Absolute value.

Parameters
argoperand
Returns
absolute value of arg
Here is the call graph for this function:

◆ fmax() [4/4]

expr half_float::detail::fmax ( expr  x,
expr  y 
)
inline

Absolute value.

Parameters
argoperand
Returns
absolute value of arg
Here is the call graph for this function:

◆ fmin() [1/4]

half half_float::detail::fmin ( half  x,
half  y 
)
inline

Minimum of half expressions.

Parameters
xfirst operand
ysecond operand
Returns
minimum of operands
Here is the call graph for this function:

◆ fmin() [2/4]

expr half_float::detail::fmin ( half  x,
expr  y 
)
inline

Absolute value.

Parameters
argoperand
Returns
absolute value of arg
Here is the call graph for this function:

◆ fmin() [3/4]

expr half_float::detail::fmin ( expr  x,
half  y 
)
inline

Absolute value.

Parameters
argoperand
Returns
absolute value of arg
Here is the call graph for this function:

◆ fmin() [4/4]

expr half_float::detail::fmin ( expr  x,
expr  y 
)
inline

Absolute value.

Parameters
argoperand
Returns
absolute value of arg
Here is the call graph for this function:

◆ fdim() [1/4]

expr half_float::detail::fdim ( half  x,
half  y 
)
inline

Positive difference.

Parameters
xfirst operand
ysecond operand
Returns
x - y or 0 if difference negative
Here is the call graph for this function:

◆ fdim() [2/4]

expr half_float::detail::fdim ( half  x,
expr  y 
)
inline

Absolute value.

Parameters
argoperand
Returns
absolute value of arg
Here is the call graph for this function:

◆ fdim() [3/4]

expr half_float::detail::fdim ( expr  x,
half  y 
)
inline

Absolute value.

Parameters
argoperand
Returns
absolute value of arg
Here is the call graph for this function:

◆ fdim() [4/4]

expr half_float::detail::fdim ( expr  x,
expr  y 
)
inline

Absolute value.

Parameters
argoperand
Returns
absolute value of arg
Here is the call graph for this function:

◆ nanh()

half half_float::detail::nanh ( const char *  )
inline

Get NaN value.

Returns
quiet NaN
Here is the call graph for this function:

◆ exp() [1/2]

expr half_float::detail::exp ( half  arg)
inline

Exponential function.

Parameters
argfunction argument
Returns
e raised to arg
Here is the call graph for this function:
Here is the caller graph for this function:

◆ exp() [2/2]

expr half_float::detail::exp ( expr  arg)
inline

Exponential function.

Parameters
argfunction argument
Returns
e raised to arg
Here is the call graph for this function:

◆ expm1() [1/2]

expr half_float::detail::expm1 ( half  arg)
inline

Exponential minus one.

Parameters
argfunction argument
Returns
e raised to arg subtracted by 1
Here is the call graph for this function:

◆ expm1() [2/2]

expr half_float::detail::expm1 ( expr  arg)
inline

Exponential function.

Parameters
argfunction argument
Returns
e raised to arg
Here is the call graph for this function:

◆ exp2() [1/2]

expr half_float::detail::exp2 ( half  arg)
inline

Binary exponential.

Parameters
argfunction argument
Returns
2 raised to arg
Here is the call graph for this function:

◆ exp2() [2/2]

expr half_float::detail::exp2 ( expr  arg)
inline

Exponential function.

Parameters
argfunction argument
Returns
e raised to arg
Here is the call graph for this function:

◆ log() [1/2]

expr half_float::detail::log ( half  arg)
inline

Natural logorithm.

Parameters
argfunction argument
Returns
logarithm of arg to base e
Here is the call graph for this function:

◆ log() [2/2]

expr half_float::detail::log ( expr  arg)
inline

Exponential function.

Parameters
argfunction argument
Returns
e raised to arg
Here is the call graph for this function:

◆ log10() [1/2]

expr half_float::detail::log10 ( half  arg)
inline

Common logorithm.

Parameters
argfunction argument
Returns
logarithm of arg to base 10
Here is the call graph for this function:

◆ log10() [2/2]

expr half_float::detail::log10 ( expr  arg)
inline

Exponential function.

Parameters
argfunction argument
Returns
e raised to arg
Here is the call graph for this function:

◆ log1p() [1/2]

expr half_float::detail::log1p ( half  arg)
inline

Natural logorithm.

Parameters
argfunction argument
Returns
logarithm of arg plus 1 to base e
Here is the call graph for this function:

◆ log1p() [2/2]

expr half_float::detail::log1p ( expr  arg)
inline

Exponential function.

Parameters
argfunction argument
Returns
e raised to arg
Here is the call graph for this function:

◆ log2() [1/2]

expr half_float::detail::log2 ( half  arg)
inline

Binary logorithm.

Parameters
argfunction argument
Returns
logarithm of arg to base 2
Here is the call graph for this function:

◆ log2() [2/2]

expr half_float::detail::log2 ( expr  arg)
inline

Exponential function.

Parameters
argfunction argument
Returns
e raised to arg
Here is the call graph for this function:

◆ sqrt() [1/2]

expr half_float::detail::sqrt ( half  arg)
inline

Square root.

Parameters
argfunction argument
Returns
square root of arg
Here is the call graph for this function:

◆ sqrt() [2/2]

expr half_float::detail::sqrt ( expr  arg)
inline

Square root.

Parameters
argfunction argument
Returns
square root of arg
Here is the call graph for this function:

◆ cbrt() [1/2]

expr half_float::detail::cbrt ( half  arg)
inline

Cubic root.

Parameters
argfunction argument
Returns
cubic root of arg
Here is the call graph for this function:

◆ cbrt() [2/2]

expr half_float::detail::cbrt ( expr  arg)
inline

Square root.

Parameters
argfunction argument
Returns
square root of arg
Here is the call graph for this function:

◆ hypot() [1/4]

expr half_float::detail::hypot ( half  x,
half  y 
)
inline

Hypotenuse function.

Parameters
xfirst argument
ysecond argument
Returns
square root of sum of squares without internal over- or underflows
Here is the call graph for this function:

◆ hypot() [2/4]

expr half_float::detail::hypot ( half  x,
expr  y 
)
inline

Square root.

Parameters
argfunction argument
Returns
square root of arg
Here is the call graph for this function:

◆ hypot() [3/4]

expr half_float::detail::hypot ( expr  x,
half  y 
)
inline

Square root.

Parameters
argfunction argument
Returns
square root of arg
Here is the call graph for this function:

◆ hypot() [4/4]

expr half_float::detail::hypot ( expr  x,
expr  y 
)
inline

Square root.

Parameters
argfunction argument
Returns
square root of arg
Here is the call graph for this function:

◆ pow() [1/4]

expr half_float::detail::pow ( half  base,
half  exp 
)
inline

Power function.

Parameters
basefirst argument
expsecond argument
Returns
base raised to exp
Here is the call graph for this function:

◆ pow() [2/4]

expr half_float::detail::pow ( half  base,
expr  exp 
)
inline

Square root.

Parameters
argfunction argument
Returns
square root of arg
Here is the call graph for this function:

◆ pow() [3/4]

expr half_float::detail::pow ( expr  base,
half  exp 
)
inline

Square root.

Parameters
argfunction argument
Returns
square root of arg
Here is the call graph for this function:

◆ pow() [4/4]

expr half_float::detail::pow ( expr  base,
expr  exp 
)
inline

Square root.

Parameters
argfunction argument
Returns
square root of arg
Here is the call graph for this function:

◆ sin() [1/2]

expr half_float::detail::sin ( half  arg)
inline

Sine function.

Parameters
argfunction argument
Returns
sine value of arg
Here is the call graph for this function:

◆ sin() [2/2]

expr half_float::detail::sin ( expr  arg)
inline

Sine function.

Parameters
argfunction argument
Returns
sine value of arg
Here is the call graph for this function:

◆ cos() [1/2]

expr half_float::detail::cos ( half  arg)
inline

Cosine function.

Parameters
argfunction argument
Returns
cosine value of arg
Here is the call graph for this function:

◆ cos() [2/2]

expr half_float::detail::cos ( expr  arg)
inline

Sine function.

Parameters
argfunction argument
Returns
sine value of arg
Here is the call graph for this function:

◆ tan() [1/2]

expr half_float::detail::tan ( half  arg)
inline

Tangent function.

Parameters
argfunction argument
Returns
tangent value of arg
Here is the call graph for this function:

◆ tan() [2/2]

expr half_float::detail::tan ( expr  arg)
inline

Sine function.

Parameters
argfunction argument
Returns
sine value of arg
Here is the call graph for this function:

◆ asin() [1/2]

expr half_float::detail::asin ( half  arg)
inline

Arc sine.

Parameters
argfunction argument
Returns
arc sine value of arg
Here is the call graph for this function:

◆ asin() [2/2]

expr half_float::detail::asin ( expr  arg)
inline

Sine function.

Parameters
argfunction argument
Returns
sine value of arg
Here is the call graph for this function:

◆ acos() [1/2]

expr half_float::detail::acos ( half  arg)
inline

Arc cosine function.

Parameters
argfunction argument
Returns
arc cosine value of arg
Here is the call graph for this function:

◆ acos() [2/2]

expr half_float::detail::acos ( expr  arg)
inline

Sine function.

Parameters
argfunction argument
Returns
sine value of arg
Here is the call graph for this function:

◆ atan() [1/2]

expr half_float::detail::atan ( half  arg)
inline

Arc tangent function.

Parameters
argfunction argument
Returns
arc tangent value of arg
Here is the call graph for this function:

◆ atan() [2/2]

expr half_float::detail::atan ( expr  arg)
inline

Sine function.

Parameters
argfunction argument
Returns
sine value of arg
Here is the call graph for this function:

◆ atan2() [1/4]

expr half_float::detail::atan2 ( half  x,
half  y 
)
inline

Arc tangent function.

Parameters
xfirst argument
ysecond argument
Returns
arc tangent value
Here is the call graph for this function:

◆ atan2() [2/4]

expr half_float::detail::atan2 ( half  x,
expr  y 
)
inline

Sine function.

Parameters
argfunction argument
Returns
sine value of arg
Here is the call graph for this function:

◆ atan2() [3/4]

expr half_float::detail::atan2 ( expr  x,
half  y 
)
inline

Sine function.

Parameters
argfunction argument
Returns
sine value of arg
Here is the call graph for this function:

◆ atan2() [4/4]

expr half_float::detail::atan2 ( expr  x,
expr  y 
)
inline

Sine function.

Parameters
argfunction argument
Returns
sine value of arg
Here is the call graph for this function:

◆ sinh() [1/2]

expr half_float::detail::sinh ( half  arg)
inline

Hyperbolic sine.

Parameters
argfunction argument
Returns
hyperbolic sine value of arg
Here is the call graph for this function:

◆ sinh() [2/2]

expr half_float::detail::sinh ( expr  arg)
inline

Hyperbolic sine.

Parameters
argfunction argument
Returns
hyperbolic sine value of arg
Here is the call graph for this function:

◆ cosh() [1/2]

expr half_float::detail::cosh ( half  arg)
inline

Hyperbolic cosine.

Parameters
argfunction argument
Returns
hyperbolic cosine value of arg
Here is the call graph for this function:

◆ cosh() [2/2]

expr half_float::detail::cosh ( expr  arg)
inline

Hyperbolic sine.

Parameters
argfunction argument
Returns
hyperbolic sine value of arg
Here is the call graph for this function:

◆ tanh() [1/2]

expr half_float::detail::tanh ( half  arg)
inline

Hyperbolic tangent.

Parameters
argfunction argument
Returns
hyperbolic tangent value of arg
Here is the call graph for this function:

◆ tanh() [2/2]

expr half_float::detail::tanh ( expr  arg)
inline

Hyperbolic sine.

Parameters
argfunction argument
Returns
hyperbolic sine value of arg
Here is the call graph for this function:

◆ asinh() [1/2]

expr half_float::detail::asinh ( half  arg)
inline

Hyperbolic area sine.

Parameters
argfunction argument
Returns
area sine value of arg
Here is the call graph for this function:

◆ asinh() [2/2]

expr half_float::detail::asinh ( expr  arg)
inline

Hyperbolic sine.

Parameters
argfunction argument
Returns
hyperbolic sine value of arg
Here is the call graph for this function:

◆ acosh() [1/2]

expr half_float::detail::acosh ( half  arg)
inline

Hyperbolic area cosine.

Parameters
argfunction argument
Returns
area cosine value of arg
Here is the call graph for this function:

◆ acosh() [2/2]

expr half_float::detail::acosh ( expr  arg)
inline

Hyperbolic sine.

Parameters
argfunction argument
Returns
hyperbolic sine value of arg
Here is the call graph for this function:

◆ atanh() [1/2]

expr half_float::detail::atanh ( half  arg)
inline

Hyperbolic area tangent.

Parameters
argfunction argument
Returns
area tangent value of arg
Here is the call graph for this function:

◆ atanh() [2/2]

expr half_float::detail::atanh ( expr  arg)
inline

Hyperbolic sine.

Parameters
argfunction argument
Returns
hyperbolic sine value of arg
Here is the call graph for this function:

◆ erf() [1/2]

expr half_float::detail::erf ( half  arg)
inline

Error function.

Parameters
argfunction argument
Returns
error function value of arg
Here is the call graph for this function:

◆ erf() [2/2]

expr half_float::detail::erf ( expr  arg)
inline

Error function.

Parameters
argfunction argument
Returns
error function value of arg
Here is the call graph for this function:

◆ erfc() [1/2]

expr half_float::detail::erfc ( half  arg)
inline

Complementary error function.

Parameters
argfunction argument
Returns
1 minus error function value of arg
Here is the call graph for this function:

◆ erfc() [2/2]

expr half_float::detail::erfc ( expr  arg)
inline

Error function.

Parameters
argfunction argument
Returns
error function value of arg
Here is the call graph for this function:

◆ lgamma() [1/2]

expr half_float::detail::lgamma ( half  arg)
inline

Natural logarithm of gamma function.

Parameters
argfunction argument
Returns
natural logarith of gamma function for arg
Here is the call graph for this function:

◆ lgamma() [2/2]

expr half_float::detail::lgamma ( expr  arg)
inline

Error function.

Parameters
argfunction argument
Returns
error function value of arg
Here is the call graph for this function:

◆ tgamma() [1/2]

expr half_float::detail::tgamma ( half  arg)
inline

Gamma function.

Parameters
argfunction argument
Returns
gamma function value of arg
Here is the call graph for this function:

◆ tgamma() [2/2]

expr half_float::detail::tgamma ( expr  arg)
inline

Error function.

Parameters
argfunction argument
Returns
error function value of arg
Here is the call graph for this function:

◆ ceil() [1/2]

half half_float::detail::ceil ( half  arg)
inline

Nearest integer not less than half value.

Parameters
arghalf to round
Returns
nearest integer not less than arg
Here is the call graph for this function:

◆ ceil() [2/2]

half half_float::detail::ceil ( expr  arg)
inline

Nearest integer not less than half value.

Parameters
arghalf to round
Returns
nearest integer not less than arg
Here is the call graph for this function:

◆ floor() [1/2]

half half_float::detail::floor ( half  arg)
inline

Nearest integer not greater than half value.

Parameters
arghalf to round
Returns
nearest integer not greater than arg
Here is the call graph for this function:

◆ floor() [2/2]

half half_float::detail::floor ( expr  arg)
inline

Nearest integer not less than half value.

Parameters
arghalf to round
Returns
nearest integer not less than arg
Here is the call graph for this function:

◆ trunc() [1/2]

half half_float::detail::trunc ( half  arg)
inline

Nearest integer not greater in magnitude than half value.

Parameters
arghalf to round
Returns
nearest integer not greater in magnitude than arg
Here is the call graph for this function:

◆ trunc() [2/2]

half half_float::detail::trunc ( expr  arg)
inline

Nearest integer not less than half value.

Parameters
arghalf to round
Returns
nearest integer not less than arg
Here is the call graph for this function:

◆ round() [1/2]

half half_float::detail::round ( half  arg)
inline

Nearest integer.

Parameters
arghalf to round
Returns
nearest integer, rounded away from zero in half-way cases
Here is the call graph for this function:

◆ round() [2/2]

half half_float::detail::round ( expr  arg)
inline

Nearest integer not less than half value.

Parameters
arghalf to round
Returns
nearest integer not less than arg
Here is the call graph for this function:

◆ lround() [1/2]

long half_float::detail::lround ( half  arg)
inline

Nearest integer.

Parameters
arghalf to round
Returns
nearest integer, rounded away from zero in half-way cases
Here is the call graph for this function:

◆ lround() [2/2]

long half_float::detail::lround ( expr  arg)
inline

Nearest integer not less than half value.

Parameters
arghalf to round
Returns
nearest integer not less than arg
Here is the call graph for this function:

◆ nearbyint() [1/2]

half half_float::detail::nearbyint ( half  arg)
inline

Nearest integer using half's internal rounding mode.

Parameters
arghalf expression to round
Returns
nearest integer using default rounding mode
Here is the call graph for this function:

◆ nearbyint() [2/2]

half half_float::detail::nearbyint ( expr  arg)
inline

Nearest integer not less than half value.

Parameters
arghalf to round
Returns
nearest integer not less than arg
Here is the call graph for this function:

◆ rint() [1/2]

half half_float::detail::rint ( half  arg)
inline

Nearest integer using half's internal rounding mode.

Parameters
arghalf expression to round
Returns
nearest integer using default rounding mode
Here is the call graph for this function:

◆ rint() [2/2]

half half_float::detail::rint ( expr  arg)
inline

Nearest integer not less than half value.

Parameters
arghalf to round
Returns
nearest integer not less than arg
Here is the call graph for this function:

◆ lrint() [1/2]

long half_float::detail::lrint ( half  arg)
inline

Nearest integer using half's internal rounding mode.

Parameters
arghalf expression to round
Returns
nearest integer using default rounding mode
Here is the call graph for this function:

◆ lrint() [2/2]

long half_float::detail::lrint ( expr  arg)
inline

Nearest integer not less than half value.

Parameters
arghalf to round
Returns
nearest integer not less than arg
Here is the call graph for this function:

◆ frexp() [1/2]

half half_float::detail::frexp ( half  arg,
int exp 
)
inline

Decompress floating point number.

Parameters
argnumber to decompress
expaddress to store exponent at
Returns
significant in range [0.5, 1)
Here is the call graph for this function:

◆ frexp() [2/2]

half half_float::detail::frexp ( expr  arg,
int exp 
)
inline

Decompress floating point number.

Parameters
argnumber to decompress
expaddress to store exponent at
Returns
significant in range [0.5, 1)
Here is the call graph for this function:

◆ ldexp() [1/2]

half half_float::detail::ldexp ( half  arg,
int  exp 
)
inline

Multiply by power of two.

Parameters
argnumber to modify
exppower of two to multiply with
Returns
arg multplied by 2 raised to exp
Here is the call graph for this function:

◆ ldexp() [2/2]

half half_float::detail::ldexp ( expr  arg,
int  exp 
)
inline

Decompress floating point number.

Parameters
argnumber to decompress
expaddress to store exponent at
Returns
significant in range [0.5, 1)
Here is the call graph for this function:

◆ modf() [1/2]

half half_float::detail::modf ( half  arg,
half iptr 
)
inline

Extract integer and fractional parts.

Parameters
argnumber to decompress
iptraddress to store integer part at
Returns
fractional part
Here is the call graph for this function:

◆ modf() [2/2]

half half_float::detail::modf ( expr  arg,
half iptr 
)
inline

Decompress floating point number.

Parameters
argnumber to decompress
expaddress to store exponent at
Returns
significant in range [0.5, 1)
Here is the call graph for this function:

◆ scalbn() [1/2]

half half_float::detail::scalbn ( half  arg,
int  exp 
)
inline

Multiply by power of two.

Parameters
argnumber to modify
exppower of two to multiply with
Returns
arg multplied by 2 raised to exp
Here is the call graph for this function:

◆ scalbn() [2/2]

half half_float::detail::scalbn ( expr  arg,
int  exp 
)
inline

Decompress floating point number.

Parameters
argnumber to decompress
expaddress to store exponent at
Returns
significant in range [0.5, 1)
Here is the call graph for this function:

◆ scalbln() [1/2]

half half_float::detail::scalbln ( half  arg,
long  exp 
)
inline

Multiply by power of two.

Parameters
argnumber to modify
exppower of two to multiply with
Returns
arg multplied by 2 raised to exp
Parameters
argnumber to modify
exppower of two to multiply with
Returns
arg multplied by 2 raised to exp
Here is the call graph for this function:

◆ scalbln() [2/2]

half half_float::detail::scalbln ( expr  arg,
long  exp 
)
inline

Decompress floating point number.

Parameters
argnumber to decompress
expaddress to store exponent at
Returns
significant in range [0.5, 1)
Here is the call graph for this function:

◆ ilogb() [1/2]

int half_float::detail::ilogb ( half  arg)
inline

Extract exponent.

Parameters
argnumber to query
Returns
floating point exponent
Return values
FP_ILOGB0for zero
FP_ILOGBNANfor NaN
MAX_INTfor infinity
Here is the call graph for this function:

◆ ilogb() [2/2]

int half_float::detail::ilogb ( expr  arg)
inline

Decompress floating point number.

Parameters
argnumber to decompress
expaddress to store exponent at
Returns
significant in range [0.5, 1)
Here is the call graph for this function:

◆ logb() [1/2]

half half_float::detail::logb ( half  arg)
inline

Extract exponent.

Parameters
argnumber to query
Returns
floating point exponent
Here is the call graph for this function:

◆ logb() [2/2]

half half_float::detail::logb ( expr  arg)
inline

Decompress floating point number.

Parameters
argnumber to decompress
expaddress to store exponent at
Returns
significant in range [0.5, 1)
Here is the call graph for this function:

◆ nextafter() [1/4]

half half_float::detail::nextafter ( half  from,
half  to 
)
inline

Next representable value.

Parameters
fromvalue to compute next representable value for
todirection towards which to compute next value
Returns
next representable value after from in direction towards to
Here is the call graph for this function:

◆ nextafter() [2/4]

half half_float::detail::nextafter ( half  from,
expr  to 
)
inline

Decompress floating point number.

Parameters
argnumber to decompress
expaddress to store exponent at
Returns
significant in range [0.5, 1)
Here is the call graph for this function:

◆ nextafter() [3/4]

half half_float::detail::nextafter ( expr  from,
half  to 
)
inline

Decompress floating point number.

Parameters
argnumber to decompress
expaddress to store exponent at
Returns
significant in range [0.5, 1)
Here is the call graph for this function:

◆ nextafter() [4/4]

half half_float::detail::nextafter ( expr  from,
expr  to 
)
inline

Decompress floating point number.

Parameters
argnumber to decompress
expaddress to store exponent at
Returns
significant in range [0.5, 1)
Here is the call graph for this function:

◆ nexttoward() [1/2]

half half_float::detail::nexttoward ( half  from,
long double  to 
)
inline

Next representable value.

Parameters
fromvalue to compute next representable value for
todirection towards which to compute next value
Returns
next representable value after from in direction towards to
Here is the call graph for this function:

◆ nexttoward() [2/2]

half half_float::detail::nexttoward ( expr  from,
long double  to 
)
inline

Decompress floating point number.

Parameters
argnumber to decompress
expaddress to store exponent at
Returns
significant in range [0.5, 1)
Here is the call graph for this function:

◆ copysign() [1/4]

half half_float::detail::copysign ( half  x,
half  y 
)
inline

Take sign.

Parameters
xvalue to change sign for
yvalue to take sign from
Returns
value equal to x in magnitude and to y in sign
Here is the call graph for this function:

◆ copysign() [2/4]

half half_float::detail::copysign ( half  x,
expr  y 
)
inline

Decompress floating point number.

Parameters
argnumber to decompress
expaddress to store exponent at
Returns
significant in range [0.5, 1)
Here is the call graph for this function:

◆ copysign() [3/4]

half half_float::detail::copysign ( expr  x,
half  y 
)
inline

Decompress floating point number.

Parameters
argnumber to decompress
expaddress to store exponent at
Returns
significant in range [0.5, 1)
Here is the call graph for this function:

◆ copysign() [4/4]

half half_float::detail::copysign ( expr  x,
expr  y 
)
inline

Decompress floating point number.

Parameters
argnumber to decompress
expaddress to store exponent at
Returns
significant in range [0.5, 1)
Here is the call graph for this function:

◆ fpclassify() [1/2]

int half_float::detail::fpclassify ( half  arg)
inline

Classify floating point value.

Parameters
argnumber to classify
Return values
FP_ZEROfor positive and negative zero
FP_SUBNORMALfor subnormal numbers
FP_INFINITYfor positive and negative infinity
FP_NANfor NaNs
FP_NORMALfor all other (normal) values
Here is the call graph for this function:

◆ fpclassify() [2/2]

int half_float::detail::fpclassify ( expr  arg)
inline

Classify floating point value.

Parameters
argnumber to classify
Return values
FP_ZEROfor positive and negative zero
FP_SUBNORMALfor subnormal numbers
FP_INFINITYfor positive and negative infinity
FP_NANfor NaNs
FP_NORMALfor all other (normal) values
Here is the call graph for this function:

◆ isfinite() [1/2]

bool half_float::detail::isfinite ( half  arg)
inline

Check if finite number.

Parameters
argnumber to check
Return values
trueif neither infinity nor NaN
falseelse
Here is the call graph for this function:

◆ isfinite() [2/2]

bool half_float::detail::isfinite ( expr  arg)
inline

Classify floating point value.

Parameters
argnumber to classify
Return values
FP_ZEROfor positive and negative zero
FP_SUBNORMALfor subnormal numbers
FP_INFINITYfor positive and negative infinity
FP_NANfor NaNs
FP_NORMALfor all other (normal) values
Here is the call graph for this function:

◆ isinf() [1/2]

bool half_float::detail::isinf ( half  arg)
inline

Check for infinity.

Parameters
argnumber to check
Return values
truefor positive or negative infinity
falseelse
Here is the call graph for this function:

◆ isinf() [2/2]

bool half_float::detail::isinf ( expr  arg)
inline

Classify floating point value.

Parameters
argnumber to classify
Return values
FP_ZEROfor positive and negative zero
FP_SUBNORMALfor subnormal numbers
FP_INFINITYfor positive and negative infinity
FP_NANfor NaNs
FP_NORMALfor all other (normal) values
Here is the call graph for this function:

◆ isnan() [1/2]

bool half_float::detail::isnan ( half  arg)
inline

Check for NaN.

Parameters
argnumber to check
Return values
truefor NaNs
falseelse
Here is the call graph for this function:

◆ isnan() [2/2]

bool half_float::detail::isnan ( expr  arg)
inline

Classify floating point value.

Parameters
argnumber to classify
Return values
FP_ZEROfor positive and negative zero
FP_SUBNORMALfor subnormal numbers
FP_INFINITYfor positive and negative infinity
FP_NANfor NaNs
FP_NORMALfor all other (normal) values
Here is the call graph for this function:

◆ isnormal() [1/2]

bool half_float::detail::isnormal ( half  arg)
inline

Check if normal number.

Parameters
argnumber to check
Return values
trueif normal number
falseif either subnormal, zero, infinity or NaN
Here is the call graph for this function:

◆ isnormal() [2/2]

bool half_float::detail::isnormal ( expr  arg)
inline

Classify floating point value.

Parameters
argnumber to classify
Return values
FP_ZEROfor positive and negative zero
FP_SUBNORMALfor subnormal numbers
FP_INFINITYfor positive and negative infinity
FP_NANfor NaNs
FP_NORMALfor all other (normal) values
Here is the call graph for this function:

◆ signbit() [1/2]

bool half_float::detail::signbit ( half  arg)
inline

Check sign.

Parameters
argnumber to check
Return values
truefor negative number
falsefor positive number
Here is the call graph for this function:

◆ signbit() [2/2]

bool half_float::detail::signbit ( expr  arg)
inline

Classify floating point value.

Parameters
argnumber to classify
Return values
FP_ZEROfor positive and negative zero
FP_SUBNORMALfor subnormal numbers
FP_INFINITYfor positive and negative infinity
FP_NANfor NaNs
FP_NORMALfor all other (normal) values
Here is the call graph for this function:

◆ isgreater() [1/4]

bool half_float::detail::isgreater ( half  x,
half  y 
)
inline

Comparison for greater than.

Parameters
xfirst operand
ysecond operand
Return values
trueif x greater than y
falseelse
Here is the call graph for this function:

◆ isgreater() [2/4]

bool half_float::detail::isgreater ( half  x,
expr  y 
)
inline

Comparison for greater than.

Parameters
xfirst operand
ysecond operand
Return values
trueif x greater than y
falseelse
Here is the call graph for this function:

◆ isgreater() [3/4]

bool half_float::detail::isgreater ( expr  x,
half  y 
)
inline

Comparison for greater than.

Parameters
xfirst operand
ysecond operand
Return values
trueif x greater than y
falseelse
Here is the call graph for this function:

◆ isgreater() [4/4]

bool half_float::detail::isgreater ( expr  x,
expr  y 
)
inline

Comparison for greater than.

Parameters
xfirst operand
ysecond operand
Return values
trueif x greater than y
falseelse
Here is the call graph for this function:

◆ isgreaterequal() [1/4]

bool half_float::detail::isgreaterequal ( half  x,
half  y 
)
inline

Comparison for greater equal.

Parameters
xfirst operand
ysecond operand
Return values
trueif x greater equal y
falseelse
Here is the call graph for this function:

◆ isgreaterequal() [2/4]

bool half_float::detail::isgreaterequal ( half  x,
expr  y 
)
inline

Comparison for greater than.

Parameters
xfirst operand
ysecond operand
Return values
trueif x greater than y
falseelse
Here is the call graph for this function:

◆ isgreaterequal() [3/4]

bool half_float::detail::isgreaterequal ( expr  x,
half  y 
)
inline

Comparison for greater than.

Parameters
xfirst operand
ysecond operand
Return values
trueif x greater than y
falseelse
Here is the call graph for this function:

◆ isgreaterequal() [4/4]

bool half_float::detail::isgreaterequal ( expr  x,
expr  y 
)
inline

Comparison for greater than.

Parameters
xfirst operand
ysecond operand
Return values
trueif x greater than y
falseelse
Here is the call graph for this function:

◆ isless() [1/4]

bool half_float::detail::isless ( half  x,
half  y 
)
inline

Comparison for less than.

Parameters
xfirst operand
ysecond operand
Return values
trueif x less than y
falseelse
Here is the call graph for this function:

◆ isless() [2/4]

bool half_float::detail::isless ( half  x,
expr  y 
)
inline

Comparison for greater than.

Parameters
xfirst operand
ysecond operand
Return values
trueif x greater than y
falseelse
Here is the call graph for this function:

◆ isless() [3/4]

bool half_float::detail::isless ( expr  x,
half  y 
)
inline

Comparison for greater than.

Parameters
xfirst operand
ysecond operand
Return values
trueif x greater than y
falseelse
Here is the call graph for this function:

◆ isless() [4/4]

bool half_float::detail::isless ( expr  x,
expr  y 
)
inline

Comparison for greater than.

Parameters
xfirst operand
ysecond operand
Return values
trueif x greater than y
falseelse
Here is the call graph for this function:

◆ islessequal() [1/4]

bool half_float::detail::islessequal ( half  x,
half  y 
)
inline

Comparison for less equal.

Parameters
xfirst operand
ysecond operand
Return values
trueif x less equal y
falseelse
Here is the call graph for this function:

◆ islessequal() [2/4]

bool half_float::detail::islessequal ( half  x,
expr  y 
)
inline

Comparison for greater than.

Parameters
xfirst operand
ysecond operand
Return values
trueif x greater than y
falseelse
Here is the call graph for this function:

◆ islessequal() [3/4]

bool half_float::detail::islessequal ( expr  x,
half  y 
)
inline

Comparison for greater than.

Parameters
xfirst operand
ysecond operand
Return values
trueif x greater than y
falseelse
Here is the call graph for this function:

◆ islessequal() [4/4]

bool half_float::detail::islessequal ( expr  x,
expr  y 
)
inline

Comparison for greater than.

Parameters
xfirst operand
ysecond operand
Return values
trueif x greater than y
falseelse
Here is the call graph for this function:

◆ islessgreater() [1/4]

bool half_float::detail::islessgreater ( half  x,
half  y 
)
inline

Comarison for less or greater.

Parameters
xfirst operand
ysecond operand
Return values
trueif either less or greater
falseelse
Here is the call graph for this function:

◆ islessgreater() [2/4]

bool half_float::detail::islessgreater ( half  x,
expr  y 
)
inline

Comparison for greater than.

Parameters
xfirst operand
ysecond operand
Return values
trueif x greater than y
falseelse
Here is the call graph for this function:

◆ islessgreater() [3/4]

bool half_float::detail::islessgreater ( expr  x,
half  y 
)
inline

Comparison for greater than.

Parameters
xfirst operand
ysecond operand
Return values
trueif x greater than y
falseelse
Here is the call graph for this function:

◆ islessgreater() [4/4]

bool half_float::detail::islessgreater ( expr  x,
expr  y 
)
inline

Comparison for greater than.

Parameters
xfirst operand
ysecond operand
Return values
trueif x greater than y
falseelse
Here is the call graph for this function:

◆ isunordered() [1/4]

bool half_float::detail::isunordered ( half  x,
half  y 
)
inline

Check if unordered.

Parameters
xfirst operand
ysecond operand
Return values
trueif unordered (one or two NaN operands)
falseelse
Here is the call graph for this function:

◆ isunordered() [2/4]

bool half_float::detail::isunordered ( half  x,
expr  y 
)
inline

Comparison for greater than.

Parameters
xfirst operand
ysecond operand
Return values
trueif x greater than y
falseelse
Here is the call graph for this function:

◆ isunordered() [3/4]

bool half_float::detail::isunordered ( expr  x,
half  y 
)
inline

Comparison for greater than.

Parameters
xfirst operand
ysecond operand
Return values
trueif x greater than y
falseelse
Here is the call graph for this function:

◆ isunordered() [4/4]

bool half_float::detail::isunordered ( expr  x,
expr  y 
)
inline

Comparison for greater than.

Parameters
xfirst operand
ysecond operand
Return values
trueif x greater than y
falseelse
Here is the call graph for this function:

◆ half_cast() [1/2]

template<typename T , typename U >
T half_float::detail::half_cast ( arg)

Cast to or from half-precision floating point number.

This casts between half and any built-in arithmetic type. The values are converted directly using the given rounding mode, without any roundtrip over float that a static_cast would otherwise do. It uses the default rounding mode.

Using this cast with neither of the two types being a half or with any of the two types not being a built-in arithmetic type (apart from half, of course) results in a compiler error and casting between halfs is just a no-op.

Template Parameters
Tdestination type (half or built-in arithmetic type)
Usource type (half or built-in arithmetic type)
Parameters
argvalue to cast
Returns
arg converted to destination type

◆ half_cast() [2/2]

template<typename T , std::float_round_style R, typename U >
T half_float::detail::half_cast ( arg)

Cast to or from half-precision floating point number.

This casts between half and any built-in arithmetic type. The values are converted directly using the given rounding mode, without any roundtrip over float that a static_cast would otherwise do.

Using this cast with neither of the two types being a half or with any of the two types not being a built-in arithmetic type (apart from half, of course) results in a compiler error and casting between halfs is just a no-op.

Template Parameters
Tdestination type (half or built-in arithmetic type)
Rrounding mode to use.
Usource type (half or built-in arithmetic type)
Parameters
argvalue to cast
Returns
arg converted to destination type

◆ float2half_impl() [4/4]

template<std::float_round_style R, typename T >
uint16 half_float::detail::float2half_impl ( value,
  ... 
)

Convert non-IEEE floating point to half-precision.

Template Parameters
Rrounding mode to use, std::round_indeterminate for fastest rounding
Tsource type (builtin floating point type)
Parameters
valuefloating point value
Returns
binary representation of half-precision value
Here is the call graph for this function:

Variable Documentation

◆ binary

const binary_t half_float::detail::binary = binary_t()

Tag for binary construction.