2016-01-14 Edward Smith-Rowland <3dw4rd@verizon.net>
[official-gcc.git] / libstdc++-v3 / testsuite / special_functions / 13_ellint_3 / check_nan.cc
bloba524c37d443957184ee9179ad2aea9cdb9057838
1 // { dg-require-c-std "" }
2 // { dg-add-options ieee }
3 // { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
5 // Copyright (C) 2016 Free Software Foundation, Inc.
6 //
7 // This file is part of the GNU ISO C++ Library. This library is free
8 // software; you can redistribute it and/or modify it under the
9 // terms of the GNU General Public License as published by the
10 // Free Software Foundation; either version 3, or (at your option)
11 // any later version.
13 // This library is distributed in the hope that it will be useful,
14 // but WITHOUT ANY WARRANTY; without even the implied warranty of
15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 // GNU General Public License for more details.
18 // You should have received a copy of the GNU General Public License along
19 // with this library; see the file COPYING3. If not see
20 // <http://www.gnu.org/licenses/>.
22 // 8.1.13 ellint_3
24 #include <cmath>
25 #include <testsuite_hooks.h>
27 void
28 test01()
30 float kf = std::numeric_limits<float>::quiet_NaN();
31 double kd = std::numeric_limits<double>::quiet_NaN();
32 long double kl = std::numeric_limits<long double>::quiet_NaN();
34 float nuf = 0.2F;
35 double nud = 0.2;
36 long double nul = 0.2L;
38 float phif = std::atan2(1.0F, 1.0F);
39 double phid = std::atan2(1.0, 1.0);
40 long double phil = std::atan2(1.0L, 1.0L);
42 float a = std::ellint_3(kf, nuf, phif);
43 float b = std::ellint_3f(kf, nuf, phif);
44 double c = std::ellint_3(kd, nud, phid);
45 long double d = std::ellint_3(kl, nul, phil);
46 long double e = std::ellint_3l(kl, nul, phil);
48 bool test [[gnu::unused]] = true;
49 VERIFY(std::isnan(a));
50 VERIFY(std::isnan(b));
51 VERIFY(std::isnan(c));
52 VERIFY(std::isnan(d));
53 VERIFY(std::isnan(e));
55 return;
58 void
59 test02()
61 float kf = 0.5F;
62 double kd = 0.5;
63 long double kl = 0.5L;
65 float nuf = std::numeric_limits<float>::quiet_NaN();
66 double nud = std::numeric_limits<double>::quiet_NaN();
67 long double nul = std::numeric_limits<long double>::quiet_NaN();
69 float phif = std::atan2(1.0F, 1.0F);
70 double phid = std::atan2(1.0, 1.0);
71 long double phil = std::atan2(1.0L, 1.0L);
73 float a = std::ellint_3(kf, nuf, phif);
74 float b = std::ellint_3f(kf, nuf, phif);
75 double c = std::ellint_3(kd, nud, phid);
76 long double d = std::ellint_3(kl, nul, phil);
77 long double e = std::ellint_3l(kl, nul, phil);
79 bool test [[gnu::unused]] = true;
80 VERIFY(std::isnan(a));
81 VERIFY(std::isnan(b));
82 VERIFY(std::isnan(c));
83 VERIFY(std::isnan(d));
84 VERIFY(std::isnan(e));
86 return;
89 void
90 test03()
92 float kf = 0.5F;
93 double kd = 0.5;
94 long double kl = 0.5L;
96 float nuf = 0.2F;
97 double nud = 0.2;
98 long double nul = 0.2L;
100 float phif = std::numeric_limits<float>::quiet_NaN();
101 double phid = std::numeric_limits<double>::quiet_NaN();
102 long double phil = std::numeric_limits<long double>::quiet_NaN();
104 float a = std::ellint_3(kf, nuf, phif);
105 float b = std::ellint_3f(kf, nuf, phif);
106 double c = std::ellint_3(kd, nud, phid);
107 long double d = std::ellint_3(kl, nul, phil);
108 long double e = std::ellint_3l(kl, nul, phil);
110 bool test [[gnu::unused]] = true;
111 VERIFY(std::isnan(a));
112 VERIFY(std::isnan(b));
113 VERIFY(std::isnan(c));
114 VERIFY(std::isnan(d));
115 VERIFY(std::isnan(e));
117 return;
121 main()
123 test01();
124 test02();
125 test03();
126 return 0;