testsuite: 32 bit AIX 2 byte wchar
[official-gcc.git] / gcc / testsuite / g++.dg / cpp23 / ext-floating2.C
blob6ae5c6cd247780d90fc70e90da2f45daf4b5edb8
1 // P1467R9 - Extended floating-point types and standard names.
2 // { dg-do compile { target c++23 } }
3 // { dg-options "" }
4 // { dg-add-options float16 }
5 // { dg-add-options float32 }
6 // { dg-add-options float64 }
7 // { dg-add-options float128 }
9 #include "ext-floating.h"
11 #ifdef __STRICT_ANSI__
12 #undef __SIZEOF_FLOAT128__
13 #endif
15 using namespace std;
17 float fa = 1.0f;
18 float fb = (float) 1.0f;
19 float fc = 1.0;
20 float fd = (float) 1.0;
21 float fe = 1.0L;
22 float ff = (float) 1.0L;
23 #ifdef __SIZEOF_FLOAT128__
24 float fg = 1.0Q;
25 float fh = (float) 1.0Q;
26 #endif
27 double da = 1.0f;
28 double db = (double) 1.0f;
29 double dc = 1.0;
30 double dd = (double) 1.0;
31 double de = 1.0L;
32 double df = (double) 1.0L;
33 #ifdef __SIZEOF_FLOAT128__
34 double dg = 1.0Q;
35 double dh = (double) 1.0Q;
36 #endif
37 long double lda = 1.0f;
38 long double ldb = (long double) 1.0f;
39 long double ldc = 1.0;
40 long double ldd = (long double) 1.0;
41 long double lde = 1.0L;
42 long double ldf = (long double) 1.0L;
43 #ifdef __SIZEOF_FLOAT128__
44 long double ldg = 1.0Q;
45 long double ldh = (long double) 1.0Q;
46 __float128 qa = 1.0f;
47 __float128 qb = (__float128) 1.0f;
48 __float128 qc = 1.0;
49 __float128 qd = (__float128) 1.0;
50 __float128 qe = 1.0L;
51 __float128 qf = (__float128) 1.0L;
52 __float128 qg = 1.0Q;
53 __float128 qh = (__float128) 1.0Q;
54 #endif
55 #ifdef __STDCPP_FLOAT16_T__
56 float16_t f16a = 1.0F16;
57 float16_t f16b = (float16_t) 1.0F16;
58 #ifdef __STDCPP_FLOAT32_T__
59 float16_t f16c = 1.0F32;                // { dg-warning "converting to 'std::float16_t' \\\{aka '_Float16'\\\} from '_Float32' with greater conversion rank" "" { target { float16 && float32 } } }
60 float16_t f16d = (float16_t) 1.0F32;
61 #endif
62 #ifdef __STDCPP_FLOAT64_T__
63 float16_t f16e = 1.0F64;                // { dg-warning "converting to 'std::float16_t' \\\{aka '_Float16'\\\} from '_Float64' with greater conversion rank" "" { target { float16 && float64 } } }
64 float16_t f16f = (float16_t) 1.0F64;
65 #endif
66 #ifdef __STDCPP_FLOAT128_T__
67 float16_t f16g = 1.0F128;               // { dg-warning "converting to 'std::float16_t' \\\{aka '_Float16'\\\} from '_Float128' with greater conversion rank" "" { target { float16 && float128 } } }
68 float16_t f16h = (float16_t) 1.0F128;
69 #endif
70 float16_t f16j = (float16_t) 1.0f;
71 float16_t f16l = (float16_t) 1.0;
72 float16_t f16n = (float16_t) 1.0L;
73 #ifdef __SIZEOF_FLOAT128__
74 float16_t f16p = (float16_t) 1.0Q;
75 #endif
76 #endif
77 #ifdef __STDCPP_FLOAT32_T__
78 #ifdef __STDCPP_FLOAT16_T__
79 float32_t f32a = 1.0F16;
80 float32_t f32b = (float32_t) 1.0F16;
81 #endif
82 float32_t f32c = 1.0F32;
83 float32_t f32d = (float32_t) 1.0F32;
84 #ifdef __STDCPP_FLOAT64_T__
85 float32_t f32e = 1.0F64;                // { dg-warning "converting to 'std::float32_t' \\\{aka '_Float32'\\\} from '_Float64' with greater conversion rank" "" { target { float32 && float64 } } }
86 float32_t f32f = (float32_t) 1.0F64;
87 #endif
88 #ifdef __STDCPP_FLOAT128_T__
89 float32_t f32g = 1.0F128;               // { dg-warning "converting to 'std::float32_t' \\\{aka '_Float32'\\\} from '_Float128' with greater conversion rank" "" { target { float32 && float128 } } }
90 float32_t f32h = (float32_t) 1.0F128;
91 #endif
92 #if __FLT_MAX_EXP__ <= __FLT32_MAX_EXP__ && __FLT_MANT_DIG__ <= __FLT32_MANT_DIG__
93 float32_t f32i = 1.0f;
94 #endif
95 float32_t f32j = (float32_t) 1.0f;
96 float32_t f32l = (float32_t) 1.0;
97 float32_t f32n = (float32_t) 1.0L;
98 #ifdef __SIZEOF_FLOAT128__
99 float32_t f32p = (float32_t) 1.0Q;
100 #endif
101 #endif
102 #ifdef __STDCPP_FLOAT64_T__
103 #ifdef __STDCPP_FLOAT16_T__
104 float64_t f64a = 1.0F16;
105 float64_t f64b = (float64_t) 1.0F16;
106 #endif
107 #ifdef __STDCPP_FLOAT32_T__
108 float64_t f64c = 1.0F32;
109 float64_t f64d = (float64_t) 1.0F32;
110 #endif
111 float64_t f64e = 1.0F64;
112 float64_t f64f = (float64_t) 1.0F64;
113 #ifdef __STDCPP_FLOAT128_T__
114 float64_t f64g = 1.0F128;               // { dg-warning "converting to 'std::float64_t' \\\{aka '_Float64'\\\} from '_Float128' with greater conversion rank" "" { target { float64 && float128 } } }
115 float64_t f64h = (float64_t) 1.0F128;
116 #endif
117 #if __FLT_MAX_EXP__ <= __FLT64_MAX_EXP__ && __FLT_MANT_DIG__ <= __FLT64_MANT_DIG__
118 float64_t f64i = 1.0f;
119 #endif
120 float64_t f64j = (float64_t) 1.0f;
121 #if __DBL_MAX_EXP__ <= __FLT64_MAX_EXP__ && __DBL_MANT_DIG__ <= __FLT64_MANT_DIG__
122 float64_t f64k = 1.0;
123 #endif
124 float64_t f64l = (float64_t) 1.0;
125 float64_t f64n = (float64_t) 1.0L;
126 #ifdef __SIZEOF_FLOAT128__
127 float64_t f64p = (float64_t) 1.0Q;
128 #endif
129 #endif
130 #ifdef __STDCPP_FLOAT128_T__
131 #ifdef __STDCPP_FLOAT16_T__
132 float128_t f128a = 1.0F16;
133 float128_t f128b = (float128_t) 1.0F16;
134 #endif
135 #ifdef __STDCPP_FLOAT32_T__
136 float128_t f128c = 1.0F32;
137 float128_t f128d = (float128_t) 1.0F32;
138 #endif
139 #ifdef __STDCPP_FLOAT64_T__
140 float128_t f128e = 1.0F64;
141 float128_t f128f = (float128_t) 1.0F64;
142 #endif
143 float128_t f128g = 1.0F128;
144 float128_t f128h = (float128_t) 1.0F128;
145 #if __FLT_MAX_EXP__ <= __FLT128_MAX_EXP__ && __FLT_MANT_DIG__ <= __FLT128_MANT_DIG__
146 float128_t f128i = 1.0f;
147 #endif
148 float128_t f128j = (float128_t) 1.0f;
149 #if __DBL_MAX_EXP__ <= __FLT128_MAX_EXP__ && __DBL_MANT_DIG__ <= __FLT128_MANT_DIG__
150 float128_t f128k = 1.0;
151 #endif
152 float128_t f128l = (float128_t) 1.0;
153 #if __LDBL_MAX_EXP__ <= __FLT128_MAX_EXP__ && __LDBL_MANT_DIG__ <= __FLT128_MANT_DIG__ && __LDBL_MANT_DIG__ != 106
154 float128_t f128m = 1.0L;
155 #endif
156 float128_t f128n = (float128_t) 1.0L;
157 #ifdef __SIZEOF_FLOAT128__
158 float128_t f128o = 1.0Q;
159 float128_t f128p = (float128_t) 1.0Q;
160 #endif
161 #endif