Annotation of OpenXM_contrib/PHC/Ada/Root_Counts/Implift/ts_durker.adb, Revision 1.1
1.1 ! maekawa 1: with text_io,integer_io; use text_io,integer_io;
! 2: with Standard_Floating_Numbers; use Standard_Floating_Numbers;
! 3: with Standard_Floating_Numbers_io; use Standard_Floating_Numbers_io;
! 4: with Standard_Complex_Numbers; use Standard_Complex_Numbers;
! 5: with Standard_Complex_Numbers_io; use Standard_Complex_Numbers_io;
! 6: with Standard_Complex_Vectors; use Standard_Complex_Vectors;
! 7: with Standard_Random_Vectors; use Standard_Random_Vectors;
! 8: with Durand_Kerner;
! 9:
! 10: procedure ts_durker is
! 11:
! 12: -- DESCRIPTION :
! 13: -- Test on the solver for polynomial equations in one variable.
! 14:
! 15: procedure Read ( cv : in out Vector ) is
! 16: begin
! 17: for i in cv'range loop
! 18: put(' '); put(i,1); put(" : ");
! 19: get(cv(i));
! 20: end loop;
! 21: end Read;
! 22:
! 23: procedure Write ( step : in natural; z,res : in Vector ) is
! 24: begin
! 25: put("Output after step "); put(step,1); put_line(" :");
! 26: put_line
! 27: ("------------------------------------------------------------------------");
! 28: put_line
! 29: ("| APPROXIMATED ROOTS | RESIDUALS |");
! 30: put_line
! 31: ("------------------------------------------------------------------------");
! 32: for i in z'range loop
! 33: put("| "); put(z(i)); put(" | "); put(AbsVal(res(i))); put(" |");
! 34: new_line;
! 35: end loop;
! 36: put_line
! 37: ("------------------------------------------------------------------------");
! 38: end Write;
! 39:
! 40: procedure dk is new Durand_Kerner(Write);
! 41:
! 42: procedure Main is
! 43:
! 44: n,nb : natural;
! 45:
! 46: begin
! 47: put("Give the degree of p(x) : "); get(n);
! 48: declare
! 49: p : Vector(0..n);
! 50: z,res : Vector(1..n);
! 51: max : natural;
! 52: eps : double_float;
! 53: begin
! 54: put_line("p(x) = a_0 + a_1*x + a_2*x^2 + ... + a_n*x^n");
! 55: put("Give "); put(n+1,1); put_line(" complex coefficients of p(x) :");
! 56: Read(p);
! 57: z := Random_Vector(n); -- first approximation is random vector
! 58: res := z;
! 59: put("Give the maximum number of steps : "); get(max);
! 60: put("Give the required accuracy : "); get(eps);
! 61: dk(p,z,res,max,eps,nb);
! 62: end;
! 63: end Main;
! 64:
! 65: begin
! 66: Main;
! 67: end ts_durker;
! 68:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>