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

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

1.1       maekawa     1: with unchecked_deallocation;
                      2:
                      3: package body Generic_Polynomial_Systems is
                      4:
                      5: -- COPYING :
                      6:
                      7:   procedure Copy ( p : in Poly_Sys; q : in out Poly_Sys ) is
                      8:   begin
                      9:     for i in p'range loop
                     10:       Copy(p(i),q(i));
                     11:     end loop;
                     12:   end Copy;
                     13:
                     14: -- ARITHMETIC OPERATIONS :
                     15:
                     16:   function "+" ( p,q : Poly_Sys ) return Poly_Sys is
                     17:
                     18:     res : Poly_Sys(p'range);
                     19:
                     20:   begin
                     21:     for i in p'range loop
                     22:       res(i) := p(i)+q(i);
                     23:     end loop;
                     24:     return res;
                     25:   end "+";
                     26:
                     27:   function "-" ( p,q : Poly_Sys ) return Poly_Sys is
                     28:
                     29:     res : Poly_Sys(p'range);
                     30:
                     31:   begin
                     32:     for i in p'range loop
                     33:       res(i) := p(i)-q(i);
                     34:     end loop;
                     35:     return res;
                     36:   end "-";
                     37:
                     38:   function "-" ( p : Poly_Sys ) return Poly_Sys is
                     39:
                     40:     res : Poly_Sys(p'range);
                     41:
                     42:   begin
                     43:     for i in p'range loop
                     44:       res(i) := -p(i);
                     45:     end loop;
                     46:     return res;
                     47:   end "-";
                     48:
                     49:   function "*" ( a : number; p : Poly_Sys ) return Poly_Sys is
                     50:
                     51:     res : Poly_Sys(p'range);
                     52:
                     53:   begin
                     54:     for k in p'range loop
                     55:       res(k) := a*p(k);
                     56:     end loop;
                     57:     return res;
                     58:   end "*";
                     59:
                     60:   function "*" ( p : Poly_Sys; a : number ) return Poly_Sys is
                     61:   begin
                     62:     return a*p;
                     63:   end "*";
                     64:
                     65:   procedure Add ( p : in out Poly_Sys; q : in Poly_Sys ) is
                     66:   begin
                     67:     for i in p'range loop
                     68:       Add(p(i),q(i));
                     69:     end loop;
                     70:   end Add;
                     71:
                     72:   procedure Sub ( p : in out Poly_Sys; q : in Poly_Sys ) is
                     73:   begin
                     74:     for i in p'range loop
                     75:       Sub(p(i),q(i));
                     76:     end loop;
                     77:   end Sub;
                     78:
                     79:   procedure Min ( p : in out Poly_Sys ) is
                     80:   begin
                     81:     for i in p'range loop
                     82:       Min(p(i));
                     83:     end loop;
                     84:   end Min;
                     85:
                     86:   procedure Mul ( p : in out Poly_Sys; a : in number ) is
                     87:   begin
                     88:     for k in p'range loop
                     89:       Mul(p(k),a);
                     90:     end loop;
                     91:   end Mul;
                     92:
                     93:   function Diff ( p : Poly_Sys; i : natural ) return Poly_Sys is
                     94:
                     95:     res : Poly_Sys(p'range);
                     96:
                     97:   begin
                     98:     for j in p'range loop
                     99:       res(j) := Diff(p(j),i);
                    100:     end loop;
                    101:     return res;
                    102:   end Diff;
                    103:
                    104:   procedure Diff ( p : in out Poly_Sys; i : in natural ) is
                    105:   begin
                    106:     for j in p'range loop
                    107:       Diff(p(j),i);
                    108:     end loop;
                    109:   end Diff;
                    110:
                    111: -- DESTRUCTORS :
                    112:
                    113:   procedure Clear ( p : in out Poly_Sys ) is
                    114:   begin
                    115:     for i in p'range loop
                    116:       Clear(p(i));
                    117:     end loop;
                    118:   end Clear;
                    119:
                    120:   procedure Clear ( p : in out Link_to_Poly_Sys ) is
                    121:
                    122:     procedure free is new unchecked_deallocation(Poly_Sys,Link_to_Poly_Sys);
                    123:
                    124:   begin
                    125:     if p /= null
                    126:      then Clear(p.all);
                    127:     end if;
                    128:     free(p);
                    129:   end Clear;
                    130:
                    131: end Generic_Polynomial_Systems;

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