26 lines
1.1 KiB
Fortran
26 lines
1.1 KiB
Fortran
REAL FUNCTION INTG8(F,A,B,DX) !Integrate function F.
|
|
EXTERNAL F !Some function of one parameter.
|
|
REAL A,B !Bounds.
|
|
REAL DX !Step.
|
|
INTEGER N !A counter.
|
|
INTG8 = F(A) + F(B) !Get the ends exactly.
|
|
N = (B - A)/DX !Truncates. Ignore A + N*DX = B chances.
|
|
DO I = 1,N !Step along the interior.
|
|
INTG8 = INTG8 + F(A + I*DX) !Evaluate the function.
|
|
END DO !On to the next.
|
|
INTG8 = INTG8/(N + 2)*(B - A) !Average value times interval width.
|
|
END FUNCTION INTG8 !This is not a good calculation!
|
|
|
|
FUNCTION TRIAL(X) !Some user-written function.
|
|
REAL X
|
|
TRIAL = 1 + X !This will do.
|
|
END FUNCTION TRIAL !Not the name of a library function.
|
|
|
|
PROGRAM POKE
|
|
INTRINSIC SIN !Thus, not an (undeclared) ordinary variable.
|
|
EXTERNAL TRIAL !Likewise, but also, not an intrinsic function.
|
|
REAL INTG8 !Don't look for the result in an integer place.
|
|
WRITE (6,*) "Result=",INTG8(SIN, 0.0,8*ATAN(1.0),0.01)
|
|
WRITE (6,*) "Linear=",INTG8(TRIAL,0.0,1.0, 0.01)
|
|
END
|