|
|
DataMuseum.dkPresents historical artifacts from the history of: RC4000/8000/9000 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RC4000/8000/9000 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 1536 (0x600)
Types: TextFile
Names: »tspln3int«
└─⟦00964e8f7⟧ Bits:30007478 RC8000 Dump tape fra HCØ.
└─⟦b2ec5d50f⟧
└─⟦09b4e9619⟧ »thcømat«
└─⟦this⟧
message spln3int
spln3int=algol message.no
cubic spline integral
external
real procedure spln3int(x,X,Y,M,n);
value n,x; integer n; real x; array X,Y,M;
begin
own integer i;
real xm,xp,h;
own real int;
if n=0 then
begin
i:=0; int:=0
end
else
begin
if x<X(1) or x>X(n) then alarm(<:<10>***spln3int illegal x = :>,
string exactlay(x,i,x),x);
if i>=n then
begin
i:=0; int:=0
end;
for xp:=X(i+1)-x while xp<=0 and i<n-1 do
begin
h:=(xp+x-X(i))/2;
int:=int-h*(h*h*(M(i+1)+M(i))/3-Y(i+1)-Y(i));
i:=i+1
end;
for xm:=x-X(i) while xm<0 do
begin
i:=i-1;
h:=(x-xm-X(i))/2;
int:=(if i=1 then 0
else int+h*(h*h*(M(i+1)+M(i))/3-Y(i+1)-Y(i)));
xp:=-xm
end;
spln3int:=int+xm*(Y(i)+xm*((Y(i+1)-Y(i))/2/(xm+xp)
-(M(i+1)+M(i)+M(i))/12*(xm+xp)+xm*(M(i)/6
+xm*(M(i+1)-M(i))/24/(xm+xp))))
end
end spln3int
; end
▶EOF◀