1// { dg-require-c-std "" }
2// { dg-add-options ieee }
3
4// 2007-01-10  Edward Smith-Rowland <3dw4rd@verizon.net>
5//
6// Copyright (C) 2007, 2009 Free Software Foundation, Inc.
7//
8// This file is part of the GNU ISO C++ Library.  This library is free
9// software; you can redistribute it and/or modify it under the
10// terms of the GNU General Public License as published by the
11// Free Software Foundation; either version 3, or (at your option)
12// any later version.
13//
14// This library is distributed in the hope that it will be useful,
15// but WITHOUT ANY WARRANTY; without even the implied warranty of
16// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17// GNU General Public License for more details.
18//
19// You should have received a copy of the GNU General Public License along
20// with this library; see the file COPYING3.  If not see
21// <http://www.gnu.org/licenses/>.
22
23// 5.2.1.13 ellint_2
24
25#include <tr1/cmath>
26#include <testsuite_hooks.h>
27
28void
29test01()
30{
31  float kf = std::numeric_limits<float>::quiet_NaN();
32  double kd = std::numeric_limits<double>::quiet_NaN();
33  long double kl = std::numeric_limits<long double>::quiet_NaN();
34
35  float phif = std::atan2(1.0F, 1.0F);
36  double phid = std::atan2(1.0, 1.0);
37  long double phil = std::atan2(1.0L, 1.0L);
38
39  float a = std::tr1::ellint_2(kf, phif);
40  float b = std::tr1::ellint_2f(kf, phif);
41  double c = std::tr1::ellint_2(kd, phid);
42  long double d = std::tr1::ellint_2(kl, phil);
43  long double e = std::tr1::ellint_2l(kl, phil);
44
45  VERIFY(std::tr1::isnan<float>(a));
46  VERIFY(std::tr1::isnan<float>(b));
47  VERIFY(std::tr1::isnan<double>(c));
48  VERIFY(std::tr1::isnan<long double>(d));
49  VERIFY(std::tr1::isnan<long double>(e));
50
51  return;
52}
53
54void
55test02()
56{
57  float kf = 0.5F;
58  double kd = 0.5;
59  long double kl = 0.5L;
60
61  float phif = std::numeric_limits<float>::quiet_NaN();
62  double phid = std::numeric_limits<double>::quiet_NaN();
63  long double phil = std::numeric_limits<long double>::quiet_NaN();
64
65  float a = std::tr1::ellint_2(kf, phif);
66  float b = std::tr1::ellint_2f(kf, phif);
67  double c = std::tr1::ellint_2(kd, phid);
68  long double d = std::tr1::ellint_2(kl, phil);
69  long double e = std::tr1::ellint_2l(kl, phil);
70
71  VERIFY(std::tr1::isnan<float>(a));
72  VERIFY(std::tr1::isnan<float>(b));
73  VERIFY(std::tr1::isnan<double>(c));
74  VERIFY(std::tr1::isnan<long double>(d));
75  VERIFY(std::tr1::isnan<long double>(e));
76
77  return;
78}
79
80int
81main()
82{
83  test01();
84  test02();
85  return 0;
86}
87
88