7840108142d355bd02bc44aeaebd5461bec727f5
1 /* Basic test of runtime relational comparisons using simple values that
2 are not affected by rounding. */
9 #define FAILURE(OP,KIND) \
10 { printf ("failed at line %d: %s for %s values\n", __LINE__, OP, KIND); \
13 #define FAILURE(OP,KIND) __builtin_abort ();
16 #define PASTE2(A,B) A ## B
17 #define PASTE(A,B) PASTE2(A,B)
20 #error define WIDTH as decimal float size in bytes
24 #define DTYPE _Decimal32
27 #define DTYPE _Decimal64
30 #define DTYPE _Decimal128
33 /* This is for testing the test using a type known to work. */
37 #error invalid width for decimal float type
40 DTYPE m_two
= PASTE(-2.0, SUFFIX
);
41 DTYPE m_one
= PASTE(-1.0, SUFFIX
);
42 DTYPE zero
= PASTE(0.0, SUFFIX
);
43 DTYPE one
= PASTE(1.0, SUFFIX
);
44 DTYPE two
= PASTE(2.0, SUFFIX
);
53 /* Less than or equal to: comparisons against equal values. */
55 if (! (x
<= one
)) FAILURE ("<=", "equal")
56 if (! (y
<= zero
)) FAILURE ("<=", "equal")
57 if (! (z
<= m_one
)) FAILURE ("<=", "equal")
59 /* Less than or equal to: comparisons against lesser values. */
61 if (x
<= m_one
) FAILURE ("<=", "lesser")
62 if (x
<= zero
) FAILURE ("<=", "lesser")
63 if (y
<= m_one
) FAILURE ("<=", "lesser")
64 if (z
<= m_two
) FAILURE ("<=", "lesser")
66 /* Less than or equal to: comparisons against greater values. */
68 if (! (x
<= two
)) FAILURE ("<=", "greater")
69 if (! (y
<= one
)) FAILURE ("<=", "greater")
70 if (! (z
<= zero
)) FAILURE ("<=", "greater")
71 if (! (z
<= one
)) FAILURE ("<=", "greater")
73 /* Less than: comparisons against equal values. */
75 if (x
< one
) FAILURE ("<", "equal")
76 if (y
< zero
) FAILURE ("<", "equal")
77 if (z
< m_one
) FAILURE ("<", "equal")
79 /* Less than: comparisons against lesser values. */
81 if (x
< m_one
) FAILURE ("<", "lesser")
82 if (x
< zero
) FAILURE ("<", "lesser")
83 if (y
< m_one
) FAILURE ("<", "lesser")
84 if (z
< m_two
) FAILURE ("<", "lesser")
86 /* Less than: comparisons against greater values. */
88 if (! (x
< two
)) FAILURE ("<", "greater")
89 if (! (y
< one
)) FAILURE ("<", "greater")
90 if (! (z
< zero
)) FAILURE ("<", "greater")
91 if (! (z
< one
)) FAILURE ("<", "greater")
93 /* Greater than or equal to: comparisons against equal values. */
95 if (! (x
>= one
)) FAILURE (">=", "equal")
96 if (! (y
>= zero
)) FAILURE (">=", "equal")
97 if (! (z
>= m_one
)) FAILURE (">=", "equal")
99 /* Greater than or equal to: comparisons against lesser values. */
101 if (! (x
>= m_one
)) FAILURE (">=", "lesser")
102 if (! (x
>= zero
)) FAILURE (">=", "lesser")
103 if (! (y
>= m_one
)) FAILURE (">=", "lesser")
104 if (! (z
>= m_two
)) FAILURE (">=", "lesser")
106 /* Greater than or equal to: comparisons against greater values. */
108 if (x
>= two
) FAILURE (">=", "greater")
109 if (y
>= one
) FAILURE (">=", "greater")
110 if (z
>= zero
) FAILURE (">=", "greater")
111 if (z
>= one
) FAILURE (">=", "greater")
113 /* Greater than: comparisons against equal values. */
115 if (x
> one
) FAILURE (">", "equal")
116 if (y
> zero
) FAILURE (">", "equal")
117 if (z
> m_one
) FAILURE (">", "equal")
119 /* Greater than: comparisons against lesser values. */
121 if (! (x
> m_one
)) FAILURE (">", "lesser")
122 if (! (x
> zero
)) FAILURE (">", "lesser")
123 if (! (y
> m_one
)) FAILURE (">", "lesser")
124 if (! (z
> m_two
)) FAILURE (">", "lesser")
126 /* Greater than: comparisons against greater values. */
128 if (x
> two
) FAILURE (">", "greater")
129 if (y
> one
) FAILURE (">", "greater")
130 if (z
> zero
) FAILURE (">", "greater")
131 if (z
> one
) FAILURE (">", "greater")