[BACK]Return to standard_laur_poly_convertors.adb CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / PHC / Ada / Math_Lib / Polynomials

Annotation of OpenXM_contrib/PHC/Ada/Math_Lib/Polynomials/standard_laur_poly_convertors.adb, Revision 1.1.1.1

1.1       maekawa     1: with Standard_Complex_Numbers;           use Standard_Complex_Numbers;
                      2: with Standard_Natural_Vectors;
                      3:
                      4: package body Standard_Laur_Poly_Convertors is
                      5:
                      6:   function Laurent_Polynomial_to_Polynomial
                      7:              ( p : Standard_Complex_Laur_Polys.Poly )
                      8:              return Standard_Complex_Polynomials.Poly is
                      9:
                     10:     res : Standard_Complex_Polynomials.Poly;
                     11:     tt : Standard_Complex_Laur_Polys.Term;
                     12:
                     13:   begin
                     14:     Laurent_Polynomial_to_Polynomial(p,tt,res);
                     15:     Standard_Complex_Laur_Polys.Clear(tt);
                     16:     return res;
                     17:   end Laurent_Polynomial_to_Polynomial;
                     18:
                     19:   procedure Laurent_Polynomial_to_Polynomial
                     20:              ( l : in Standard_Complex_Laur_Polys.Poly;
                     21:                t : out Standard_Complex_Laur_Polys.Term;
                     22:                p : out Standard_Complex_Polynomials.Poly ) is
                     23:
                     24:     min : Standard_Complex_Laur_Polys.Degrees
                     25:         := Standard_Complex_Laur_Polys.Minimal_Degrees(l);
                     26:     tt : Standard_Complex_Laur_Polys.Term;
                     27:
                     28:   begin
                     29:     for i in min'range loop
                     30:       min(i) := -min(i);
                     31:     end loop;
                     32:     tt.cf := Create(1.0);
                     33:     tt.dg := min;
                     34:     p := Laurent_Polynomial_to_Polynomial(l,tt); t := tt;
                     35:   end Laurent_Polynomial_to_Polynomial;
                     36:
                     37:   function Laurent_Polynomial_to_Polynomial
                     38:             ( l : Standard_Complex_Laur_Polys.Poly;
                     39:               t : Standard_Complex_Laur_Polys.Term )
                     40:             return Standard_Complex_Polynomials.Poly is
                     41:
                     42:     res : Standard_Complex_Polynomials.Poly;
                     43:     use Standard_Complex_Laur_Polys;
                     44:
                     45:     procedure Laurent_Term_to_Term ( tt : in Term; cont : out boolean ) is
                     46:
                     47:       rt : Standard_Complex_Polynomials.Term;
                     48:
                     49:     begin
                     50:       rt.cf := tt.cf;
                     51:       rt.dg := new Standard_Natural_Vectors.Vector(tt.dg'range);
                     52:       for i in tt.dg'range loop
                     53:         rt.dg(i) := tt.dg(i) + t.dg(i);
                     54:       end loop;
                     55:       Standard_Complex_Polynomials.Add(res,rt);
                     56:       Standard_Complex_Polynomials.Clear(rt);
                     57:       cont := true;
                     58:     end Laurent_Term_to_Term;
                     59:     procedure LP2P is new Visiting_Iterator(Laurent_Term_to_Term);
                     60:
                     61:   begin
                     62:     LP2P(l);
                     63:     return res;
                     64:   end Laurent_Polynomial_to_Polynomial;
                     65:
                     66:   function Laurent_to_Polynomial_System ( p : Laur_Sys ) return Poly_Sys is
                     67:
                     68:     res : Poly_Sys(p'range);
                     69:
                     70:   begin
                     71:     for i in p'range loop
                     72:       res(i) := Laurent_Polynomial_to_Polynomial(p(i));
                     73:     end loop;
                     74:     return res;
                     75:   end Laurent_to_Polynomial_System;
                     76:
                     77: end Standard_Laur_Poly_Convertors;

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>