Merge from vendor branch GCC:
[dragonfly.git] / contrib / bc / Test / testfn.b
1 /* This function "t" tests the function "f" to see if computing at
2    two different scales has much effect on the accuracy. 
3    test from f(x) to f(y) incrementing the index by d.  f(i) is
4    computed at two scales, scale s and then scale t, where t>s.
5    the result from scale t is divided by 1 at scale s and the
6    results are compared.  If they are different, the function is
7    said to have failed.  It will then print out the value of i
8    (called index) and the two original values val1 (scale s) and
9    val2 (scale t) */
10
11 define t (x,y,d,s,t) {
12    auto u, v, w, i, b, c;
13
14    if (s >= t) {
15      "Bad Scales. Try again.
16 ";   return;
17    }
18
19    for (i = x; i < y; i += d) {
20      scale = s;
21      u = f(i);
22      scale = t;
23      v = f(i);
24      scale = s;
25      w = v / 1;
26      b += 1;
27      if (u != w) {
28        c += 1;
29 "
30 Failed:  
31 "
32        "  index = "; i;
33        "  val1 = "; u;
34        "  val2 = "; v;
35 "
36 "
37      }
38    }
39
40 "
41 Total tests:    "; b;
42 "
43 Total failures: "; c;
44 "
45 Percent failed: "; scale = 2; c*100/b;
46
47 }