1 /* Basic test of runtime equality comparisons using simple values that
2 are not affected by rounding. */
7 #define PASTE2(A,B) A ## B
8 #define PASTE(A,B) PASTE2(A,B)
12 #define FAILURE(OP,KIND) \
13 { printf ("failed at line %d: %s for %s values\n", __LINE__, OP, KIND); \
16 #define FAILURE(OP,KIND) __builtin_abort ();
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 /* 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 /* 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 /* 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 /* Not equal to: comparisons against equal values. */
75 if (x
!= one
) FAILURE ("!=", "equal")
76 if (y
!= zero
) FAILURE ("!=", "equal")
77 if (z
!= m_one
) FAILURE ("!=", "equal")
79 /* Not equal to: 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 /* Not equal to: comparisons against greater values. */
88 if (! (x
!= m_one
)) FAILURE ("!=", "greater")
89 if (! (x
!= zero
)) FAILURE ("!=", "greater")
90 if (! (y
!= m_one
)) FAILURE ("!=", "greater")
91 if (! (z
!= m_two
)) FAILURE ("!=", "greater")