Annotation of OpenXM_contrib/PHC/Ada/Root_Counts/Product/total_degree_start_systems.adb, Revision 1.1
1.1 ! maekawa 1: with text_io; use text_io;
! 2: with Standard_Random_Numbers; use Standard_Random_Numbers;
! 3: with Standard_Complex_Numbers; use Standard_Complex_Numbers;
! 4: with Standard_Complex_Numbers_Polar; use Standard_Complex_Numbers_Polar;
! 5: with Standard_Natural_Vectors;
! 6: with Standard_Complex_Polynomials; use Standard_Complex_Polynomials;
! 7:
! 8: package body Total_Degree_Start_Systems is
! 9:
! 10: procedure Total_Degree_Info is
! 11:
! 12: -- DESCRIPTION :
! 13: -- Displays information about the total degree on screen.
! 14:
! 15: i : array(1..5) of string(1..65);
! 16:
! 17: begin
! 18: i(1):=" The total degree is the product of the degrees of the";
! 19: i(2):="polynomials in the system. The i-th equation of the start system";
! 20: i(3):="is a univariate polynomial in the i-th unknown of the same degree";
! 21: i(4):="as the i-th polynomial in the system that has to be solved. The";
! 22: i(5):="total degree equals the number of solutions of the start system. ";
! 23: for k in i'range loop
! 24: put_line(i(k));
! 25: end loop;
! 26: end Total_Degree_Info;
! 27:
! 28: procedure Start_Solutions
! 29: ( level : in natural;
! 30: q : in Poly_Sys; c : in Vector; s : in out Solution;
! 31: qsols,qsols_last : in out Solution_List ) is
! 32:
! 33: -- DESCRIPTION :
! 34: -- All solutions to the polynomial system q are computed.
! 35: -- The parameter level indicates the current component in the recursive
! 36: -- application of the rule of de Moivre.
! 37:
! 38: d : natural;
! 39:
! 40: begin
! 41: if level <= s.n
! 42: then d := Degree(q(level));
! 43: for j in 1..d loop
! 44: s.v(level) := Root(c(level),d,j);
! 45: Start_Solutions(level+1,q,c,s,qsols,qsols_last);
! 46: end loop;
! 47: else s.t := Create(0.0);
! 48: s.m := 1;
! 49: s.err := 0.0; s.rco := 1.0; s.res := 0.0;
! 50: Append(qsols,qsols_last,s);
! 51: end if;
! 52: end Start_Solutions;
! 53:
! 54: procedure Start_System
! 55: ( p : in Poly_Sys; q : in out Poly_Sys; c : in Vector;
! 56: qsols : in out Solution_List ) is
! 57:
! 58: t : Term;
! 59: n : natural := p'length;
! 60: s : Solution(n);
! 61: last : Solution_List := qsols;
! 62:
! 63: begin
! 64: for i in p'range loop
! 65: t.dg := new Standard_Natural_Vectors.Vector'(1..n => 0);
! 66: t.dg(i) := Degree(p(i));
! 67: t.cf := Create(1.0);
! 68: q(i) := Create(t);
! 69: Clear(t);
! 70: t.dg := new Standard_Natural_Vectors.Vector'(1..n => 0);
! 71: t.cf := -c(i);
! 72: Add(q(i),t);
! 73: Clear(t);
! 74: end loop;
! 75: Start_Solutions(1,q,c,s,qsols,last);
! 76: end Start_System;
! 77:
! 78: procedure Start_System
! 79: ( p : in Poly_Sys; q : in out Poly_Sys;
! 80: qsols : in out Solution_List ) is
! 81:
! 82: n : natural := p'length;
! 83: c : Vector(1..n);
! 84:
! 85: begin
! 86: for i in c'range loop
! 87: c(i) := Random1;
! 88: end loop;
! 89: Start_System(p,q,c,qsols);
! 90: end Start_System;
! 91:
! 92: end Total_Degree_Start_Systems;
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>