blob: 41e9a54ada5c5bd41a28ddc68c05d5d626d9a788 [file] [log] [blame]
// P1467R9 - Extended floating-point types and standard names.
// { dg-do compile { target c++23 } }
// { dg-options "" }
#include "ext-floating.h"
#ifdef __STRICT_ANSI__
#undef __SIZEOF_FLOAT128__
#endif
using namespace std;
float fa = 1.0f;
float fb = (float) 1.0f;
float fc = 1.0;
float fd = (float) 1.0;
float fe = 1.0L;
float ff = (float) 1.0L;
#ifdef __SIZEOF_FLOAT128__
float fg = 1.0Q;
float fh = (float) 1.0Q;
#endif
double da = 1.0f;
double db = (double) 1.0f;
double dc = 1.0;
double dd = (double) 1.0;
double de = 1.0L;
double df = (double) 1.0L;
#ifdef __SIZEOF_FLOAT128__
double dg = 1.0Q;
double dh = (double) 1.0Q;
#endif
long double lda = 1.0f;
long double ldb = (long double) 1.0f;
long double ldc = 1.0;
long double ldd = (long double) 1.0;
long double lde = 1.0L;
long double ldf = (long double) 1.0L;
#ifdef __SIZEOF_FLOAT128__
long double ldg = 1.0Q;
long double ldh = (long double) 1.0Q;
__float128 qa = 1.0f;
__float128 qb = (__float128) 1.0f;
__float128 qc = 1.0;
__float128 qd = (__float128) 1.0;
__float128 qe = 1.0L;
__float128 qf = (__float128) 1.0L;
__float128 qg = 1.0Q;
__float128 qh = (__float128) 1.0Q;
#endif
#ifdef __STDCPP_FLOAT16_T__
float16_t f16a = 1.0F16;
float16_t f16b = (float16_t) 1.0F16;
#ifdef __STDCPP_FLOAT32_T__
float16_t f16c = 1.0F32; // { dg-warning "converting to 'std::float16_t' \\\{aka '_Float16'\\\} from '_Float32' with greater conversion rank" "" { target { float16 && float32 } } }
float16_t f16d = (float16_t) 1.0F32;
#endif
#ifdef __STDCPP_FLOAT64_T__
float16_t f16e = 1.0F64; // { dg-warning "converting to 'std::float16_t' \\\{aka '_Float16'\\\} from '_Float64' with greater conversion rank" "" { target { float16 && float64 } } }
float16_t f16f = (float16_t) 1.0F64;
#endif
#ifdef __STDCPP_FLOAT128_T__
float16_t f16g = 1.0F128; // { dg-warning "converting to 'std::float16_t' \\\{aka '_Float16'\\\} from '_Float128' with greater conversion rank" "" { target { float16 && float128 } } }
float16_t f16h = (float16_t) 1.0F128;
#endif
float16_t f16j = (float16_t) 1.0f;
float16_t f16l = (float16_t) 1.0;
float16_t f16n = (float16_t) 1.0L;
#ifdef __SIZEOF_FLOAT128__
float16_t f16p = (float16_t) 1.0Q;
#endif
#endif
#ifdef __STDCPP_FLOAT32_T__
#ifdef __STDCPP_FLOAT16_T__
float32_t f32a = 1.0F16;
float32_t f32b = (float32_t) 1.0F16;
#endif
float32_t f32c = 1.0F32;
float32_t f32d = (float32_t) 1.0F32;
#ifdef __STDCPP_FLOAT64_T__
float32_t f32e = 1.0F64; // { dg-warning "converting to 'std::float32_t' \\\{aka '_Float32'\\\} from '_Float64' with greater conversion rank" "" { target { float32 && float64 } } }
float32_t f32f = (float32_t) 1.0F64;
#endif
#ifdef __STDCPP_FLOAT128_T__
float32_t f32g = 1.0F128; // { dg-warning "converting to 'std::float32_t' \\\{aka '_Float32'\\\} from '_Float128' with greater conversion rank" "" { target { float32 && float128 } } }
float32_t f32h = (float32_t) 1.0F128;
#endif
#if __FLT_MAX_EXP__ <= __FLT32_MAX_EXP__ && __FLT_MANT_DIG__ <= __FLT32_MANT_DIG__
float32_t f32i = 1.0f;
#endif
float32_t f32j = (float32_t) 1.0f;
float32_t f32l = (float32_t) 1.0;
float32_t f32n = (float32_t) 1.0L;
#ifdef __SIZEOF_FLOAT128__
float32_t f32p = (float32_t) 1.0Q;
#endif
#endif
#ifdef __STDCPP_FLOAT64_T__
#ifdef __STDCPP_FLOAT16_T__
float64_t f64a = 1.0F16;
float64_t f64b = (float64_t) 1.0F16;
#endif
#ifdef __STDCPP_FLOAT32_T__
float64_t f64c = 1.0F32;
float64_t f64d = (float64_t) 1.0F32;
#endif
float64_t f64e = 1.0F64;
float64_t f64f = (float64_t) 1.0F64;
#ifdef __STDCPP_FLOAT128_T__
float64_t f64g = 1.0F128; // { dg-warning "converting to 'std::float64_t' \\\{aka '_Float64'\\\} from '_Float128' with greater conversion rank" "" { target { float64 && float128 } } }
float64_t f64h = (float64_t) 1.0F128;
#endif
#if __FLT_MAX_EXP__ <= __FLT64_MAX_EXP__ && __FLT_MANT_DIG__ <= __FLT64_MANT_DIG__
float64_t f64i = 1.0f;
#endif
float64_t f64j = (float64_t) 1.0f;
#if __DBL_MAX_EXP__ <= __FLT64_MAX_EXP__ && __DBL_MANT_DIG__ <= __FLT64_MANT_DIG__
float64_t f64k = 1.0;
#endif
float64_t f64l = (float64_t) 1.0;
float64_t f64n = (float64_t) 1.0L;
#ifdef __SIZEOF_FLOAT128__
float64_t f64p = (float64_t) 1.0Q;
#endif
#endif
#ifdef __STDCPP_FLOAT128_T__
#ifdef __STDCPP_FLOAT16_T__
float128_t f128a = 1.0F16;
float128_t f128b = (float128_t) 1.0F16;
#endif
#ifdef __STDCPP_FLOAT32_T__
float128_t f128c = 1.0F32;
float128_t f128d = (float128_t) 1.0F32;
#endif
#ifdef __STDCPP_FLOAT64_T__
float128_t f128e = 1.0F64;
float128_t f128f = (float128_t) 1.0F64;
#endif
float128_t f128g = 1.0F128;
float128_t f128h = (float128_t) 1.0F128;
#if __FLT_MAX_EXP__ <= __FLT128_MAX_EXP__ && __FLT_MANT_DIG__ <= __FLT128_MANT_DIG__
float128_t f128i = 1.0f;
#endif
float128_t f128j = (float128_t) 1.0f;
#if __DBL_MAX_EXP__ <= __FLT128_MAX_EXP__ && __DBL_MANT_DIG__ <= __FLT128_MANT_DIG__
float128_t f128k = 1.0;
#endif
float128_t f128l = (float128_t) 1.0;
#if __LDBL_MAX_EXP__ <= __FLT128_MAX_EXP__ && __LDBL_MANT_DIG__ <= __FLT128_MANT_DIG__ && __LDBL_MANT_DIG__ != 106
float128_t f128m = 1.0L;
#endif
float128_t f128n = (float128_t) 1.0L;
#ifdef __SIZEOF_FLOAT128__
float128_t f128o = 1.0Q;
float128_t f128p = (float128_t) 1.0Q;
#endif
#endif