MODULE midexp SHARE it, s ! STATIC, must be preserved between calls SUB midexp (dum, aa, bb, s, n) DECLARE FUNCTION fexp, func ! func is supplied by the user LET b = exp(-aa) LET a = 0 IF n = 1 then LET s = (b - a) * fexp(.5 * (a + b)) LET it = 1 ELSE LET tnm = it LET del = (b - a) / (3 * tnm) LET ddel = del + del LET x = a + .5 * del LET sum = 0 FOR j = 1 to it LET sum = sum + fexp(x) LET x = x + ddel LET sum = sum + fexp(x) LET x = x + del NEXT j LET s = (s + (b - a) * sum / tnm) / 3 LET it = 3 * it END IF END SUB FUNCTION fexp (x) DECLARE FUNCTION func LET fexp = func(1 / x) / x ^ 2 END FUNCTION END MODULE