annotate gcc/testsuite/gfortran.dg/edit_real_1.f90 @ 145:1830386684a0

gcc-9.2.0
author anatofuz
date Thu, 13 Feb 2020 11:34:05 +0900
parents 84e7813d76e9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 ! { dg-do run }
kono
parents:
diff changeset
2 ! Check real value edit descriptors
kono
parents:
diff changeset
3 ! Also checks that rounding is performed correctly
kono
parents:
diff changeset
4 program edit_real_1
kono
parents:
diff changeset
5 character(len=20) s
kono
parents:
diff changeset
6 character(len=20) x
kono
parents:
diff changeset
7 character(len=200) t
kono
parents:
diff changeset
8 parameter (x = "xxxxxxxxxxxxxxxxxxxx")
kono
parents:
diff changeset
9
kono
parents:
diff changeset
10 ! W append a "z" onto each test to check the field is the correct width
kono
parents:
diff changeset
11 s = x
kono
parents:
diff changeset
12 ! G -> F format
kono
parents:
diff changeset
13 write (s, '(G10.3,A)') 12.36, "z"
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
14 if (s .ne. " 12.4 z") STOP 1
111
kono
parents:
diff changeset
15 s = x
kono
parents:
diff changeset
16 ! G -> E format
kono
parents:
diff changeset
17 write (s, '(G10.3,A)') -0.0012346, "z"
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
18 if (s .ne. "-0.123E-02z") STOP 2
111
kono
parents:
diff changeset
19 s = x
kono
parents:
diff changeset
20 ! Gw.eEe format
kono
parents:
diff changeset
21 write (s, '(G10.3e1,a)') 12.34, "z"
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
22 if (s .ne. " 12.3 z") STOP 3
111
kono
parents:
diff changeset
23 ! E format with excessive precision
kono
parents:
diff changeset
24 write (t, '(E199.192,A)') 1.5, "z"
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
25 if ((t(1:7) .ne. " 0.1500") .or. (t(194:200) .ne. "00E+01z")) STOP 4
111
kono
parents:
diff changeset
26 ! EN format
kono
parents:
diff changeset
27 s = x
kono
parents:
diff changeset
28 write (s, '(EN15.3,A)') 12873.6, "z"
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
29 if (s .ne. " 12.874E+03z") STOP 5
111
kono
parents:
diff changeset
30 ! EN format, negative exponent
kono
parents:
diff changeset
31 s = x
kono
parents:
diff changeset
32 write (s, '(EN15.3,A)') 12.345e-6, "z"
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
33 if (s .ne. " 12.345E-06z") STOP 6
111
kono
parents:
diff changeset
34 ! ES format
kono
parents:
diff changeset
35 s = x
kono
parents:
diff changeset
36 write (s, '(ES10.3,A)') 16.235, "z"
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
37 if (s .ne. " 1.624E+01z") STOP 7
111
kono
parents:
diff changeset
38 ! F format, small number
kono
parents:
diff changeset
39 s = x
kono
parents:
diff changeset
40 write (s, '(F10.8,A)') 1.0e-20, "z"
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
41 if (s .ne. "0.00000000z") STOP 8
111
kono
parents:
diff changeset
42 ! E format, very large number.
kono
parents:
diff changeset
43 ! Used to overflow with positive scale factor
kono
parents:
diff changeset
44 s = x
kono
parents:
diff changeset
45 write (s, '(1PE10.3,A)') huge(0d0), "z"
kono
parents:
diff changeset
46 ! The actual value is target specific, so just do a basic check
kono
parents:
diff changeset
47 if ((s(1:1) .eq. "*") .or. (s(7:7) .ne. "+") .or. &
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
48 (s(11:11) .ne. "z")) STOP 9
111
kono
parents:
diff changeset
49 ! F format, round up with carry to most significant digit.
kono
parents:
diff changeset
50 s = x
kono
parents:
diff changeset
51 write (s, '(F10.3,A)') 0.9999, "z"
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
52 if (s .ne. " 1.000z") STOP 10
111
kono
parents:
diff changeset
53 ! F format, round up with carry to most significant digit < 0.1.
kono
parents:
diff changeset
54 s = x
kono
parents:
diff changeset
55 write (s, '(F10.3,A)') 0.0099, "z"
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
56 if (s .ne. " 0.010z") STOP 11
111
kono
parents:
diff changeset
57 ! E format, round up with carry to most significant digit.
kono
parents:
diff changeset
58 s = x
kono
parents:
diff changeset
59 write (s, '(E10.3,A)') 0.9999, "z"
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
60 if (s .ne. " 0.100E+01z") STOP 12
111
kono
parents:
diff changeset
61 ! EN format, round up with carry to most significant digit.
kono
parents:
diff changeset
62 s = x
kono
parents:
diff changeset
63 write (s, '(EN15.3,A)') 999.9999, "z"
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
64 if (s .ne. " 1.000E+03z") STOP 13
111
kono
parents:
diff changeset
65 ! E format, positive scale factor
kono
parents:
diff changeset
66 s = x
kono
parents:
diff changeset
67 write (s, '(2PE10.4,A)') 1.2345, "z"
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
68 if (s .ne. '12.345E-01z') STOP 14
111
kono
parents:
diff changeset
69 ! E format, negative scale factor
kono
parents:
diff changeset
70 s = x
kono
parents:
diff changeset
71 write (s, '(-2PE10.4,A)') 1.250001, "z"
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
72 if (s .ne. '0.0013E+03z') STOP 15
111
kono
parents:
diff changeset
73 ! E format, single digit precision
kono
parents:
diff changeset
74 s = x
kono
parents:
diff changeset
75 write (s, '(E10.1,A)') 1.1, "z"
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
76 if (s .ne. ' 0.1E+01z') STOP 16
111
kono
parents:
diff changeset
77 end
kono
parents:
diff changeset
78