ELC in dev
ELC-lang
载入中...
搜索中...
未找到
elc::defs::basic_environment::float_infos 命名空间参考

struct  bfloat16_float_info
 
struct  float16_float_info
 
struct  float32_float_info
 
struct  float64_float_info
 
union  float_data_union
 

类型定义

template<basic_float_type T>
using float_info = decltype(get_float_info< T >())
 
template<basic_float_type T>
using precision_type = typename float_info< T >::precision_type
 
template<basic_float_type T>
using data_type = typename float_info< T >::data_type
 
template<basic_float_type T>
using exponent_unsigned_type = typename float_info< T >::exponent_unsigned_type
 
template<basic_float_type T>
using exponent_type = typename float_info< T >::exponent_signed_type
 

函数

template<basic_float_type T>
static constexpr auto get_float_info () noexcept
 
template<basic_float_type T>
constexpr data_type< T > get_float_data (T v) noexcept
 
template<basic_float_type T>
constexprget_float_from_data (data_type< T > data) noexcept
 

变量

template<basic_float_type T>
constexpr auto precision_mask =float_info<T>::precision_mask
 
template<basic_float_type T>
constexpr auto precision_base =float_info<T>::precision_base
 
template<basic_float_type T>
constexpr auto precision_base_bit =float_info<T>::precision_base_bit
 
template<basic_float_type T>
constexpr auto exponent_diff =float_info<T>::exponent_diff
 
template<basic_float_type T>
constexpr auto exponent_min =float_info<T>::exponent_min
 
template<basic_float_type T>
constexpr auto exponent_max =float_info<T>::exponent_max
 
template<basic_float_type T>
constexpr auto exponent_mask =float_info<T>::exponent_mask
 
template<basic_float_type T>
constexpr auto quick_invsqrt_magic_number =float_info<T>::quick_invsqrt_magic_number
 

类型定义说明

◆ data_type

在文件 all_defs.cpp3676 行定义.

◆ exponent_type

template<basic_float_type T>
using elc::defs::basic_environment::float_infos::exponent_type = typedef typename float_info<T>::exponent_signed_type

在文件 all_defs.cpp3701 行定义.

◆ exponent_unsigned_type

template<basic_float_type T>
using elc::defs::basic_environment::float_infos::exponent_unsigned_type = typedef typename float_info<T>::exponent_unsigned_type

在文件 all_defs.cpp3698 行定义.

◆ float_info

在文件 all_defs.cpp3665 行定义.

◆ precision_type

在文件 all_defs.cpp3672 行定义.

函数说明

◆ get_float_data()

template<basic_float_type T>
constexpr data_type< T > elc::defs::basic_environment::float_infos::get_float_data ( v)
constexprnoexcept

在文件 all_defs.cpp7535 行定义.

函数调用图:

◆ get_float_from_data()

template<basic_float_type T>
constexpr T elc::defs::basic_environment::float_infos::get_float_from_data ( data_type< T >  data)
constexprnoexcept

在文件 all_defs.cpp7541 行定义.

7541 {
7543 tmp.data=data;
7544 return tmp.v;
7545 }
函数调用图:

◆ get_float_info()

template<basic_float_type T>
static constexpr auto elc::defs::basic_environment::float_infos::get_float_info ( )
staticconstexprnoexcept

在文件 all_defs.cpp3625 行定义.

3625 {
3626 #if defined(__STDCPP_FLOAT16_T__)
3627 if constexpr(type_info<T> == type_info<::std::float16_t>)
3628 return float16_float_info{};
3629 #endif
3630 #if defined(__STDCPP_FLOAT32_T__)
3631 if constexpr(type_info<T> == type_info<::std::float32_t>)
3632 return float32_float_info{};
3633 #endif
3634 #if defined(__STDCPP_FLOAT64_T__)
3635 if constexpr(type_info<T> == type_info<::std::float64_t>)
3636 return float64_float_info{};
3637 #endif
3638 #if defined(__STDCPP_FLOAT128_T__)
3639 #if defined(ELC_BASE_ENV_HAS_INT128)
3640 if constexpr(type_info<T> == type_info<::std::float128_t>)
3641 return float128_float_info{};
3642 #else
3643 //"float128_t is not supported"
3644 #endif
3645 #endif
3646 #if defined(__STDCPP_BFLOAT16_T__)
3647 if constexpr(type_info<T> == type_info<::std::bfloat16_t>)
3648 return bfloat16_float_info{};
3649 #endif
3650 if constexpr(type_info<T> == type_info<float>)
3651 return float32_float_info{};
3652 elseif constexpr(type_info<T> == type_info<double>)
3653 return float64_float_info{};
3654 elseif constexpr(type_info<T> == type_info<long double>){
3655 #if defined(_MSC_VER)//msvc上long double就是double
3656 return float64_float_info{};
3657 #elif defined(ELC_BASE_ENV_HAS_INT128) && defined(__aarch64__)//aarch64上long double是float128
3658 return float128_float_info{};
3659 #else
3660 //"long double is not supported"
3661 #endif
3662 }
3663 }
#define elseif
Definition all_defs.cpp:650
函数调用图:
这是这个函数的调用关系图:

变量说明

◆ exponent_diff

template<basic_float_type T>
constexpr auto elc::defs::basic_environment::float_infos::exponent_diff =float_info<T>::exponent_diff
constexpr

在文件 all_defs.cpp3688 行定义.

◆ exponent_mask

template<basic_float_type T>
constexpr auto elc::defs::basic_environment::float_infos::exponent_mask =float_info<T>::exponent_mask
constexpr

在文件 all_defs.cpp3704 行定义.

◆ exponent_max

template<basic_float_type T>
constexpr auto elc::defs::basic_environment::float_infos::exponent_max =float_info<T>::exponent_max
constexpr

在文件 all_defs.cpp3694 行定义.

◆ exponent_min

template<basic_float_type T>
constexpr auto elc::defs::basic_environment::float_infos::exponent_min =float_info<T>::exponent_min
constexpr

在文件 all_defs.cpp3691 行定义.

◆ precision_base

template<basic_float_type T>
constexpr auto elc::defs::basic_environment::float_infos::precision_base =float_info<T>::precision_base
constexpr

在文件 all_defs.cpp3680 行定义.

◆ precision_base_bit

template<basic_float_type T>
constexpr auto elc::defs::basic_environment::float_infos::precision_base_bit =float_info<T>::precision_base_bit
constexpr

在文件 all_defs.cpp3684 行定义.

◆ precision_mask

template<basic_float_type T>
constexpr auto elc::defs::basic_environment::float_infos::precision_mask =float_info<T>::precision_mask
constexpr

在文件 all_defs.cpp3669 行定义.

◆ quick_invsqrt_magic_number

template<basic_float_type T>
constexpr auto elc::defs::basic_environment::float_infos::quick_invsqrt_magic_number =float_info<T>::quick_invsqrt_magic_number
constexpr

在文件 all_defs.cpp3708 行定义.