More tests for modules frexpf-ieee, frexp-ieee, frexpl-ieee.
[gnulib.git] / tests / test-frexpf-ieee.c
1 /* Test of splitting a double into fraction and mantissa.
2    Copyright (C) 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 #include <config.h>
18
19 #include <math.h>
20
21 #include "isnanf-nolibm.h"
22 #include "minus-zero.h"
23 #include "infinity.h"
24 #include "nan.h"
25 #include "macros.h"
26
27 int
28 main ()
29 {
30   /* [MX] shaded specification in POSIX.  */
31
32   /* NaN.  */
33   {
34     int exp = -9999;
35     float mantissa;
36     mantissa = frexpf (NaNf (), &exp);
37     ASSERT (isnanf (mantissa));
38   }
39
40   /* Signed zero.  */
41   {
42     int exp = -9999;
43     float mantissa;
44     mantissa = frexpf (0.0f, &exp);
45     ASSERT (mantissa == 0.0f);
46     ASSERT (!signbit (mantissa));
47     ASSERT (exp == 0);
48   }
49   {
50     int exp = -9999;
51     float mantissa;
52     mantissa = frexpf (minus_zerof, &exp);
53     ASSERT (mantissa == 0.0f);
54     ASSERT (!!signbit (mantissa) == !!signbit (minus_zerof));
55     ASSERT (exp == 0);
56   }
57
58   /* Infinity.  */
59   {
60     int exp = -9999;
61     float mantissa;
62     mantissa = frexpf (Infinityf (), &exp);
63     ASSERT (mantissa == Infinityf ());
64   }
65   {
66     int exp = -9999;
67     float mantissa;
68     mantissa = frexpf (- Infinityf (), &exp);
69     ASSERT (mantissa == - Infinityf ());
70   }
71
72   return 0;
73 }