math: add float-store test
authornsz <nsz@port70.net>
Thu, 12 Apr 2012 13:07:21 +0000 (15:07 +0200)
committernsz <nsz@port70.net>
Thu, 12 Apr 2012 13:07:21 +0000 (15:07 +0200)
src/math/sanity.c

index a6661ba..9550a70 100644 (file)
@@ -21,15 +21,21 @@ static int checkl(long double a, long double b)
 }
 
 #define D(fx, y) do{ \
-       double yy = fx; \
+       volatile double yy = fx; \
+       volatile long double yl = fx; \
        if (!check(yy, y)) \
                error("%s got %a = %.21e want %a = %.21e\n", #fx, yy, yy, y, y); \
+       if (yy != yl) \
+               error("float-store issue: (double)%s = %a (long double)%s = %La\n", #fx, yy, #fx, yl); \
 }while(0)
 
 #define F(fx, y) do{ \
-       float yy = fx; \
+       volatile float yy = fx; \
+       volatile long double yl = fx; \
        if (!checkf(yy, y)) \
                error("%s got %a = %.21e want %a = %.21e\n", #fx, yy, yy, y, y); \
+       if (yy != yl) \
+               error("float-store issue: (float)%s = %a (long double)%s = %La\n", #fx, yy, #fx, yl); \
 }while(0)
 
 #define L(fx, y) do{ \