16515
|
1 /* Test of hypotf() function. |
|
2 Copyright (C) 2010-2012 Free Software Foundation, Inc. |
|
3 |
|
4 This program is free software: you can redistribute it and/or modify |
|
5 it under the terms of the GNU General Public License as published by |
|
6 the Free Software Foundation; either version 3 of the License, or |
|
7 (at your option) any later version. |
|
8 |
|
9 This program is distributed in the hope that it will be useful, |
|
10 but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
12 GNU General Public License for more details. |
|
13 |
|
14 You should have received a copy of the GNU General Public License |
|
15 along with this program. If not, see <http://www.gnu.org/licenses/>. */ |
|
16 |
|
17 /* Written by Bruno Haible <bruno@clisp.org>, 2010. */ |
|
18 |
|
19 #include <config.h> |
|
20 |
|
21 #include <math.h> |
|
22 |
|
23 #include "signature.h" |
|
24 SIGNATURE_CHECK (hypotf, float, (float, float)); |
|
25 |
|
26 #include <float.h> |
|
27 |
|
28 #include "macros.h" |
|
29 |
|
30 volatile float x; |
|
31 volatile float y; |
|
32 float z; |
|
33 |
|
34 int |
|
35 main () |
|
36 { |
|
37 /* A particular value. */ |
|
38 x = 0.4f; |
|
39 y = 0.6f; |
|
40 z = hypot (x, y); |
|
41 ASSERT (z >= 0.7211102f && z <= 0.7211103f); |
|
42 |
|
43 /* Overflow. */ |
|
44 x = FLT_MAX; |
|
45 y = FLT_MAX * 0.5f; |
|
46 z = hypotf (x, y); |
|
47 ASSERT (z == HUGE_VALF); |
|
48 |
|
49 /* No underflow. */ |
|
50 x = FLT_MIN; |
|
51 y = 0.0f; |
|
52 z = hypotf (x, y); |
|
53 ASSERT (z == FLT_MIN); |
|
54 |
|
55 /* No underflow. */ |
|
56 x = FLT_MIN * 2.0f; |
|
57 y = FLT_MIN * 3.0f; |
|
58 z = hypotf (x, y); |
|
59 ASSERT (z >= FLT_MIN * 2.0f && z <= FLT_MIN * 4.0f); |
|
60 |
|
61 return 0; |
|
62 } |