11#ifndef _CU_ARITHMETICS_CU_EPSILON_H_
12#define _CU_ARITHMETICS_CU_EPSILON_H_
18#include "../_cu_definitions/cu_types.h"
56 template <
typename DataType>
73 #if defined(USE_CUDA_FP8_E5M2) && (USE_CUDA_FP8_E5M2 == 1)
96 #if defined(USE_CUDA_FP8_E4M3) && (USE_CUDA_FP8_E4M3 == 1)
118 #if defined(USE_CUDA_FP16) && (USE_CUDA_FP16 == 1)
141#if defined(USE_CUDA_BF16) && (USE_CUDA_BF16 == 1)
163 #if defined(USE_CUDA_FP32) && (USE_CUDA_FP32 == 1)
171 return 1.1920929e-7f;
188 #if defined(USE_CUDA_FP64) && (USE_CUDA_FP64 == 1)
196 return 2.220446049250313e-16;
Cast from float to __half and __nv_bfloat16 types and vice-versa, and float to double and vice-versa.
__host__ __device__ DataType abs(const DataType x)
Absolute value of a floating point number.
__host__ __device__ DataType epsilon()
epsilon for various floating point precisions.
__host__ __device__ double epsilon< double >()
epsilon for float type, which is equal to since float has 52 bits for fraction (mantissa).
__host__ __device__ float epsilon< float >()
epsilon for __nv_fp8_e5m2 type, which is equal to since __nv_fp8_e5m2 has 2 bits for fraction (manti...