]>
git.proxmox.com Git - ceph.git/blob - 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)
6 #ifdef TEST_STD_HEADERS
9 #include <boost/tr1/complex.hpp>
12 #include "verify_return.hpp"
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));
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));
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));
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));
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));
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));
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));
57 verify_return_type(std::polar(0.0F
, 0), std::complex<double>(0));
59 std::complex<float> f
;
60 std::complex<double> d
;
61 std::complex<long double> l
;
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
134 // There is a bug in the TR text here, that means we can't always
135 // check these as we'd like:
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
);