File tree Expand file tree Collapse file tree 4 files changed +32
-7
lines changed Expand file tree Collapse file tree 4 files changed +32
-7
lines changed Original file line number Diff line number Diff line change 10
10
+-----------+------------------+-----------------+------------------------+----------------------+------------------------+------------------------+----------------------------+
11
11
| <Func> | <Func_f> (float) | <Func> (double) | <Func_l> (long double) | <Func_f16> (float16) | <Func_f128> (float128) | C23 Definition Section | C23 Error Handling Section |
12
12
+===========+==================+=================+========================+======================+========================+========================+============================+
13
- | CMPLX | | | | | | 7.3.9.3 | N/A |
13
+ | CMPLX | | check | | | check | | | check | | | check | | | check | | 7.3.9.3 | N/A |
14
14
+-----------+------------------+-----------------+------------------------+----------------------+------------------------+------------------------+----------------------------+
15
15
16
16
Functions
Original file line number Diff line number Diff line change @@ -61,12 +61,6 @@ add_macro_header(
61
61
fcntl-macros.h
62
62
)
63
63
64
- add_macro_header (
65
- complex_macros
66
- HDR
67
- complex-macros.h
68
- )
69
-
70
64
add_macro_header (
71
65
features_macros
72
66
HDR
@@ -103,6 +97,14 @@ add_macro_header(
103
97
float16-macros.h
104
98
)
105
99
100
+ add_macro_header (
101
+ complex_macros
102
+ HDR
103
+ complex-macros.h
104
+ DEPENDS
105
+ .float16_macros
106
+ )
107
+
106
108
add_macro_header (
107
109
limits_macros
108
110
HDR
Original file line number Diff line number Diff line change 9
9
#ifndef __LLVM_LIBC_MACROS_COMPLEX_MACROS_H
10
10
#define __LLVM_LIBC_MACROS_COMPLEX_MACROS_H
11
11
12
+ #include "float16-macros.h"
13
+
12
14
#ifndef __STDC_NO_COMPLEX__
13
15
14
16
#define __STDC_VERSION_COMPLEX_H__ 202311L
19
21
20
22
// TODO: Add imaginary macros once GCC or Clang support _Imaginary builtin-type.
21
23
24
+ #define CMPLX (x , y ) __builtin_complex((double)(x), (double)(y))
25
+ #define CMPLXF (x , y ) __builtin_complex((float)(x), (float)(y))
26
+ #define CMPLXL (x , y ) __builtin_complex((long double)(x), (long double)(y))
27
+
28
+ #ifdef LIBC_TYPES_HAS_FLOAT16
29
+ #define CMPLXF16 (x , y ) __builtin_complex((float16)(x), (float16)(y))
30
+ #endif // LIBC_TYPES_HAS_FLOAT16
31
+
32
+ #ifdef LIBC_TYPES_HAS_FLOAT128
33
+ #define CMPLXF128 (x , y ) __builtin_complex((float128)(x), (float128)(y))
34
+ #endif // LIBC_TYPES_HAS_FLOAT128
35
+
22
36
#endif
23
37
24
38
#endif // __LLVM_LIBC_MACROS_COMPLEX_MACROS_H
Original file line number Diff line number Diff line change @@ -17,3 +17,12 @@ TEST(LlvmLibcComplexTest, VersionMacro) {
17
17
TEST (LlvmLibcComplexTest, IMacro) { EXPECT_CFP_EQ (1 .0fi, I); }
18
18
19
19
TEST (LlvmLibcComplexTest, _Complex_IMacro) { EXPECT_CFP_EQ (1 .0fi, _Complex_I); }
20
+
21
+ TEST (LlvmLibcComplexTest, CMPLXMacro) {
22
+ EXPECT_CFP_EQ (CMPLX (0 , 1.0 ), I);
23
+ EXPECT_CFP_EQ (CMPLX (1.0 , 0 ), 1.0 );
24
+ EXPECT_CFP_EQ (CMPLXF (0 , 1 .0f ), I);
25
+ EXPECT_CFP_EQ (CMPLXF (1 .0f , 0 ), 1 .0f );
26
+ EXPECT_CFP_EQ (CMPLXL (0 , 1 .0l ), I);
27
+ EXPECT_CFP_EQ (CMPLXL (1 .0l , 0 ), 1 .0l );
28
+ }
You can’t perform that action at this time.
0 commit comments