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.10 cyl_bessel_k
24
25#include <tr1/cmath>
26#include <testsuite_hooks.h>
27
28void
29test01()
30{
31  float xf = std::numeric_limits<float>::quiet_NaN();
32  double xd = std::numeric_limits<double>::quiet_NaN();
33  long double xl = std::numeric_limits<long double>::quiet_NaN();
34
35  float nuf = 0.0F;
36  double nud = 0.0;
37  long double nul = 0.0L;
38
39  float a = std::tr1::cyl_bessel_k(nuf, xf);
40  float b = std::tr1::cyl_bessel_kf(nuf, xf);
41  double c = std::tr1::cyl_bessel_k(nud, xd);
42  long double d = std::tr1::cyl_bessel_k(nul, xl);
43  long double e = std::tr1::cyl_bessel_kl(nul, xl);
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 xf = 1.0F;
58  double xd = 1.0;
59  long double xl = 1.0L;
60
61  float nuf = std::numeric_limits<float>::quiet_NaN();
62  double nud = std::numeric_limits<double>::quiet_NaN();
63  long double nul = std::numeric_limits<long double>::quiet_NaN();
64
65  float a = std::tr1::cyl_bessel_k(nuf, xf);
66  float b = std::tr1::cyl_bessel_kf(nuf, xf);
67  double c = std::tr1::cyl_bessel_k(nud, xd);
68  long double d = std::tr1::cyl_bessel_k(nul, xl);
69  long double e = std::tr1::cyl_bessel_kl(nul, xl);
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