#include #include #include "dk3conf.h" #include "dk3mafpe.h" $!trace-include int main(int argc, char *argv[]) { double x; double y; double z; double factor = 2.0; int i; $!trace-init test-fpe.deb $? "+ main" printf("FPE handling: %d\n", dk3mafpe_get_handling_type()); dk3mafpe_clear(); x = 3.0 / 0.0; printf("x = 3.0 / 0.0 = %lg -> %x\n", x, (int)dk3mafpe_get()); dk3mafpe_clear(); y = 4.0 / 0.0; printf("y = 4.0 / 0.0 = %lg -> %x\n", y, (int)dk3mafpe_get()); dk3mafpe_clear(); z = x / y; printf("z = x / y = %lg -> %x\n", z, (int)dk3mafpe_get()); dk3mafpe_clear(); x = 1.3e307 / 12.0e-100; printf("x = 1.3e307 / 12.0e-100 = %lg -> %x\n", x, (int)dk3mafpe_get()); dk3mafpe_clear(); y = 1.0e-17 / 1.3e307; printf("y = 1.0e-17 / 1.3e307 = %lg -> %x\n", y, (int)dk3mafpe_get()); dk3mafpe_clear(); factor = 2.0; for(i = 0; i < 100; i++) { dk3mafpe_clear(); x = DBL_MIN / factor; printf("(%ld) x = DBL_MIN / %lg = %lg -> %x\n", i, factor, x, (int)dk3mafpe_get()); if (isnormal(x)) { printf("normalized\n"); } else { printf("not normalized\n"); } factor *= 2.0; } dk3mafpe_clear(); $? "- main" $!trace-end }