]> git.proxmox.com Git - ceph.git/blame - 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
CommitLineData
7c673cae
FG
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
14int 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