annotate tests/test-floorl.c @ 9938:9f8c455639fc

Fix rounding when a precision is given.
author Bruno Haible <bruno@clisp.org>
date Sat, 19 Apr 2008 17:26:36 +0200
parents 0be6f1ab456d
children 06a4179ed804
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
9294
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
1 /* Test of rounding towards negative infinity.
9889
0be6f1ab456d Flush the standard error stream before aborting.
Bruno Haible <bruno@clisp.org>
parents: 9309
diff changeset
2 Copyright (C) 2007-2008 Free Software Foundation, Inc.
9294
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
3
9309
bbbbbf4cd1c5 Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents: 9294
diff changeset
4 This program is free software: you can redistribute it and/or modify
9294
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
5 it under the terms of the GNU General Public License as published by
9309
bbbbbf4cd1c5 Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents: 9294
diff changeset
6 the Free Software Foundation; either version 3 of the License, or
bbbbbf4cd1c5 Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents: 9294
diff changeset
7 (at your option) any later version.
9294
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
8
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
9 This program is distributed in the hope that it will be useful,
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
12 GNU General Public License for more details.
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
13
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
14 You should have received a copy of the GNU General Public License
9309
bbbbbf4cd1c5 Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents: 9294
diff changeset
15 along with this program. If not, see <http://www.gnu.org/licenses/>. */
9294
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
16
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
17 /* Written by Bruno Haible <bruno@clisp.org>, 2007. */
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
18
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
19 #include <config.h>
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
20
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
21 #include <math.h>
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
22
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
23 #include <stdio.h>
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
24 #include <stdlib.h>
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
25
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
26 #include "fpucw.h"
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
27 #include "isnanl-nolibm.h"
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
28
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
29 #define ASSERT(expr) \
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
30 do \
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
31 { \
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
32 if (!(expr)) \
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
33 { \
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
34 fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
9889
0be6f1ab456d Flush the standard error stream before aborting.
Bruno Haible <bruno@clisp.org>
parents: 9309
diff changeset
35 fflush (stderr); \
9294
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
36 abort (); \
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
37 } \
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
38 } \
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
39 while (0)
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
40
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
41 int
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
42 main ()
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
43 {
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
44 DECL_LONG_DOUBLE_ROUNDING
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
45
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
46 BEGIN_LONG_DOUBLE_ROUNDING ();
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
47
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
48 /* Zero. */
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
49 ASSERT (floorl (0.0L) == 0.0L);
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
50 ASSERT (floorl (-0.0L) == 0.0L);
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
51 /* Positive numbers. */
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
52 ASSERT (floorl (0.3L) == 0.0L);
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
53 ASSERT (floorl (0.7L) == 0.0L);
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
54 ASSERT (floorl (1.0L) == 1.0L);
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
55 ASSERT (floorl (1.5L) == 1.0L);
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
56 ASSERT (floorl (1.999L) == 1.0L);
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
57 ASSERT (floorl (2.0L) == 2.0L);
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
58 ASSERT (floorl (65535.999L) == 65535.0L);
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
59 ASSERT (floorl (65536.0L) == 65536.0L);
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
60 ASSERT (floorl (2.341e31L) == 2.341e31L);
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
61 /* Negative numbers. */
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
62 ASSERT (floorl (-0.3L) == -1.0L);
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
63 ASSERT (floorl (-0.7L) == -1.0L);
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
64 ASSERT (floorl (-1.0L) == -1.0L);
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
65 ASSERT (floorl (-1.001L) == -2.0L);
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
66 ASSERT (floorl (-1.5L) == -2.0L);
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
67 ASSERT (floorl (-1.999L) == -2.0L);
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
68 ASSERT (floorl (-2.0L) == -2.0L);
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
69 ASSERT (floorl (-65535.999L) == -65536.0L);
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
70 ASSERT (floorl (-65536.0L) == -65536.0L);
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
71 ASSERT (floorl (-2.341e31L) == -2.341e31L);
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
72 /* Infinite numbers. */
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
73 ASSERT (floorl (1.0L / 0.0L) == 1.0L / 0.0L);
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
74 ASSERT (floorl (-1.0L / 0.0L) == -1.0L / 0.0L);
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
75 /* NaNs. */
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
76 ASSERT (isnanl (floorl (0.0L / 0.0L)));
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
77
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
78 return 0;
868479cd3505 Test for module 'floorl'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
79 }