Fix floating point number comparisons in testsuite/libffi.call/float[123].c.
Rewrite the checks for approximate equality of floating point return values to be in the form "fabs(a - b) < EPS" instead of just "a - b < EPS".
This commit is contained in:
@@ -8,6 +8,8 @@
|
||||
#include "ffitest.h"
|
||||
#include "float.h"
|
||||
|
||||
#include <math.h>
|
||||
|
||||
typedef union
|
||||
{
|
||||
double d;
|
||||
@@ -47,7 +49,7 @@ int main (void)
|
||||
|
||||
/* These are not always the same!! Check for a reasonable delta */
|
||||
|
||||
CHECK(result[0].d - dblit(f) < DBL_EPSILON);
|
||||
CHECK(fabs(result[0].d - dblit(f)) < DBL_EPSILON);
|
||||
|
||||
/* Check the canary. */
|
||||
for (i = 0; i < sizeof (double); ++i)
|
||||
|
||||
@@ -8,6 +8,8 @@
|
||||
#include "ffitest.h"
|
||||
#include "float.h"
|
||||
|
||||
#include <math.h>
|
||||
|
||||
static long double ldblit(float f)
|
||||
{
|
||||
return (long double) (((long double) f)/ (long double) 3.0);
|
||||
@@ -47,7 +49,7 @@ int main (void)
|
||||
#endif
|
||||
|
||||
/* These are not always the same!! Check for a reasonable delta */
|
||||
if (ld - ldblit(f) < LDBL_EPSILON)
|
||||
if (fabsl(ld - ldblit(f)) < LDBL_EPSILON)
|
||||
puts("long double return value tests ok!");
|
||||
else
|
||||
CHECK(0);
|
||||
|
||||
@@ -9,6 +9,8 @@
|
||||
#include "ffitest.h"
|
||||
#include "float.h"
|
||||
|
||||
#include <math.h>
|
||||
|
||||
static double floating_1(float a, double b, long double c)
|
||||
{
|
||||
return (double) a + b + (double) c;
|
||||
@@ -49,7 +51,7 @@ int main (void)
|
||||
|
||||
ffi_call(&cif, FFI_FN(floating_1), &rd, values);
|
||||
|
||||
CHECK(rd - floating_1(f, d, ld) < DBL_EPSILON);
|
||||
CHECK(fabs(rd - floating_1(f, d, ld)) < DBL_EPSILON);
|
||||
|
||||
args[0] = &ffi_type_longdouble;
|
||||
values[0] = &ld;
|
||||
@@ -66,7 +68,7 @@ int main (void)
|
||||
|
||||
ffi_call(&cif, FFI_FN(floating_2), &rd, values);
|
||||
|
||||
CHECK(rd - floating_2(ld, d, f) < DBL_EPSILON);
|
||||
CHECK(fabs(rd - floating_2(ld, d, f)) < DBL_EPSILON);
|
||||
|
||||
exit (0);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user