1 //===----------------------------------------------------------------------===//
2 //
3 // The LLVM Compiler Infrastructure
4 //
5 // This file is dual licensed under the MIT and the University of Illinois Open
6 // Source Licenses. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9
10 // <complex>
11
12 // constexpr complex(const T& re = T(), const T& im = T());
13
14 #include <complex>
15 #include <cassert>
16
17 template <class T>
18 void
test()19 test()
20 {
21 {
22 const std::complex<T> c;
23 assert(c.real() == 0);
24 assert(c.imag() == 0);
25 }
26 {
27 const std::complex<T> c = 7.5;
28 assert(c.real() == 7.5);
29 assert(c.imag() == 0);
30 }
31 {
32 const std::complex<T> c(8.5);
33 assert(c.real() == 8.5);
34 assert(c.imag() == 0);
35 }
36 {
37 const std::complex<T> c(10.5, -9.5);
38 assert(c.real() == 10.5);
39 assert(c.imag() == -9.5);
40 }
41 #ifndef _LIBCPP_HAS_NO_CONSTEXPR
42 {
43 constexpr std::complex<T> c;
44 static_assert(c.real() == 0, "");
45 static_assert(c.imag() == 0, "");
46 }
47 {
48 constexpr std::complex<T> c = 7.5;
49 static_assert(c.real() == 7.5, "");
50 static_assert(c.imag() == 0, "");
51 }
52 {
53 constexpr std::complex<T> c(8.5);
54 static_assert(c.real() == 8.5, "");
55 static_assert(c.imag() == 0, "");
56 }
57 {
58 constexpr std::complex<T> c(10.5, -9.5);
59 static_assert(c.real() == 10.5, "");
60 static_assert(c.imag() == -9.5, "");
61 }
62 #endif
63 }
64
main()65 int main()
66 {
67 test<float>();
68 test<double>();
69 test<long double>();
70 }
71