# an iterative SR program for approximating the integral # of f(x) from 0.0 to 20.0 for f(x) = sin(x)*exp(x) resource quad() var intervals: int; getarg(1, intervals) var area := 0.0 var step := 20.0/intervals # distance between intervals var fleft := sin(0.0)*exp(0.0), fright: real # fleft is used to compute f(x) just once per value of x var start := age() # start time fa x := 0.0 to 20.0-step by step -> fright := sin(x+step)*exp(x+step) area +:= (fleft+fright)*step/2 # trapezoidal rule fleft := fright af var finish := age() # finish time write("intervals =",intervals," area =",area, " time = ",finish-start) end