blob: 6ae5c6cd247780d90fc70e90da2f45daf4b5edb8 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
|
// P1467R9 - Extended floating-point types and standard names.
// { dg-do compile { target c++23 } }
// { dg-options "" }
// { dg-add-options float16 }
// { dg-add-options float32 }
// { dg-add-options float64 }
// { dg-add-options float128 }
#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
|