Numerical integration/Adaptive Simpson's method: Difference between revisions

→‎{{header|Pascal}}: Do not redundantly pass around f.
(Added Pascal before →‎{{header|Perl}})
(→‎{{header|Pascal}}: Do not redundantly pass around f.)
Line 1,076:
depth : integer) : real;
 
procedure quad_asr_simpsons_ ( fa, fa, b, fb : function_real_to_realreal;
var am, fafm, b,quadval fb: real);
var m, fm, quadval: real);
begin
m := (a + b) / 2;
Line 1,085 ⟶ 1,084:
end;
 
function quad_asr_ (f a, fa, b, fb : function_real_to_realreal;
a, fa, b, fb : real;
tol, whole, m, fm : real;
depth : integer) : real;
Line 1,094 ⟶ 1,092:
delta, tol_ : real;
begin
quad_asr_simpsons_ (f, a, fa, m, fm, lm, flm, left);
quad_asr_simpsons_ (f, m, fm, b, fb, rm, frm, right);
delta := left + right - whole;
tol_ := tol / 2;
Line 1,101 ⟶ 1,099:
quad_asr_ := left + right + (delta / 15)
else
quad_asr_ := (quad_asr_ (f, a, fa, m, fm, tol_,
left , lm, flm, depth - 1)
+ quad_asr_ (f, m, fm, b, fb, tol_,
right, rm, frm, depth - 1))
end;
Line 1,110 ⟶ 1,108:
fa := f(a);
fb := f(b);
quad_asr_simpsons_ (f, a, fa, b, fb, m, fm, whole);
quad_asr := quad_asr_ (f, a, fa, b, fb, tol, whole, m, fm, depth)
end;
 
1,448

edits