[BACK]Return to power_lists.adb CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / PHC / Ada / Root_Counts / Implift

Annotation of OpenXM_contrib/PHC/Ada/Root_Counts/Implift/power_lists.adb, Revision 1.1.1.1

1.1       maekawa     1: with Standard_Integer_Vectors;           use Standard_Integer_Vectors;
                      2:
                      3: package body Power_Lists is
                      4:
                      5:   function Create ( p : Standard_Complex_Polynomials.Poly ) return List is
                      6:
                      7:     res,res_last : List;
                      8:
                      9:     procedure Visit_Term ( t : in Standard_Complex_Polynomials.Term;
                     10:                            cont : out boolean ) is
                     11:
                     12:       h : Link_to_Vector;
                     13:
                     14:     begin
                     15:       h := new Standard_Integer_Vectors.Vector(t.dg'range);
                     16:       for j in h'range loop
                     17:         h(j) := t.dg(j);
                     18:       end loop;
                     19:       Append(res,res_last,h);
                     20:       cont := true;
                     21:     end Visit_Term;
                     22:     procedure Visit_Terms is
                     23:       new Standard_Complex_Polynomials.Visiting_Iterator(Visit_Term);
                     24:
                     25:   begin
                     26:     Visit_Terms(p);
                     27:     return res;
                     28:   end Create;
                     29:
                     30:   function Create ( p : Standard_Complex_Laur_Polys.Poly ) return List is
                     31:
                     32:     res,res_last : List;
                     33:
                     34:     procedure Visit_Term ( t : in Standard_Complex_Laur_Polys.Term;
                     35:                            cont : out boolean ) is
                     36:
                     37:       h : Link_to_Vector;
                     38:
                     39:     begin
                     40:       h := new Standard_Integer_Vectors.Vector(t.dg'range);
                     41:       for j in h'range loop
                     42:         h(j) := t.dg(j);
                     43:       end loop;
                     44:       Append(res,res_last,h);
                     45:       cont := true;
                     46:     end Visit_Term;
                     47:     procedure Visit_Terms is
                     48:       new Standard_Complex_Laur_Polys.Visiting_Iterator(Visit_Term);
                     49:
                     50:   begin
                     51:     Visit_Terms(p);
                     52:     return res;
                     53:   end Create;
                     54:
                     55:   function Select_Terms ( p : Standard_Complex_Polynomials.Poly; l : List )
                     56:                         return Standard_Complex_Polynomials.Poly is
                     57:
                     58:     res : Standard_Complex_Polynomials.Poly
                     59:         := Standard_Complex_Polynomials.Null_Poly;
                     60:
                     61:     procedure Select_Term ( t : in Standard_Complex_Polynomials.Term;
                     62:                             cont : out boolean ) is
                     63:
                     64:       v : Standard_Integer_Vectors.Vector(t.dg'range);
                     65:
                     66:     begin
                     67:       for i in v'range loop
                     68:         v(i) := t.dg(i);
                     69:       end loop;
                     70:       if Is_In(l,v)
                     71:        then Add(res,t);
                     72:       end if;
                     73:       cont := true;
                     74:     end Select_Term;
                     75:     procedure Select_Poly is
                     76:       new Standard_Complex_Polynomials.Visiting_Iterator ( Select_Term );
                     77:
                     78:   begin
                     79:     Select_Poly(p);
                     80:     return res;
                     81:   end Select_Terms;
                     82:
                     83:   function Select_Terms ( p : Standard_Complex_Laur_Polys.Poly; l : List )
                     84:                         return Standard_Complex_Laur_Polys.Poly is
                     85:
                     86:     res : Standard_Complex_Laur_Polys.Poly
                     87:         := Standard_Complex_Laur_Polys.Null_Poly;
                     88:
                     89:     procedure Select_Term ( t : in Standard_Complex_Laur_Polys.Term;
                     90:                             cont : out boolean ) is
                     91:
                     92:       v : Standard_Integer_Vectors.Vector(t.dg'range);
                     93:
                     94:     begin
                     95:       for i in v'range loop
                     96:         v(i) := t.dg(i);
                     97:       end loop;
                     98:       if Is_In(l,v)
                     99:        then Add(res,t);
                    100:       end if;
                    101:       cont := true;
                    102:     end Select_Term;
                    103:     procedure Select_Poly is
                    104:       new Standard_Complex_Laur_Polys.Visiting_Iterator ( Select_Term );
                    105:
                    106:   begin
                    107:     Select_Poly(p);
                    108:     return res;
                    109:   end Select_Terms;
                    110:
                    111:   function Create ( p : Poly_Sys ) return Array_of_Lists is
                    112:
                    113:     res : Array_of_Lists(p'range);
                    114:
                    115:   begin
                    116:     for i in p'range loop
                    117:       res(i) := Create(p(i));
                    118:     end loop;
                    119:     return res;
                    120:   end Create;
                    121:
                    122:   function Create ( p : Laur_Sys ) return Array_of_Lists is
                    123:
                    124:     res : Array_of_Lists(p'range);
                    125:
                    126:   begin
                    127:     for i in p'range loop
                    128:       res(i) := Create(p(i));
                    129:     end loop;
                    130:     return res;
                    131:   end Create;
                    132:
                    133:   function Select_Terms ( p : Poly_Sys; al : Array_of_Lists )
                    134:                         return Poly_Sys is
                    135:
                    136:     res : Poly_Sys(p'range);
                    137:
                    138:   begin
                    139:     for i in p'range loop
                    140:       res(i) := Select_Terms(p(i),al(i));
                    141:     end loop;
                    142:     return res;
                    143:   end Select_Terms;
                    144:
                    145:   function Select_Terms ( p : Laur_Sys; al : Array_of_Lists )
                    146:                         return Laur_Sys is
                    147:
                    148:     res : Laur_Sys(p'range);
                    149:
                    150:   begin
                    151:     for i in p'range loop
                    152:       res(i) := Select_Terms(p(i),al(i));
                    153:     end loop;
                    154:     return res;
                    155:   end Select_Terms;
                    156:
                    157: end Power_Lists;

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