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

Annotation of OpenXM_contrib/PHC/Ada/Math_Lib/Polynomials/exponent_vectors.adb, Revision 1.1

1.1     ! maekawa     1: package body Exponent_Vectors is
        !             2:
        !             3: -- CREATORS :
        !             4:
        !             5:   function Create ( p : Standard_Complex_Laur_Polys.Poly ) return VecVec is
        !             6:
        !             7:     use Standard_Complex_Laur_Polys;
        !             8:     res : VecVec(1..Number_of_Terms(p));
        !             9:     ind : natural := 0;
        !            10:
        !            11:     procedure Add_Exponent ( t : in Term; continue : out boolean ) is
        !            12:     begin
        !            13:       ind := ind + 1;
        !            14:       res(ind) := new Vector(t.dg'range);
        !            15:       for i in t.dg'range loop
        !            16:         res(ind)(i) := t.dg(i);
        !            17:       end loop;
        !            18:       continue := true;
        !            19:     end Add_Exponent;
        !            20:     procedure Add_Exponents is new Visiting_Iterator(Add_Exponent);
        !            21:
        !            22:   begin
        !            23:     Add_Exponents(p);
        !            24:     return res;
        !            25:   end Create;
        !            26:
        !            27:   function Create ( p : Standard_Complex_Polynomials.Poly ) return VecVec is
        !            28:
        !            29:     use Standard_Complex_Polynomials;
        !            30:     res : VecVec(1..Number_of_Terms(p));
        !            31:     ind : natural := 0;
        !            32:
        !            33:     procedure Add_Exponent ( t : in Term; continue : out boolean ) is
        !            34:     begin
        !            35:       ind := ind + 1;
        !            36:       res(ind) := new Vector(t.dg'range);
        !            37:       for i in t.dg'range loop
        !            38:         res(ind)(i) := t.dg(i);
        !            39:       end loop;
        !            40:       continue := true;
        !            41:     end Add_Exponent;
        !            42:     procedure Add_Exponents is new Visiting_Iterator(Add_Exponent);
        !            43:
        !            44:   begin
        !            45:     Add_Exponents(p);
        !            46:     return res;
        !            47:   end Create;
        !            48:
        !            49:   function Create ( p : Poly_Sys ) return Exponent_Vectors_Array is
        !            50:
        !            51:     res : Exponent_Vectors_Array(p'range);
        !            52:
        !            53:   begin
        !            54:     for i in p'range loop
        !            55:       declare
        !            56:         cpi : constant VecVec := Create(p(i));
        !            57:       begin
        !            58:         res(i) := new VecVec(cpi'range);
        !            59:         for j in cpi'range loop
        !            60:           res(i)(j) := cpi(j);
        !            61:         end loop;
        !            62:       end;  -- a detour for GNAT 3.07
        !            63:      -- res(i) := new VecVec'(Create(p(i)));
        !            64:     end loop;
        !            65:     return res;
        !            66:   end Create;
        !            67:
        !            68:   function Create ( p : Laur_Sys ) return Exponent_Vectors_Array is
        !            69:
        !            70:     res : Exponent_Vectors_Array(p'range);
        !            71:
        !            72:   begin
        !            73:     for i in p'range loop
        !            74:       declare
        !            75:         cpi : constant VecVec := Create(p(i));
        !            76:       begin
        !            77:         res(i) := new VecVec(cpi'range);
        !            78:         for j in cpi'range loop
        !            79:           res(i)(j) := cpi(j);
        !            80:         end loop;
        !            81:       end;  -- a detour for GNAT 3.07
        !            82:      -- res(i) := new VecVec'(Create(p(i)));
        !            83:     end loop;
        !            84:     return res;
        !            85:   end Create;
        !            86:
        !            87: -- SELECTOR :
        !            88:
        !            89:   function Position ( ev : VecVec; v : Vector ) return integer is
        !            90:   begin
        !            91:     for i in ev'range loop
        !            92:       if Equal(ev(i).all,v)
        !            93:        then return i;
        !            94:       end if;
        !            95:     end loop;
        !            96:     return ev'last+1;
        !            97:   end Position;
        !            98:
        !            99: -- EVALUATORS :
        !           100:
        !           101:   function Eval ( e : Vector; c : Complex_Number;
        !           102:                   x : Standard_Complex_Vectors.Vector )
        !           103:                 return Complex_Number is
        !           104:
        !           105:     res : Complex_Number := c;
        !           106:
        !           107:   begin
        !           108:     for i in e'range loop
        !           109:       for j in 1..e(i) loop
        !           110:         res := res*x(i);
        !           111:       end loop;
        !           112:       for j in 1..-e(i) loop
        !           113:         res := res/x(i);
        !           114:       end loop;
        !           115:     end loop;
        !           116:     return res;
        !           117:   end Eval;
        !           118:
        !           119:   function Eval ( ev : VecVec; c,x : Standard_Complex_Vectors.Vector )
        !           120:                 return Complex_Number is
        !           121:
        !           122:     res : Complex_Number := Eval(ev(ev'first).all,c(c'first),x);
        !           123:
        !           124:   begin
        !           125:     for i in c'first+1..c'last loop
        !           126:       res := res + Eval(ev(i).all,c(i),x);
        !           127:     end loop;
        !           128:     return res;
        !           129:   end Eval;
        !           130:
        !           131:   function Eval ( ev : Exponent_Vectors_Array;
        !           132:                   c : Standard_Complex_VecVecs.VecVec;
        !           133:                   x : Standard_Complex_Vectors.Vector )
        !           134:                 return Standard_Complex_Vectors.Vector is
        !           135:
        !           136:     res : Standard_Complex_Vectors.Vector(x'range);
        !           137:
        !           138:   begin
        !           139:     for i in ev'range loop
        !           140:       res(i) := Eval(ev(i).all,c(i).all,x);
        !           141:     end loop;
        !           142:     return res;
        !           143:   end Eval;
        !           144:
        !           145: -- DESTRUCTORS :
        !           146:
        !           147:   procedure Clear ( v : in out Exponent_Vectors_Array ) is
        !           148:   begin
        !           149:     for i in v'range loop
        !           150:       Deep_Clear(v(i));
        !           151:     end loop;
        !           152:   end Clear;
        !           153:
        !           154: end Exponent_Vectors;

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