OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [gfortran.dg/] [round_3.f08] - Blame information for rev 694

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 694 jeremybenn
! { dg-do run }
2
! PR48615 Invalid UP/DOWN rounding with E and ES descriptors
3
! Test case provided by Thomas Henlich.
4
program pr48615
5
    call checkfmt("(RU,F17.0)", 2.5,     "               3.")
6
    call checkfmt("(RU,-1P,F17.1)", 2.5, "              0.3")
7
    call checkfmt("(RU,E17.1)", 2.5,     "          0.3E+01")
8
    call checkfmt("(RU,1P,E17.0)", 2.5,  "           3.E+00")
9
    call checkfmt("(RU,ES17.0)", 2.5,    "           3.E+00")
10
    call checkfmt("(RU,EN17.0)", 2.5,    "           3.E+00")
11
    call checkfmt("(RU,F2.0)",      2.0,  "2.")
12
    call checkfmt("(RU,F6.4)",      2.0,  "2.0000")
13
    call checkfmt("(RU,1P,E6.0E2)", 2.0,  "2.E+00")
14
    call checkfmt("(RU,1P,E7.1E2)", 2.5,  "2.5E+00")
15
    call checkfmt("(RU,1P,E10.4E2)", 2.5,  "2.5000E+00")
16
    call checkfmt("(RU,1P,G6.0E2)", 2.0,  "2.E+00")
17
    call checkfmt("(RU,1P,G10.4E2)", 2.3456e5,  "2.3456E+05")
18
 
19
    call checkfmt("(RU,F2.0)",     0.09,  "1.")     ! 0.
20
    call checkfmt("(RD,F3.0)",     -0.09,  "-1.")     ! -0.
21
    call checkfmt("(RU,F2.0)",      2.0,  "2.")     ! 3.
22
    call checkfmt("(RD,F3.0)",     -2.0,  "-2.")     ! -3.
23
    call checkfmt("(RU,F6.4)",      2.0,  "2.0000")     ! 2.0001
24
    call checkfmt("(RD,F7.4)",     -2.0,  "-2.0000")     ! -2.0001
25
    call checkfmt("(RU,1P,E6.0E2)", 2.0,  "2.E+00") ! 3.E+00
26
    call checkfmt("(RD,1P,E7.0E2)", -2.0,  "-2.E+00") ! -3.E+00
27
    call checkfmt("(RU,1P,E7.1E2)", 2.5,  "2.5E+00") ! 2.6E+00
28
    call checkfmt("(RD,1P,E8.1E2)", -2.5,  "-2.5E+00") ! -2.6E+00
29
    call checkfmt("(RU,1P,E10.4E2)", 2.5,  "2.5000E+00") ! 2.5001E+00
30
    call checkfmt("(RD,1P,E11.4E2)", -2.5,  "-2.5000E+00") ! -2.5001E+00
31
    call checkfmt("(RU,1P,G6.0E2)", 2.0,  "2.E+00") ! 3.E+00
32
    call checkfmt("(RD,1P,G7.0E2)", -2.0,  "-2.E+00") ! -3.E+00
33
    call checkfmt("(RU,1P,G10.4E2)", 2.3456e5,  "2.3456E+05") ! 2.3457E+05
34
    call checkfmt("(RD,1P,G11.4E2)", -2.3456e5,  "-2.3456E+05") ! -2.3457E+05
35
 
36
    call checkfmt("(RD,F17.0)", 2.5,     "               2.")
37
    call checkfmt("(RD,-1P,F17.1)", 2.5, "              0.2")
38
    call checkfmt("(RD,E17.1)", 2.5,     "          0.2E+01")
39
    call checkfmt("(RD,1P,E17.0)", 2.5,  "           2.E+00")
40
    call checkfmt("(RD,ES17.0)", 2.5,    "           2.E+00")
41
    call checkfmt("(RD,EN17.0)", 2.5,    "           2.E+00")
42
 
43
    call checkfmt("(RC,F17.0)", 2.5,     "               3.")
