]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/tr1/test/test_complex.cpp
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / tr1 / test / test_complex.cpp
1 // (C) Copyright John Maddock 2005.
2 // Use, modification and distribution are subject to the
3 // Boost Software License, Version 1.0. (See accompanying file
4 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
5
6 #ifdef TEST_STD_HEADERS
7 #include <complex>
8 #else
9 #include <boost/tr1/complex.hpp>
10 #endif
11
12 #include "verify_return.hpp"
13
14 int main()
15 {
16 verify_return_type(std::arg(0), double(0));
17 verify_return_type(std::arg(0.0), double(0));
18 #ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
19 verify_return_type(std::arg(0.0L), (long double)(0));
20 #endif
21 verify_return_type(std::arg(0.0F), float(0));
22 verify_return_type(std::norm(0), double(0));
23 verify_return_type(std::norm(0.0), double(0));
24 #ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
25 verify_return_type(std::norm(0.0L), (long double)(0));
26 #endif
27 verify_return_type(std::norm(0.0F), float(0));
28 verify_return_type(std::conj(0), std::complex<double>(0));
29 verify_return_type(std::conj(0.0), std::complex<double>(0));
30 #ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
31 verify_return_type(std::conj(0.0L), std::complex<long double>(0));
32 #endif
33 verify_return_type(std::conj(0.0F), std::complex<float>(0));
34 verify_return_type(std::imag(0), double(0));
35 verify_return_type(std::imag(0.0), double(0));
36 #ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
37 verify_return_type(std::imag(0.0L), (long double)(0));
38 #endif
39 verify_return_type(std::imag(0.0F), float(0));
40 verify_return_type(std::real(0), double(0));
41 verify_return_type(std::real(0.0), double(0));
42 #ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
43 verify_return_type(std::real(0.0L), (long double)(0));
44 #endif
45 verify_return_type(std::real(0.0F), float(0));
46 verify_return_type(std::polar(0), std::complex<double>(0));
47 verify_return_type(std::polar(0.0), std::complex<double>(0));
48 #ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
49 verify_return_type(std::polar(0.0L), std::complex<long double>(0));
50 #endif
51 verify_return_type(std::polar(0.0F), std::complex<float>(0));
52 verify_return_type(std::polar(0, 0L), std::complex<double>(0));
53 #ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
54 verify_return_type(std::polar(0.0, 0.0L), std::complex<long double>(0));
55 verify_return_type(std::polar(0.0L, 0.0F), std::complex<long double>(0));
56 #endif
57 verify_return_type(std::polar(0.0F, 0), std::complex<double>(0));
58
59 std::complex<float> f;
60 std::complex<double> d;
61 std::complex<long double> l;
62 float sf;
63 double sd;
64 long double sl;
65
66 verify_return_type(std::pow(f, f), f);
67 verify_return_type(std::pow(f, d), d);
68 verify_return_type(std::pow(d, f), d);
69 verify_return_type(std::pow(f, l), l);
70 verify_return_type(std::pow(l, f), l);
71 verify_return_type(std::pow(d, l), l);
72 verify_return_type(std::pow(l, d), l);
73
74 verify_return_type(std::pow(f, sf), f);
75 verify_return_type(std::pow(f, sd), d);
76 verify_return_type(std::pow(d, sf), d);
77 verify_return_type(std::pow(f, sl), l);
78 verify_return_type(std::pow(l, sf), l);
79 verify_return_type(std::pow(d, sl), l);
80 verify_return_type(std::pow(l, sd), l);
81 verify_return_type(std::pow(f, 0), f);
82 verify_return_type(std::pow(d, 0), d);
83 verify_return_type(std::pow(l, 0), l);
84 verify_return_type(std::pow(f, 0L), d);
85 verify_return_type(std::pow(d, 0L), d);
86 verify_return_type(std::pow(l, 0L), l);
87
88 verify_return_type(std::pow(sf, f), f);
89 verify_return_type(std::pow(sf, d), d);
90 verify_return_type(std::pow(sd, f), d);
91 verify_return_type(std::pow(sf, l), l);
92 verify_return_type(std::pow(sl, f), l);
93 verify_return_type(std::pow(sd, l), l);
94 verify_return_type(std::pow(sl, d), l);
95 verify_return_type(std::pow(2, f), d);
96 verify_return_type(std::pow(2, d), d);
97 verify_return_type(std::pow(2, l), l);
98 verify_return_type(std::pow(2L, f), d);
99 verify_return_type(std::pow(2L, d), d);
100 verify_return_type(std::pow(2L, l), l);
101
102 verify_return_type(std::tr1::acos(f), f);
103 verify_return_type(std::tr1::acos(d), d);
104 #ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
105 verify_return_type(std::tr1::acos(l), l);
106 #endif
107 verify_return_type(std::tr1::asin(f), f);
108 verify_return_type(std::tr1::asin(d), d);
109 #ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
110 verify_return_type(std::tr1::asin(l), l);
111 #endif
112 verify_return_type(std::tr1::atan(f), f);
113 verify_return_type(std::tr1::atan(d), d);
114 #ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
115 verify_return_type(std::tr1::atan(l), l);
116 #endif
117 verify_return_type(std::tr1::asinh(f), f);
118 verify_return_type(std::tr1::asinh(d), d);
119 #ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
120 verify_return_type(std::tr1::asinh(l), l);
121 #endif
122 verify_return_type(std::tr1::acosh(f), f);
123 verify_return_type(std::tr1::acosh(d), d);
124 #ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
125 verify_return_type(std::tr1::acosh(l), l);
126 #endif
127 verify_return_type(std::tr1::atanh(f), f);
128 verify_return_type(std::tr1::atanh(d), d);
129 #ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
130 verify_return_type(std::tr1::atanh(l), l);
131 #endif
132
133 //
134 // There is a bug in the TR text here, that means we can't always
135 // check these as we'd like:
136 //
137 #if !(defined(__GNUC__) && defined(BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG) && !defined(_GLIBCXX_INCLUDE_AS_CXX0X))
138 verify_return_type(std::tr1::fabs(f), sf);
139 verify_return_type(std::tr1::fabs(d), sd);
140 #ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
141 verify_return_type(std::tr1::fabs(l), sl);
142 #endif
143 #endif
144 return 0;
145 }
146