-- test_aquad3.adb adaptive quadrature test with Ada.Text_IO; use Ada.Text_IO; with Ada.Numerics.Long_Elementary_Functions; use Ada.Numerics.Long_Elementary_Functions; with aquad; use aquad; with f; -- 1/x with f1; -- per comment procedure test_aquad3 is xmin, xmax : Long_Float; eps : Long_float := 0.001; area, err, exact : Long_Float; package Lf is new Ada.Text_IO.Float_IO(Long_Float); use Lf; procedure print is begin Put("xmin="); Lf.Put(xmin,2,5,0); Put(", xmax="); Lf.Put(xmax,2,0,0); Put(", area="); Lf.Put(area,3,6,0); Put(", exact="); Lf.Put(exact,3,6,0); Put(", err="); Lf.Put(err,2,5); New_Line; end print; begin put_line("test_aquad3.adb testing aquad3.adb 1/x eps:="& Long_Float'Image(Eps)); xmin := 0.1; xmax := 2.0; area := aquad3(sin'access, xmin, xmax, eps); area := aquad3(f'access, xmin, xmax, eps); exact := log(xmax)-log(xmin); err := area-exact; print; xmin := 0.01; area := aquad3(f'access, xmin, xmax, eps); exact := log(xmax)-log(xmin); err := area-exact; print; xmin := 0.001; area := aquad3(f'access, xmin, xmax, eps); exact := log(xmax)-log(xmin); err := area-exact; print; xmin := 0.0001; area := aquad3(f'access, xmin, xmax, eps); exact := log(xmax)-log(xmin); err := area-exact; print; xmin := 0.00001; area := aquad3(f'access, xmin, xmax, eps); exact := log(xmax)-log(xmin); err := area-exact; print; put_line("1.0/((x-0.3)*(x-0.3)+0.01) + 1.0/((x-0.9)*(x-0.9)+0.04) -6"); xmin := 0.0; xmax := 1.0; eps := 0.001; area := aquad3(f1'access, xmin, xmax, eps); exact := 29.85832540; err := area - exact; print; put_line("test_aquad3.adb finished"); end test_aquad3;