44
    call checkfmt("(RC,-1P,F17.1)", 2.5, "              0.3")
45
    call checkfmt("(RC,E17.1)", 2.5,     "          0.3E+01")
46
    call checkfmt("(RC,1P,E17.0)", 2.5,  "           3.E+00")
47
    call checkfmt("(RC,ES17.0)", 2.5,    "           3.E+00")
48
    call checkfmt("(RC,EN17.0)", 2.5,    "           3.E+00")
49
 
50
    call checkfmt("(RN,F17.0)", 2.5,     "               2.")
51
    call checkfmt("(RN,-1P,F17.1)", 2.5, "              0.2")
52
    call checkfmt("(RN,E17.1)", 2.5,     "          0.2E+01")
53
    call checkfmt("(RN,1P,E17.0)", 2.5,  "           2.E+00")
54
    call checkfmt("(RN,ES17.0)", 2.5,    "           2.E+00")
55
    call checkfmt("(RN,EN17.0)", 2.5,    "           2.E+00")
56
 
57
    call checkfmt("(RZ,F17.0)", 2.5,     "               2.")
58
    call checkfmt("(RZ,-1P,F17.1)", 2.5, "              0.2")
59
    call checkfmt("(RZ,E17.1)", 2.5,     "          0.2E+01")
60
    call checkfmt("(RZ,1P,E17.0)", 2.5,  "           2.E+00")
61
    call checkfmt("(RZ,ES17.0)", 2.5,    "           2.E+00")
62
    call checkfmt("(RZ,EN17.0)", 2.5,    "           2.E+00")
63
 
64
    call checkfmt("(RZ,F17.0)", -2.5,     "              -2.")
65
    call checkfmt("(RZ,-1P,F17.1)", -2.5, "             -0.2")
66
    call checkfmt("(RZ,E17.1)", -2.5,     "         -0.2E+01")
67
    call checkfmt("(RZ,1P,E17.0)", -2.5,  "          -2.E+00")
68
    call checkfmt("(RZ,ES17.0)", -2.5,    "          -2.E+00")
69
    call checkfmt("(RZ,EN17.0)", -2.5,    "          -2.E+00")
70
 
71
    call checkfmt("(RN,F17.0)", -2.5,     "              -2.")
72
    call checkfmt("(RN,-1P,F17.1)", -2.5, "             -0.2")
73
    call checkfmt("(RN,E17.1)", -2.5,     "         -0.2E+01")
74
    call checkfmt("(RN,1P,E17.0)", -2.5,  "          -2.E+00")
75
    call checkfmt("(RN,ES17.0)", -2.5,    "          -2.E+00")
76
    call checkfmt("(RN,EN17.0)", -2.5,    "          -2.E+00")
77
 
78
    call checkfmt("(RC,F17.0)", -2.5,     "              -3.")
79
    call checkfmt("(RC,-1P,F17.1)", -2.5, "             -0.3")
80
    call checkfmt("(RC,E17.1)", -2.5,     "         -0.3E+01")
81
    call checkfmt("(RC,1P,E17.0)", -2.5,  "          -3.E+00")
82
    call checkfmt("(RC,ES17.0)", -2.5,    "          -3.E+00")
83
    call checkfmt("(RC,EN17.0)", -2.5,    "          -3.E+00")
84
 
85
    call checkfmt("(RU,E17.1)", nearest(2.0, 1.0),     "          0.3E+01")
86
    call checkfmt("(RD,E17.1)", nearest(3.0, -1.0),    "          0.2E+01")
87
 
88
contains
89
    subroutine checkfmt(fmt, x, cmp)
90
        character(len=*), intent(in) :: fmt
91
        real, intent(in) :: x
92
        character(len=*), intent(in) :: cmp
93
        character(len=20) :: s
94
 
95
        write(s, fmt) x
96
        if (s /= cmp) call abort
97
        !if (s /= cmp) print "(a,1x,a,' expected: ',1x)", fmt, s, cmp
98
    end subroutine
99
end program

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.