2 # Test for output with appropriate precision
4 # Copyright (C) 2015-2024 Free Software Foundation, Inc.
6 # This program is free software: you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation, either version 3 of the License, or
9 # (at your option) any later version.
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 # GNU General Public License for more details.
16 # You should have received a copy of the GNU General Public License
17 # along with this program. If not, see <https://www.gnu.org/licenses/>.
19 .
"${srcdir=.}/tests/init.sh"; path_prepend_ .
/src
23 # Integer only. Before v8.24 these would switch output format
25 seq 999999 inf |
head -n2 > out || fail
=1
26 printf "%s\n" 999999 1000000 > exp || framework_failure_
27 compare exp out || fail
=1
29 # Exercise buffer handling in non floating point output
30 for i
in $
(seq 100); do
31 n1
="$(printf '%*s' $i '' | tr ' ' 9)"
32 n2
="1$(echo $n1 | tr 9 0)"
34 seq $n1 $n2 > out || fail
=1
35 printf "%s\n" "$n1" "$n2" > exp || framework_failure_
36 compare exp out || fail
=1
39 seq 0xF423F 0xF4240 > out || fail
=1
40 printf "%s\n" 999999 1000000 > exp || framework_failure_
41 compare exp out || fail
=1
43 # Ensure consistent precision for inf
44 seq 1 .1 inf |
head -n2 > out || fail
=1
45 printf "%s\n" 1.0 1.1 > exp || framework_failure_
46 compare exp out || fail
=1
48 # Ensure standard output methods with inf start
49 seq inf inf |
head -n2 |
uniq > out || fail
=1
50 test "$(wc -l < out)" = 1 || fail
=1
52 # Ensure auto precision for hex float
53 seq 1 0x1p
-1 2 > out || fail
=1
54 printf "%s\n" 1 1.5 2 > exp || framework_failure_
55 compare exp out || fail
=1
57 # Ensure consistent precision for hex
58 seq 1 .1 0x2 |
head -n2 > out || fail
=1
59 printf "%s\n" 1.0 1.1 > exp || framework_failure_
60 compare exp out || fail
=1
62 # Ensure consistent handling of precision/width for exponents
64 seq 1.1e1
12 > out || fail
=1
65 printf "%s\n" 11 12 > exp || framework_failure_
66 compare exp out || fail
=1
68 seq 11 1.2e1
> out || fail
=1
69 printf "%s\n" 11 12 > exp || framework_failure_
70 compare exp out || fail
=1
72 seq -w 1.1e4 |
head -n1 > out || fail
=1
73 printf "%s\n" 00001 > exp || framework_failure_
74 compare exp out || fail
=1
76 seq -w 1.10000e5
1.10000e5
> out || fail
=1
77 printf "%s\n" 110000 > exp || framework_failure_
78 compare exp out || fail
=1
80 # Ensure no undefined behavior which failed with <= 8.32
81 # This test would fail with: -fsanitize=undefined
82 seq 1e
$LONG_MIN 2> err || fail
=1
83 compare
/dev
/null err || fail
=1