TRIANGLE| begin comment library A0, A6; comment program to integrate f(x,y) over triangle (0,0), (1,0), (1,1); comment extra parameter to intint makes it work; real procedure f(x, y); value x,y; real x,y; f:= x + x + y + y; real procedure int(a, b, f); comment integrates f(x) over range a to b; value a, b; real a, b; real procedure f; begin comment adding extra parameter makes it work; real procedure intint(a, b, fa, fb, d); value a, b, fa, fb, d; real a, b, fa, fb; integer d; begin real c, fc, ff; c := (a + b) × 0.5; fc := f(c); ff := (fa + 4.0×fc + fb); comment answer is good enough if simrule no better than trapezoidal; if abs( (fa + fb)×3.0 - ff ) < 0.001 then intint := ff × (b - a) × 0.16666666667 else intint := intint(a, c, fa, fc, d-1) + intint(c, b, fc, fb, d-1); end!; int := intint(a, b, f(a), f(b), 5); end!; real procedure intfy(x); comment integral 0 to x of ff(x,y) dy; value x; real x; begin real procedure fx(y); value y; real y; fx := f(x,y); intfy := int(0, x, fx); end!; real procedure minitest(x); value x; real x; begin minitest := x×x×x; end!; real answer, pi; integer ii; writetext(30, [minitest*0*to*2*x^3*=*]); answer := int(0, 2, minitest); output(30, answer); writetext(30, [Now*for*the*square*root ]); output(30, sqrt(answer)); pi := answer×arctan(1.0); writetext(30, [This*is*the*value*of*pi*calculated*using*arctan*]); output(30, pi); answer := sin(pi/6.0); writetext(30, [sin*pi/6*which*should*be*a*half*]); output(30, answer); answer := cos(pi/6.0); writetext(30, [cos*pi/6*which*should*be*a*the*same*as*the*next*result*]); output(30, answer); writetext(30, [should*be*same*as*the*previous*]); answer := sqrt(3.0)/2.0; output(30, answer); writetext(30, [Now*square*it*to*get*3/4*]); output(30, answer^2); ii := 3; writetext(30, [3^3*=*]); output(30, ii^ii); writetext(30, [Integer*divide*3*squared*by*2*]); output(30, ii^2 ÷ 2); writetext(30, [Calculate*e*using*exp*]); answer := exp(1.0); output(30, answer); writetext(30, [...*and*take*its*log*]); output(30, ln(answer)); writetext(30, [[c_]fulltest*0*to*1*triangle*=*]); answer := int(0, 1, intfy); output(30, answer); writetext(30, [Testing*exponentiation:*2 ^ 4*=*]); answer := 4.0; output(30, 2^answer); writetext(30, [Testing*exponentiation:*2 ^ 4.0*=*]); output(30, 2.0^answer); end | |