OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [gcc-4.5.1/] [libstdc++-v3/] [testsuite/] [tr1/] [5_numerical_facilities/] [special_functions/] [17_hyperg/] [check_nan.cc] - Blame information for rev 424

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 424 jeremybenn
// { 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.17 hyperg
24
 
25
#include <tr1/cmath>
26
#include <testsuite_hooks.h>
27
 
28
void
29
test01()
30
{
31
  float af = std::numeric_limits<float>::quiet_NaN();
32
  double ad = std::numeric_limits<double>::quiet_NaN();
33
  long double al = std::numeric_limits<long double>::quiet_NaN();
34
 
35
  float bf = 10.0F;
36
  double bd = 10.0;
37
  long double bl = 10.0L;
38
 
39
  float cf = 3.0F;
40
  double cd = 3.0;
41
  long double cl = 3.0L;
42
 
43
  float xf = 0.5F;
44
  double xd = 0.5;
45
  long double xl = 0.5L;
46
 
47
  float a = std::tr1::hyperg(af, bf, cf, xf);
48
  float b = std::tr1::hypergf(af, bf, cf, xf);
49
  double c = std::tr1::hyperg(ad, bd, cd, xd);
50
  long double d = std::tr1::hyperg(al, bl, cl, xl);
51
  long double e = std::tr1::hypergl(al, bl, cl, xl);
52
 
53
  VERIFY(std::tr1::isnan<float>(a));
54
  VERIFY(std::tr1::isnan<float>(b));
55
  VERIFY(std::tr1::isnan<double>(c));
56
  VERIFY(std::tr1::isnan<long double>(d));
57
  VERIFY(std::tr1::isnan<long double>(e));
58
 
59
  return;
60
}
61
 
62
void
63
test02()
64
{
65
  float af = 2.0F;
66
  double ad = 2.0;
67
  long double al = 2.0L;
68
 
69
  float bf = std::numeric_limits<float>::quiet_NaN();
70
  double bd = std::numeric_limits<double>::quiet_NaN();
71
  long double bl = std::numeric_limits<long double>::quiet_NaN();
72
 
73
  float cf = 3.0F;
74
  double cd = 3.0;
75
  long double cl = 3.0L;
76
 
77
  float xf = 0.5F;
78
  double xd = 0.5;
79
  long double xl = 0.5L;
80
 
81
  float a = std::tr1::hyperg(af, bf, cf, xf);
82
  float b = std::tr1::hypergf(af, bf, cf, xf);
83
  double c = std::tr1::hyperg(ad, bd, cd, xd);
84
  long double d = std::tr1::hyperg(al, bl, cl, xl);
85
  long double e = std::tr1::hypergl(al, bl, cl, xl);
86
 
87
  VERIFY(std::tr1::isnan<float>(a));
88
  VERIFY(std::tr1::isnan<float>(b));
89
  VERIFY(std::tr1::isnan<double>(c));
90
  VERIFY(std::tr1::isnan<long double>(d));
91
  VERIFY(std::tr1::isnan<long double>(e));
92
 
93
  return;
94
}
95
 
96
void
97
test03()
98
{
99
  float af = 2.0F;
100
  double ad = 2.0;
101
  long double al = 2.0L;
102
 
103
  float bf = 10.0F;
104
  double bd = 10.0;
105
  long double bl = 10.0L;
106
 
107
  float cf = std::numeric_limits<float>::quiet_NaN();
108
  double cd = std::numeric_limits<double>::quiet_NaN();
109
  long double cl = std::numeric_limits<long double>::quiet_NaN();
110
 
111
  float xf = 0.5F;
112
  double xd = 0.5;
113
  long double xl = 0.5L;
114
 
115
  float a = std::tr1::hyperg(af, bf, cf, xf);
116
  float b = std::tr1::hypergf(af, bf, cf, xf);
117
  double c = std::tr1::hyperg(ad, bd, cd, xd);
118
  long double d = std::tr1::hyperg(al, bl, cl, xl);
119
  long double e = std::tr1::hypergl(al, bl, cl, xl);
120
 
121
  VERIFY(std::tr1::isnan<float>(a));
122
  VERIFY(std::tr1::isnan<float>(b));
123
  VERIFY(std::tr1::isnan<double>(c));
124
  VERIFY(std::tr1::isnan<long double>(d));
125
  VERIFY(std::tr1::isnan<long double>(e));
126
 
127
  return;
128
}
129
 
130
void
131
test04()
132
{
133
  float af = 2.0F;
134
  double ad = 2.0;
135
  long double al = 2.0L;
136
 
137
  float bf = 10.0F;
138
  double bd = 10.0;
139
  long double bl = 10.0L;
140
 
141
  float cf = 3.0F;
142
  double cd = 3.0;
143
  long double cl = 3.0L;
144
 
145
  float xf = std::numeric_limits<float>::quiet_NaN();
146
  double xd = std::numeric_limits<double>::quiet_NaN();
147
  long double xl = std::numeric_limits<long double>::quiet_NaN();
148
 
149
  float a = std::tr1::hyperg(af, bf, cf, xf);
150
  float b = std::tr1::hypergf(af, bf, cf, xf);
151
  double c = std::tr1::hyperg(ad, bd, cd, xd);
152
  long double d = std::tr1::hyperg(al, bl, cl, xl);
153
  long double e = std::tr1::hypergl(al, bl, cl, xl);
154
 
155
  VERIFY(std::tr1::isnan<float>(a));
156
  VERIFY(std::tr1::isnan<float>(b));
157
  VERIFY(std::tr1::isnan<double>(c));
158
  VERIFY(std::tr1::isnan<long double>(d));
159
  VERIFY(std::tr1::isnan<long double>(e));
160
 
161
  return;
162
}
163
 
164
int
165
main()
166
{
167
  test01();
168
  test02();
169
  test03();
170
  test04();
171
  return 0;
172
}
173
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.