@@ -61,16 +61,54 @@ static size_t run_test(int64_t* fail_ulp) {
6161 return SIZE_MAX;
6262}
6363
64+ #define C (expr ) if (!(expr)) { return __LINE__; }
65+
66+ extern volatile long double f64_pos_zero;
67+ extern volatile long double f64_neg_zero;
68+ extern volatile long double f64_pos_one;
69+ extern volatile long double f64_neg_one;
70+ extern volatile long double f64_pos_pi;
71+ extern volatile long double f64_neg_pi;
72+
73+ int comparison_test (void ) {
74+ C (f64_pos_one == f64_pos_one );
75+ C (f64_neg_one < f64_pos_one );
76+ C (f64_pos_one >= f64_neg_one );
77+ C (f64_pos_one != f64_neg_one );
78+ C (f64_pos_zero < f64_pos_one );
79+ C (f64_neg_zero > f64_neg_one );
80+
81+ C (f64_pos_zero == f64_pos_zero);
82+ C (f64_neg_zero == f64_neg_zero);
83+ C (f64_pos_zero >= f64_neg_zero);
84+ C (f64_neg_zero == f64_pos_zero);
85+
86+ C (f64_pos_pi == f64_pos_pi );
87+ C (f64_pos_pi > f64_pos_one );
88+ C (f64_neg_pi < f64_neg_one );
89+ C (f64_pos_pi > f64_pos_zero);
90+ C (f64_neg_pi <= f64_neg_zero);
91+ C (f64_neg_pi != f64_neg_zero);
92+ C (f64_pos_pi != f64_neg_pi );
93+ C (f64_pos_pi >= f64_neg_pi );
94+
95+ return 0 ;
96+ }
97+
6498int main (void ) {
6599 os_ClrHome ();
66- int64_t fail_ulp = 0 ;
67- size_t fail_index = run_test (&fail_ulp);
68- if (fail_index == SIZE_MAX) {
69- printf (" All tests passed" );
100+ int comparison_result = comparison_test ();
101+ if (comparison_result != 0 ) {
102+ printf (" Failed test L%d\n " , comparison_result);
70103 } else {
71- printf (" Failed test: %zu\n ULP: %lld" , fail_index, fail_ulp);
104+ int64_t fail_ulp = 0 ;
105+ size_t fail_index = run_test (&fail_ulp);
106+ if (fail_index == SIZE_MAX) {
107+ printf (" All tests passed" );
108+ } else {
109+ printf (" Failed test: %zu\n ULP: %lld" , fail_index, fail_ulp);
110+ }
72111 }
73-
74112 while (!os_GetCSC ());
75113
76114 return 0 ;
0 commit comments