-- check_test_5d.adb check every derivative function up to 4th order -- from package test_5d, 125 tests -- this computes all 30 cases of possible derivatives for 5 independent -- variables up to total 4th derivative, -- given Worder, Xorder, Yorder, Zorder, Torder: -- Five cases: One partial Uwwww, Uwww, Uww, Uw, also for x,y,z, and t 20 -- Ten cases: Two partials wx, wy, wz, wt, xy, xz, xt, yz, yt, zt -- to order 1,1 1,2 1,3 2,1 2,2 3,1 60 -- Ten cases: Three partials wxy, wxz, wxt, wyz, wyt, wzt, xyz, xyt, xzt, -- yzt to order 1,1,1 2,1,1 1,2,1 1,1,2 40 -- Five cases: Four partials Uwxyz Uwxyt Uwxzt Uwyzt Uxyzt 5 -- see pde45_eq.adb for eval_derivative that uses boundary values with Ada.Text_IO; use Ada.Text_IO; with Ada.Calendar; use Ada.Calendar; with real_arrays; use real_arrays; with test_5d; use test_5d; with deriv; with rderiv; procedure check_test_5d is wg, xg, yg, zg, tg : real_vector(1..10); hw, hx, hy, hz, ht : real; nw, nx, ny, nz, nt : integer; maxerror, gmaxerror : real; wmin, wmax, xmin, xmax, ymin, ymax, zmin, zmax, tmin, tmax : real; ccount : integer := 0; tclock : time; tstart, tnow : duration; type funct is access function (w : real; x : real; y : real; z : real; t :real) return real; procedure check(name : string; F : funct; word : integer; xord : integer; yord : integer; zord : integer; tord : integer) is cw, cx, cy, cz, ct : real_vector(1..10); p1, p2, P3 : real_vector(1..10); analytic, discrete : real; error : real; w, x, y, z, t : real; begin maxerror := 0.0; for i in 1..nw loop rderiv(word, nw, i, hw, cw); w := wg(I); for ii in 1..nx loop rderiv(xord, nx, ii, hx, cx); x := xg(ii); for iii in 1..ny loop rderiv(yord, ny, iii, hy, cy); y := yg(iii); for iiii in 1..nz loop rderiv(zord, nz, iiii, hz, cz); z := zg(iiii); for iiiii in 1..nt loop rderiv(tord, nt, iiiii, ht, ct); t := tg(iiiii); analytic := F(w, x, y, z, t); ccount := ccount + 1; discrete := 0.0; -- five cases of one partial w, x, y, z, t to any order if word/=0 and xord=0 and yord=0 and zord=0 and tord=0 then for j in 1..nw loop discrete := discrete + cw(j)*U(wg(j),x,y,z,t); end loop; -- j elsif word=0 and xord/=0 and yord=0 and zord=0 and tord=0 then for jj in 1..nx loop discrete := discrete + cx(jj)*U(w,xg(jj),y,z,t); end loop; -- jj elsif word=0 and xord=0 and yord/=0 and zord=0 and tord=0 then for jjj in 1..ny loop discrete := discrete + cy(jjj)*U(w,x,yg(jjj),z,t); end loop; -- jjj elsif word=0 and xord=0 and yord=0 and zord/=0 and tord=0 then for jjjj in 1..nz loop discrete := discrete + cz(jjjj)*U(w,x,y,zg(jjjj),t); end loop; -- jjjj elsif word=0 and xord=0 and yord=0 and zord=0 and tord/=0 then for jjjjj in 1..nt loop discrete := discrete + ct(jjjjj)*U(w,x,y,z,tg(jjjjj)); end loop; -- jjjjj -- ten cases of two partials wx, wy, wz, wt, -- xy, xz, xt, yz, yt, zt to any order elsif word/=0 and xord/=0 and yord=0 and zord=0 and tord=0 then for j in 1..nw loop p1(j) := 0.0; for jj in 1..nx loop p1(j) := p1(j) + cx(jj)*U(wg(j),xg(jj),y,z,t); end loop; -- jj discrete := discrete + cw(j)*p1(j); end loop; -- j elsif word/=0 and xord=0 and yord/=0 and zord=0 and tord=0 then for j in 1..nw loop p1(j) := 0.0; for jjj in 1..ny loop p1(j) := p1(j) + cy(jjj)*U(wg(j),x,yg(jjj),z,t); end loop; -- jjj discrete := discrete + cw(j)*p1(j); end loop; -- j elsif word/=0 and xord=0 and yord=0 and zord/=0 and tord=0 then for j in 1..nw loop p1(j) := 0.0; for jjjj in 1..nz loop p1(j) := p1(j) + cz(jjjj)*U(wg(j),x,y,zg(jjjj),t); end loop; -- jjjj discrete := discrete + cw(j)*p1(j); end loop; -- j elsif word/=0 and xord=0 and yord=0 and zord=0 and tord/=0 then for j in 1..nw loop p1(j) := 0.0; for jjjjj in 1..nt loop p1(j) := p1(j) + ct(jjjjj)*U(wg(j),x,y,z,tg(jjjjj)); end loop; -- jjjjj discrete := discrete + cw(j)*p1(j); end loop; -- j elsif word=0 and xord/=0 and yord/=0 and zord=0 and tord=0 then for jj in 1..nx loop p1(jj) := 0.0; for jjj in 1..ny loop p1(jj) := p1(jj) + cy(jjj)*U(w,xg(jj),yg(jjj),z,t); end loop; -- jjj discrete := discrete + cx(jj)*p1(jj); end loop; -- jj elsif word=0 and xord/=0 and yord=0 and zord/=0 and tord=0 then for jj in 1..nx loop p1(jj) := 0.0; for jjjj in 1..nz loop p1(jj) := p1(jj) + cz(jjjj)*U(w,xg(jj),y,zg(jjjj),t); end loop; -- jjjj discrete := discrete + cx(jj)*p1(jj); end loop; -- jj elsif word=0 and xord/=0 and yord=0 and zord=0 and tord/=0 then for jj in 1..nx loop p1(jj) := 0.0; for jjjjj in 1..nt loop p1(jj) := p1(jj) + ct(jjjjj)*U(w,xg(jj),y,z,tg(jjjjj)); end loop; -- jjjjj discrete := discrete + cx(jj)*p1(jj); end loop; -- jj elsif word=0 and xord=0 and yord/=0 and zord/=0 and tord=0 then for jjj in 1..ny loop p1(jjj) := 0.0; for jjjj in 1..nz loop p1(jjj) := p1(jjj) + cz(jjjj)*U(w,x,yg(jjj),zg(jjjj),t); end loop; -- jjjj discrete := discrete + cy(jjj)*p1(jjj); end loop; -- jjj elsif word=0 and xord=0 and yord/=0 and zord=0 and tord/=0 then for jjj in 1..ny loop p1(jjj) := 0.0; for jjjjj in 1..nt loop p1(jjj) := p1(jjj) + ct(jjjjj)*U(w,x,yg(jjj),z,tg(jjjjj)); end loop; -- jjjjj discrete := discrete + cy(jjj)*p1(jjj); end loop; -- jjj elsif word=0 and xord=0 and yord=0 and zord/=0 and tord/=0 then for jjjj in 1..nz loop p1(jjjj) := 0.0; for jjjjj in 1..nt loop p1(jjjj) := p1(jjjj) + ct(jjjjj)*U(w,x,y,zg(jjjj),tg(jjjjj)); end loop; -- jjjjj discrete := discrete + cz(jjjj)*p1(jjjj); end loop; -- jjjj -- ten cases of three partials wxy, wxz, wxt, wyz, wyt, wzt, -- xyz, xyt, xzt, yzt to any order elsif word/=0 and xord/=0 and yord/=0 and zord=0 and tord=0 then for j in 1..nw loop p1(j) := 0.0; for jj in 1..nx loop p2(jj) := 0.0; for jjj in 1..ny loop p2(jj) := p2(jj) + cy(jjj)*U(wg(j),xg(jj),yg(jjj),z,t); end loop; -- jjj p1(j) := p1(j) + cx(jj)*p2(jj); end loop; -- jj discrete := discrete + cw(j)*p1(j); end loop; -- j elsif word/=0 and xord/=0 and yord=0 and zord/=0 and tord=0 then for j in 1..nw loop p1(j) := 0.0; for jj in 1..nx loop p2(jj) := 0.0; for jjjj in 1..nz loop p2(jj) := p2(jj) + cz(jjjj)*U(wg(j),xg(jj),y,zg(jjjj),t); end loop; -- jjjj p1(j) := p1(j) + cx(jj)*p2(jj); end loop; -- jj discrete := discrete + cw(j)*p1(j); end loop; -- j elsif word/=0 and xord/=0 and yord=0 and zord=0 and tord/=0 then for j in 1..nw loop p1(j) := 0.0; for jj in 1..nx loop p2(jj) := 0.0; for jjjjj in 1..nt loop p2(jj) := p2(jj) + ct(jjjjj)*U(wg(j),xg(jj),y,z,tg(jjjjj)); end loop; -- jjjjj p1(j) := p1(j) + cx(jj)*p2(jj); end loop; -- jj discrete := discrete + cw(j)*p1(j); end loop; -- j elsif word=0 and xord/=0 and yord/=0 and zord/=0 and tord=0 then for jj in 1..nx loop p1(jj) := 0.0; for jjj in 1..ny loop p2(jjj) := 0.0; for jjjj in 1..nz loop p2(jjj) := p2(jjj) + cz(jjjj)*U(w,xg(jj),yg(jjj),zg(jjjj),t); end loop; -- jjjj p1(jj) := p1(jj) + cy(jjj)*p2(jjj); end loop; -- jjj discrete := discrete + cx(jj)*p1(jj); end loop; -- jj elsif word/=0 and xord=0 and yord/=0 and zord/=0 and tord=0 then for j in 1..nw loop p1(j) := 0.0; for jjj in 1..ny loop p2(jjj) := 0.0; for jjjj in 1..nz loop p2(jjj) := p2(jjj) + cz(jjjj)*U(wg(j),x,yg(jjj),zg(jjjj),t); end loop; -- jjjj p1(j) := p1(j) + cy(jjj)*p2(jjj); end loop; -- jjj discrete := discrete + cw(j)*p1(j); end loop; -- j elsif word/=0 and xord=0 and yord/=0 and zord=0 and Tord/=0 then for j in 1..nw loop p1(j) := 0.0; for jjj in 1..ny loop p2(jjj) := 0.0; for jjjjj in 1..nt loop p2(jjj) := p2(jjj) + ct(jjjjj)*U(wg(j),x,yg(jjj),z,tg(jjjjj)); end loop; -- jjjjj p1(j) := p1(j) + cy(jjj)*p2(jjj); end loop; -- jjj discrete := discrete + cw(j)*p1(j); end loop; -- j elsif word/=0 and xord=0 and yord=0 and zord/=0 and tord/=0 then for j in 1..nw loop p1(j) := 0.0; for jjjj in 1..nz loop p2(jjjj) := 0.0; for jjjjj in 1..nt loop p2(jjjj) := p2(jjjj) + ct(jjjjj)*U(wg(j),x,y,zg(jjjj),tg(jjjjj)); end loop; -- jjjjj p1(j) := p1(j) + cz(jjjj)*p2(jjjj); end loop; -- jjjj discrete := discrete + cw(j)*p1(j); end loop; -- j elsif word=0 and xord/=0 and yord/=0 and zord=0 and tord/=0 then for jj in 1..nx loop p1(jj) := 0.0; for jjj in 1..ny loop p2(jjj) := 0.0; for jjjjj in 1..nt loop p2(jjj) := p2(jjj) + ct(jjjjj)*U(w,xg(jj),yg(jjj),z,tg(jjjjj)); end loop; -- jjjjj p1(jj) := p1(jj) + cy(jjj)*p2(jjj); end loop; -- jjj discrete := discrete + cx(jj)*p1(jj); end loop; -- jj elsif word=0 and xord/=0 and yord=0 and zord/=0 and tord/=0 then for jj in 1..nx loop p1(jj) := 0.0; for jjjj in 1..nz loop p2(jjjj) := 0.0; for jjjjj in 1..nt loop p2(jjjj) := p2(jjjj) + ct(jjjjj)*U(w,xg(jj),y,zg(jjjj),tg(jjjjj)); end loop; -- jjjjj p1(jj) := p1(jj) + cz(jjjj)*p2(jjjj); end loop; -- jjjj discrete := Discrete + cx(jj)*p1(jj); end loop; -- jj elsif word=0 and xord=0 and yord/=0 and zord/=0 and tord/=0 then for jjj in 1..ny loop p1(jjj) := 0.0; for jjjj in 1..nz loop p2(jjjj) := 0.0; for jjjjj in 1..nt loop p2(jjjj) := p2(jjjj) + ct(jjjjj)*U(w,x,yg(jjj),zg(jjjj),tg(jjjjj)); end loop; -- jjjjj p1(jjj) := p1(jjj) + cz(jjjj)*p2(jjjj); end loop; -- jjjj discrete := discrete + cy(jjj)*p1(jjj); end loop; -- jjj -- five cases of four partials wxyz, wxyt, wxzt, wyzt, xyzt elsif word/=0 and xord/=0 and zord/=0 and zord/=0 and tord=0 then for j in 1..nw loop p1(j) := 0.0; for jj in 1..nx loop p2(jj) := 0.0; for jjj in 1..ny loop p3(jjj) := 0.0; for jjjj in 1..nz loop p3(jjj) := p3(jjj) +cz(jjjj)*U(wg(j),xg(jj),yg(jjj),zg(jjjj),t); end loop; -- jjjj p2(jj) := p2(jj) + cy(jjj)*p3(jjj); end loop; -- jjj p1(j) := p1(j) + cx(jj)*p2(jj); end loop; -- jj discrete := Discrete + cw(j)*p1(j); end loop; -- j elsif word/=0 and xord/=0 and Yord/=0 and zord=0 and tord/=0 then for j in 1..nw loop p1(j) := 0.0; for jj in 1..nx loop p2(jj) := 0.0; for jjj in 1..ny loop p3(jjj) := 0.0; for jjjjj in 1..nt loop p3(jjj) := p3(jjj) +ct(jjjjj)*U(wg(j),xg(jj),yg(jjj),z,tg(jjjjj)); end loop; -- jjjjj p2(jj) := p2(jj) + cy(jjj)*p3(jjj); end loop; -- jjj p1(j) := p1(j) + cx(jj)*p2(jj); end loop; -- jj discrete := Discrete + cw(j)*p1(j); end loop; -- j elsif word/=0 and xord/=0 and yord=0 and zord/=0 and tord/=0 then for j in 1..nw loop p1(j) := 0.0; for jj in 1..nx loop p2(jj) := 0.0; for jjjj in 1..nz loop p3(jjjj) := 0.0; for jjjjj in 1..nt loop p3(jjjj) := p3(jjjj) +ct(jjjjj)*U(wg(j),xg(jj),y,zg(jjjj),tg(jjjjj)); end loop; -- jjjjj p2(jj) := p2(jj) + cz(jjjj)*p3(jjjj); end loop; -- jjjj p1(j) := p1(j) + cx(jj)*p2(jj); end loop; -- jj discrete := Discrete + cw(j)*p1(j); end loop; -- j elsif word/=0 and xord=0 and yord/=0 and zord/=0 and tord/=0 then for j in 1..nw loop p1(j) := 0.0; for jjj in 1..ny loop p2(jjj) := 0.0; for jjjj in 1..nz loop p3(jjjj) := 0.0; for jjjjj in 1..nt loop p3(jjjj) := p3(jjjj) +ct(jjjjj)*U(wg(j),x,yg(jjj),zg(jjjj),tg(jjjjj)); end loop; -- jjjjj p2(jjj) := p2(jjj) + cz(jjjj)*p3(jjjj); end loop; -- jjjj p1(j) := p1(j) + cy(jjj)*p2(jjj); end loop; -- jjj discrete := Discrete + cw(j)*p1(j); end loop; -- j elsif word=0 and Xord/=0 and yord/=0 and zord/=0 and tord/=0 then for jj in 1..nx loop p1(jj) := 0.0; for jjj in 1..ny loop p2(jjj) := 0.0; for jjjj in 1..nz loop p3(jjjj) := 0.0; for jjjjj in 1..nt loop p3(jjjj) := p3(jjjj) +ct(jjjjj)*U(w,xg(jj),yg(jjj),zg(jjjj),tg(jjjjj)); end loop; -- jjjjj p2(jjj) := p2(jjj) + cz(jjjj)*p3(jjjj); end loop; -- jjjj p1(jj) := p1(jj) + cy(jjj)*p2(jjj); end loop; -- jjj discrete := Discrete + cx(jj)*p1(jj); end loop; -- jj end if; -- on huge list of elsif error := analytic-discrete; if abs(Error)>maxerror then Maxerror := abs(error); end if; if maxerror>0.001 and ii=0 and iii=0 and iiii=0 and iiiii=0 then put_line("analytic="&real'image(Analytic)& ", discrete="&real'image(Discrete)& ", error="&real'image(error)); end if; end loop; -- iiiii for t end loop; -- iiii for z end loop; -- iii for y end loop; -- ii for x end loop; -- i for w put_line(" "&name&" maxerror="& real'image(maxerror)); if maxerror>gmaxerror then gmaxerror := maxerror; end if; end Check; begin put_line("check_test_5d.adb running"); tclock := Clock; tstart := Seconds(tclock); -- a test case, all do not need to be same wmin := -1.0; wmax := 1.0; nw := 6; hw := (wmax-wmin)/real(nw-1); for i in 1..nw loop wg(i) := wmin + real(i-1)*hw; end loop; xmin := -1.1; xmax := 1.0; nx := 6; hx := (xmax-xmin)/real(nx-1); for ii in 1..nx loop xg(ii) := xmin + real(ii-1)*hx; end loop; ymin := -1.0; ymax := 1.1; ny := 6; hy := (ymax-ymin)/real(ny-1); for iii in 1..ny loop yg(iii) := ymin + real(iii-1)*hy; end loop; zmin := -1.2; zmax := 1.0; nz := 7; hz := (zmax-zmin)/real(nz-1); for iiii in 1..nz loop zg(iiii) := zmin + real(iiii-1)*hz; end loop; tmin := -1.0; tmax := 1.2; nt := 8; ht := (tmax-tmin)/real(nt-1); for iiiii in 1..nt loop tg(iiiii) := tmin + real(iiiii-1)*ht; end loop; gmaxerror := 0.0; -- check all 69 cases of 4 independent variables for total order 1 through 4 check("Uw ", Uw'access, 1, 0, 0, 0, 0); check("Ux ", Ux'access, 0, 1, 0, 0, 0); check("Uy ", Uy'access, 0, 0, 1, 0, 0); check("Uz ", Uz'access, 0, 0, 0, 1, 0); check("Ut ", Ut'access, 0, 0, 0, 0, 1); check("Uww ", Uww'access, 2, 0, 0, 0, 0); check("Uwx ", Uwx'access, 1, 1, 0, 0, 0); check("Uwy ", Uwy'access, 1, 0, 1, 0, 0); check("Uwz ", Uwz'access, 1, 0, 0, 1, 0); check("Uwt ", Uwt'access, 1, 0, 0, 0, 1); check("Uxx ", Uxx'access, 0, 2, 0, 0, 0); check("Uxy ", Uxy'access, 0, 1, 1, 0, 0); check("Uxz ", Uxz'access, 0, 1, 0, 1, 0); check("Uxt ", Uxt'access, 0, 1, 0, 0, 1); check("Uyy ", Uyy'access, 0, 0, 2, 0, 0); check("Uyz ", Uyz'access, 0, 0, 1, 1, 0); check("Uyt ", Uyt'access, 0, 0, 1, 0, 1); check("Uzz ", Uzz'access, 0, 0, 0, 2, 0); check("Uzt ", Uzt'access, 0, 0, 0, 1, 1); check("Utt ", Utt'access, 0, 0, 0, 0, 2); check("Uwww ", Uwww'access, 3, 0, 0, 0, 0); check("Uwwx ", Uwwx'access, 2, 1, 0, 0, 0); check("Uwwy ", Uwwy'access, 2, 0, 1, 0, 0); check("Uwwz ", Uwwz'access, 2, 0, 0, 1, 0); check("Uwwt ", Uwwt'access, 2, 0, 0, 0, 1); check("Uwxx ", Uwxx'access, 1, 2, 0, 0, 0); check("Uwxy ", Uwxy'access, 1, 1, 1, 0, 0); check("Uwxz ", Uwxz'access, 1, 1, 0, 1, 0); check("Uwxt ", Uwxt'access, 1, 1, 0, 0, 1); check("Uwyy ", Uwyy'access, 1, 0, 2, 0, 0); check("Uwyz ", Uwyz'access, 1, 0, 1, 1, 0); check("Uwyt ", Uwyt'access, 1, 0, 1, 0, 1); check("Uwzz ", Uwzz'access, 1, 0, 0, 2, 0); check("Uwzt ", Uwzt'access, 1, 0, 0, 1, 1); check("Uwtt ", Uwtt'access, 1, 0, 0, 0, 2); check("Uxxx ", Uxxx'access, 0, 3, 0, 0, 0); check("Uxxy ", Uxxy'access, 0, 2, 1, 0, 0); check("Uxxz ", Uxxz'access, 0, 2, 0, 1, 0); check("Uxxt ", Uxxt'access, 0, 2, 0, 0, 1); check("Uxyy ", Uxyy'access, 0, 1, 2, 0, 0); check("Uxyz ", Uxyz'access, 0, 1, 1, 1, 0); check("Uxyt ", Uxyt'access, 0, 1, 1, 0, 1); check("Uxzz ", Uxzz'access, 0, 1, 0, 2, 0); check("Uxzt ", Uxzt'access, 0, 1, 0, 1, 1); check("Uxtt ", Uxtt'access, 0, 1, 0, 0, 2); check("Uyyy ", Uyyy'access, 0, 0, 3, 0, 0); check("Uyyz ", Uyyz'access, 0, 0, 2, 1, 0); check("Uyyt ", Uyyt'access, 0, 0, 2, 0, 1); check("Uyzz ", Uyzz'access, 0, 0, 1, 2, 0); check("Uyzt ", Uyzt'access, 0, 0, 1, 1, 1); check("Uytt ", Uytt'access, 0, 0, 1, 0, 2); check("Uzzz ", Uzzz'access, 0, 0, 0, 3, 0); check("Uzzt ", Uzzt'access, 0, 0, 0, 2, 1); check("Uztt ", Uztt'access, 0, 0, 0, 1, 2); check("Uttt ", Uttt'access, 0, 0, 0, 0, 3); check("Uwwww", Uwwww'access, 4, 0, 0, 0, 0); check("Uwwwx", Uwwwx'access, 3, 1, 0, 0, 0); check("Uwwwy", Uwwwy'access, 3, 0, 1, 0, 0); check("Uwwwz", Uwwwz'access, 3, 0, 0, 1, 0); check("Uwwwt", Uwwwt'access, 3, 0, 0, 0, 1); check("Uwwxx", Uwwxx'access, 2, 2, 0, 0, 0); check("Uwwxy", Uwwxy'access, 2, 1, 1, 0, 0); check("Uwwxz", Uwwxz'access, 2, 1, 0, 1, 0); check("Uwwxt", Uwwxt'access, 2, 1, 0, 0, 1); check("Uwwyy", Uwwyy'access, 2, 0, 2, 0, 0); check("Uwwyz", Uwwyz'access, 2, 0, 1, 1, 0); check("Uwwyt", Uwwyt'access, 2, 0, 1, 0, 1); check("Uwwzz", Uwwzz'access, 2, 0, 0, 2, 0); check("Uwwzt", Uwwzt'access, 2, 0, 0, 1, 1); check("Uwwtt", Uwwtt'access, 2, 0, 0, 0, 2); check("Uwxxx", Uwxxx'access, 1, 3, 0, 0, 0); check("Uwxxy", Uwxxy'access, 1, 2, 1, 0, 0); check("Uwxxz", Uwxxz'access, 1, 2, 0, 1, 0); check("Uwxxt", Uwxxt'access, 1, 2, 0, 0, 1); check("Uwxyy", Uwxyy'access, 1, 1, 2, 0, 0); check("Uwxyz", Uwxyz'access, 1, 1, 1, 1, 0); check("Uwxyt", Uwxyt'access, 1, 1, 1, 0, 1); check("Uwxzz", Uwxzz'access, 1, 1, 0, 2, 0); check("Uwxzt", Uwxzt'access, 1, 1, 0, 1, 1); check("Uwxtt", Uwxtt'access, 1, 1, 0, 0, 2); check("Uwyyy", Uwyyy'access, 1, 0, 3, 0, 0); check("Uwyyz", Uwyyz'access, 1, 0, 2, 1, 0); check("Uwyyt", Uwyyt'access, 1, 0, 2, 0, 1); check("Uwyzz", Uwyzz'access, 1, 0, 1, 2, 0); check("Uwyzt", Uwyzt'access, 1, 0, 1, 1, 1); check("Uwytt", Uwytt'access, 1, 0, 1, 0, 2); check("Uwzzz", Uwzzz'access, 1, 0, 0, 3, 0); check("Uwyzt", Uwyzt'access, 1, 0, 1, 1, 1); check("Uwzzz", Uwzzz'access, 1, 0, 0, 3, 0); check("Uwzzt", Uwzzt'access, 1, 0, 0, 2, 1); check("Uwztt", Uwztt'access, 1, 0, 0, 1, 2); check("Uwttt", Uwttt'access, 1, 0, 0, 0, 3); check("Uxxxx", Uxxxx'access, 0, 4, 0, 0, 0); check("Uxxxy", Uxxxy'access, 0, 3, 1, 0, 0); check("Uxxxz", Uxxxz'access, 0, 3, 0, 1, 0); check("Uxxxt", Uxxxt'access, 0, 3, 0, 0, 1); check("Uxxyy", Uxxyy'access, 0, 2, 2, 0, 0); check("Uxxyz", Uxxyz'access, 0, 2, 1, 1, 0); check("Uxxyt", Uxxyt'access, 0, 2, 1, 0, 1); check("Uxxzz", Uxxzz'access, 0, 2, 0, 2, 0); check("Uxxzt", Uxxzt'access, 0, 2, 0, 1, 1); check("Uxxtt", Uxxtt'access, 0, 2, 0, 0, 2); check("Uxyyy", Uxyyy'access, 0, 1, 3, 0, 0); check("Uxyyz", Uxyyz'access, 0, 1, 2, 1, 0); check("Uxyyt", Uxyyt'access, 0, 1, 2, 0, 1); check("Uxyzz", Uxyzz'access, 0, 1, 1, 2, 0); check("Uxyzt", Uxyzt'access, 0, 1, 1, 1, 1); check("Uxytt", Uxytt'access, 0, 1, 1, 0, 2); check("Uxzzz", Uxzzz'access, 0, 1, 0, 3, 0); check("Uxzzt", Uxzzt'access, 0, 1, 0, 2, 1); check("Uxztt", Uxztt'access, 0, 1, 0, 1, 2); check("Uxttt", Uxttt'access, 0, 1, 0, 0, 3); check("Uyyyy", Uyyyy'access, 0, 0, 4, 0, 0); check("Uyyyz", Uyyyz'access, 0, 0, 3, 1, 0); check("Uyyyt", Uyyyt'access, 0, 0, 3, 0, 1); check("Uyyzz", Uyyzz'access, 0, 0, 2, 2, 0); check("Uyyzt", Uyyzt'access, 0, 0, 2, 1, 1); check("Uyytt", Uyytt'access, 0, 0, 2, 0, 2); check("Uyzzz", Uyzzz'access, 0, 0, 1, 3, 0); check("Uyzzt", Uyzzt'access, 0, 0, 1, 2, 1); check("Uyztt", Uyztt'access, 0, 0, 1, 1, 2); check("Uyttt", Uyttt'access, 0, 0, 1, 0, 3); check("Uzzzz", Uzzzz'access, 0, 0, 0, 4, 0); check("Uzzzt", Uzzzt'access, 0, 0, 0, 3, 1); check("Uzztt", Uzztt'access, 0, 0, 0, 2, 2); check("Uzttt", Uzttt'access, 0, 0, 0, 1, 3); check("Utttt", Utttt'access, 0, 0, 0, 0, 4); tclock := Clock; tnow := Seconds(tclock); Put_Line("ran "&Integer'Image(Ccount)&" checks in "& Duration'Image(tnow-tstart)&" seconds"); put_line("check_test_5d.adb finished, max maxerror="& real'image(gmaxerror)); end check_test_5d;