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
|
|