| // 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 |