-- test_passing_function.adb simple trapezoidal integration with Ada.Text_IO; use Ada.Text_IO; procedure Test_Passing_function is Xmin : Long_Float := 1.0; Xmax : Long_Float := 2.0; N : Integer := 10; Area : Long_Float; package Lf is new Ada.Text_IO.Float_IO(Long_Float); use Lf; type Funct is access function (X : Long_Float) return Long_Float; function F(X : Long_Float) return Long_Float is begin return X*X; end F; function Trap_Int(F : funct; Xmin : Long_Float; Xmax : Long_Float; N : Integer) return Long_Float is Area : Long_Float := (F(Xmin)+F(Xmax))/2.0; H : Long_Float := (Xmax-Xmin)/Long_Float(N); begin for I in 1..N-1 loop Area := Area + F(Xmin + H*Long_Float(I)); end loop; return H*Area; end Trap_Int; begin Put_Line("test_passing_function.adb running, n="& Integer'Image(N)); Put("xmin="); Put(xmin,2,5,0); Put(", xmax="); Put(xmax,2,5,0); New_Line; area := Trap_Int(F'Access, Xmin, Xmax, N); Put("area="); Put(area,3,6,0); New_Line; put_line("test_passing_function.adb finished"); end Test_Passing_Function;