8 { "1.0", 0, 0, "1.0" },
9 { "-1.0", 0, 0, "-1.0" },
10 { "0.0", 0, 0, "0.0" },
11 { "1.234567", 0, 0, "1.234567" },
12 { "1.234567", 0, 'D', "1.0" },
13 { "1.234567", 0, 'R', "2.34567e-1" },
14 { "32768", "32768", '+', "6.5536e+4" },
15 { "32768", "32767", '-', "1.0" },
16 { "32768", "32768", '*', "1.073741824e+9" },
17 { "32768", "32768", '/', "1.0" },
18 { "1.234567e20", "-1.234567e20", '+', "0.0" },
19 { "1e100", "1e100", '+', "2.0e+100" },
20 { "1e110", "10", '*', "1.0e+111" },
21 { "0.5e100", "0.5e100", '*', "2.5e+199" },
27 register struct tests *p = tests;
31 if (! dotest(p)) exit_status = 1;
39 register struct tests *p;
43 static int testno = 0;
46 flt_str2flt(p->op1, &e1);
49 flt_str2flt(p->op2, &e2);
50 flt_add(&e1, &e2, &e);
53 flt_str2flt(p->op2, &e2);
54 flt_sub(&e1, &e2, &e);
57 flt_str2flt(p->op2, &e2);
58 flt_mul(&e1, &e2, &e);
61 flt_str2flt(p->op2, &e2);
62 flt_div(&e1, &e2, &e);
65 /* integer part of flt_modf */
66 flt_modf(&e1, &e, &e2);
69 /* fraction part of flt_modf */
70 flt_modf(&e1, &e2, &e);
81 flt_flt2str(&e, buf, 128);
83 if (! strcmp(buf, p->result)) return 1;
85 printf("Test number %d failed: result = %s, should be %s\n", testno, buf, p->result);