[BACK]Return to pieri_continuation.adb CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / PHC / Ada / Schubert

Annotation of OpenXM_contrib/PHC/Ada/Schubert/pieri_continuation.adb, Revision 1.1.1.1

1.1       maekawa     1: with Standard_Floating_Numbers;          use Standard_Floating_Numbers;
                      2: with Standard_Floating_Numbers_io;       use Standard_Floating_Numbers_io;
                      3: with Standard_Complex_Numbers;           use Standard_Complex_Numbers;
                      4: with Standard_Random_Numbers;            use Standard_Random_Numbers;
                      5: with Standard_Natural_Vectors;
                      6: with Standard_Natural_Vectors_io;        use Standard_Natural_Vectors_io;
                      7: with Standard_Complex_Vectors;
                      8: with Standard_Complex_Vectors_io;        use Standard_Complex_Vectors_io;
                      9: with Standard_Complex_Norms_Equals;      use Standard_Complex_Norms_Equals;
                     10: with Standard_Complex_VecVecs;           use Standard_Complex_VecVecs;
                     11: with Standard_Natural_Matrices_io;       use Standard_Natural_Matrices_io;
                     12: with Standard_Complex_Matrices_io;       use Standard_Complex_Matrices_io;
                     13: with Standard_Complex_Polynomials;       use Standard_Complex_Polynomials;
                     14: with Standard_Complex_Poly_Systems_io;   use Standard_Complex_Poly_Systems_io;
                     15: with Standard_Complex_Poly_SysFun;       use Standard_Complex_Poly_SysFun;
                     16: with Standard_Complex_Solutions;         use Standard_Complex_Solutions;
                     17: with Homotopy;
                     18: with Increment_and_Fix_Continuation;     use Increment_and_Fix_Continuation;
                     19: with Standard_Root_Refiners;             use Standard_Root_Refiners;
                     20: with Determinantal_Systems;              use Determinantal_Systems;
                     21: with Plane_Representations;              use Plane_Representations;
                     22: with Curves_into_Grassmannian;           use Curves_into_Grassmannian;
                     23: with Curves_into_Grassmannian_io;        use Curves_into_Grassmannian_io;
                     24:
                     25: package body Pieri_Continuation is
                     26:
                     27: -- AUXILIARY FORMAT CONVERTORS :
                     28:
                     29:   function Create ( v : Standard_Complex_Vectors.Vector; conpar : natural )
                     30:                   return Solution is
                     31:
                     32:   -- DESCRIPTION :
                     33:   --   Returns a solution that contains a solution with vector v in it.
                     34:   --   The v(conpar) is the continuation parameter.
                     35:
                     36:     sol : Solution(v'last-1);
                     37:
                     38:   begin
                     39:     sol.t := v(conpar);
                     40:     sol.m := 1;
                     41:     sol.v(v'first..conpar-1) := v(v'first..conpar-1);
                     42:     sol.v(conpar..sol.v'last) := v(conpar+1..v'last);
                     43:     sol.err := 0.0;
                     44:     sol.rco := 0.0;
                     45:     sol.res := 0.0;
                     46:     return sol;
                     47:   end Create;
                     48:
                     49:   function Create ( v : Standard_Complex_Vectors.Vector )
                     50:                   return Solution_List is
                     51:
                     52:   -- DESCRIPTION :
                     53:   --   Returns a solution list that contains a solution with vector v in it.
                     54:
                     55:   -- NOTE : only needed in the original Pieri homotopy algorithm.
                     56:
                     57:     res : Solution_List;
                     58:
                     59:   begin
                     60:     Add(res,Create(v,v'last));
                     61:     return res;
                     62:   end Create;
                     63:
                     64:   function Create ( v : Standard_Complex_VecVecs.VecVec; conpar : natural )
                     65:                   return Solution_List is
                     66:
                     67:   -- DESCRIPTION :
                     68:   --   Returns a solution list that contains the vectors in v.
                     69:
                     70:   -- REQUIRED : v is not empty.
                     71:   --   The value for the continuation parameter is in v(conpar).
                     72:
                     73:     res,res_last : Solution_List;
                     74:
                     75:   begin
                     76:     for i in v'range loop
                     77:       Append(res,res_last,Create(v(i).all,conpar));
                     78:     end loop;
                     79:     return res;
                     80:   end Create;
                     81:
                     82:   function Convert ( sols : Solution_List )
                     83:                    return Standard_Complex_Vectors.Vector is
                     84:
                     85:   -- DESCRIPTION :
                     86:   --   Converts the solutions in sols to the vector representation.
                     87:
                     88:   -- NOTE : only needed in the original Pieri homotopy algorithm.
                     89:
                     90:     ls : Link_to_Solution := Head_Of(sols);
                     91:     res : Standard_Complex_Vectors.Vector(1..ls.n+1);
                     92:
                     93:   begin
                     94:     res(ls.v'range) := ls.v;
                     95:     res(res'last) := ls.t;
                     96:     return res;
                     97:   end Convert;
                     98:
                     99:   function Convert ( sol : Solution; conpar : natural )
                    100:                    return Standard_Complex_Vectors.Vector is
                    101:
                    102:   -- DESCRIPTION :
                    103:   --   Converts the solution to the vector representation, where the
                    104:   --   continuation parameter is put into the entry indexed by conpar.
                    105:
                    106:     res : Standard_Complex_Vectors.Vector(1..sol.n+1);
                    107:
                    108:   begin
                    109:     res(sol.v'first..conpar-1) := sol.v(sol.v'first..conpar-1);
                    110:     res(conpar) := sol.t;
                    111:     res(conpar+1..sol.n+1) := sol.v(conpar..sol.v'last);
                    112:     return res;
                    113:   end Convert;
                    114:
                    115:   function Convert ( sols : Solution_List; conpar : natural )
                    116:                    return Standard_Complex_VecVecs.VecVec is
                    117:
                    118:   -- DESCRIPTION :
                    119:   --   Converts the solutions in sols to the vector representation.
                    120:
                    121:     res : Standard_Complex_VecVecs.VecVec(1..Length_Of(sols));
                    122:     tmp : Solution_List := sols;
                    123:
                    124:   begin
                    125:     for i in res'range loop
                    126:       declare
                    127:         ls : Link_to_Solution := Head_Of(tmp);
                    128:         v : Standard_Complex_Vectors.Vector(ls.v'first..ls.v'last+1);
                    129:       begin
                    130:         v := Convert(ls.all,conpar);
                    131:         res(i) := new Standard_Complex_Vectors.Vector'(v);
                    132:       end;
                    133:       tmp := Tail_Of(tmp);
                    134:     end loop;
                    135:     return res;
                    136:   end Convert;
                    137:
                    138:   function Square ( n : natural; p : Poly_Sys ) return Poly_Sys is
                    139:
                    140:   -- DESCRIPTION :
                    141:   --   Returns a n-by-n system, by adding random linear combinations of
                    142:   --   the polynomials p(i), i > n, to the first n polynomials.
                    143:
                    144:     res : Poly_Sys(1..n);
                    145:     acc : Poly;
                    146:
                    147:   begin
                    148:     for i in res'range loop
                    149:       Copy(p(i),res(i));
                    150:       for j in n+1..p'last loop
                    151:         acc := Random1*p(j);
                    152:         Add(res(i),acc);
                    153:         Clear(acc);
                    154:       end loop;
                    155:     end loop;
                    156:     return res;
                    157:   end Square;
                    158:
                    159:   procedure Refine_Roots
                    160:                 ( file : in file_type; p : in Poly_Sys;
                    161:                   sols : in out Solution_List; report : in boolean ) is
                    162:
                    163:     epsxa : constant double_float := 10.0**(-8);
                    164:     epsfa : constant double_float := 10.0**(-8);
                    165:     tolsing : constant double_float := 10.0**(-8);
                    166:     max : constant natural := 3;
                    167:     numit : natural := 0;
                    168:
                    169:   begin
                    170:     if report
                    171:      then
                    172:        Reporting_Root_Refiner(file,p,sols,epsxa,epsfa,tolsing,numit,max,false);
                    173:      else
                    174:        Silent_Root_Refiner(p,sols,epsxa,epsfa,tolsing,numit,max);
                    175:     end if;
                    176:   end Refine_Roots;
                    177:
                    178:   procedure Determinantal_Polynomial_Continuation
                    179:                 ( file : in file_type; lochom : in Poly_Sys;  -- out added
                    180:                   locsol : in out Standard_Complex_Vectors.Vector;
                    181:                   report,outlog : in boolean ) is
                    182:
                    183:   -- DESCRIPTION :
                    184:   --   Given a homotopy and solution with as last variable the continuation
                    185:   --   parameter the polynomial continuation will launched.
                    186:   --   This homotopy uses the determinantal expansions defined in the paper.
                    187:
                    188:   -- NOTE :
                    189:   --   This routine is only used in the original Pieri homotopy algorithm.
                    190:
                    191:     sols : Solution_List := Create(locsol);
                    192:     thesys,squsys : Poly_Sys(locsol'first..locsol'last-1);
                    193:     square_case : boolean;
                    194:    -- ran : Complex_Number;
                    195:
                    196:   begin
                    197:    -- for i in lochom'range loop           -- added to deal with real input
                    198:    --   ran := Random1;
                    199:    --   Mul(lochom(i),ran);
                    200:    -- end loop;
                    201:     if lochom'length + 1 = locsol'length
                    202:      then square_case := true;
                    203:           Homotopy.Create(lochom,locsol'last);
                    204:      else square_case := false;
                    205:           squsys := Square(locsol'last-1,lochom);
                    206:           if outlog
                    207:            then put_line(file,"The homotopy as square system : ");
                    208:                 put_line(file,squsys);
                    209:           end if;
                    210:           Homotopy.Create(squsys,locsol'last);
                    211:     end if;
                    212:     declare
                    213:       procedure Sil_Cont is
                    214:         new Silent_Continue(Max_Norm,
                    215:                             Homotopy.Eval,Homotopy.Diff,Homotopy.Diff);
                    216:       procedure Rep_Cont is
                    217:         new Reporting_Continue(Max_Norm,
                    218:                                Homotopy.Eval,Homotopy.Diff,Homotopy.Diff);
                    219:     begin
                    220:       if report
                    221:        then Rep_Cont(file,sols,false,Create(1.0));
                    222:        else Sil_Cont(sols,false,Create(1.0));
                    223:       end if;
                    224:     end;
                    225:     if square_case
                    226:      then thesys := Eval(lochom,Create(1.0),locsol'last);
                    227:           Refine_Roots(file,thesys,sols,report);
                    228:      else thesys := Eval(squsys,Create(1.0),locsol'last);
                    229:           Refine_Roots(file,thesys,sols,report);
                    230:           Clear(squsys);
                    231:     end if;
                    232:     Clear(thesys);
                    233:     locsol := Convert(sols);
                    234:     Clear(sols);
                    235:     Homotopy.Clear;
                    236:   end Determinantal_Polynomial_Continuation;
                    237:
                    238:   procedure Determinantal_Polynomial_Continuation
                    239:                 ( file : in file_type; lochom : in Poly_Sys;
                    240:                   conpar : in natural;
                    241:                   locsols : in out Standard_Complex_VecVecs.VecVec;
                    242:                   report,outlog : in boolean ) is
                    243:
                    244:   -- DESCRIPTION :
                    245:   --   Given a homotopy and solution with as continuation parameter
                    246:   --   the variable indexed by conpar, the continuation will be launched.
                    247:   --   This homotopy uses the determinantal expansions defined in the paper.
                    248:
                    249:     sols : Solution_List := Create(locsols,conpar);
                    250:     firstsol : constant Standard_Complex_Vectors.Vector
                    251:              := locsols(locsols'first).all;
                    252:     thesys,squsys : Poly_Sys(firstsol'first..firstsol'last-1);
                    253:     square_case : boolean;
                    254:
                    255:   begin
                    256:     if lochom'length + 1 = firstsol'length
                    257:      then square_case := true;
                    258:           Homotopy.Create(lochom,conpar);
                    259:      else square_case := false;
                    260:           squsys := Square(firstsol'last-1,lochom);
                    261:           if outlog
                    262:            then put_line(file,"The homotopy as square system : ");
                    263:                 put_line(file,squsys);
                    264:           end if;
                    265:           Homotopy.Create(squsys,conpar);
                    266:     end if;
                    267:     declare
                    268:       procedure Sil_Cont is
                    269:         new Silent_Continue(Max_Norm,
                    270:                             Homotopy.Eval,Homotopy.Diff,Homotopy.Diff);
                    271:       procedure Rep_Cont is
                    272:         new Reporting_Continue(Max_Norm,
                    273:                                Homotopy.Eval,Homotopy.Diff,Homotopy.Diff);
                    274:     begin
                    275:       if report
                    276:        then Rep_Cont(file,sols,false,Create(1.0));
                    277:        else Sil_Cont(sols,false,Create(1.0));
                    278:       end if;
                    279:     end;
                    280:     if square_case
                    281:      then thesys := Eval(lochom,Create(1.0),conpar);
                    282:           Refine_Roots(file,thesys,sols,report);
                    283:      else thesys := Eval(squsys,Create(1.0),conpar);
                    284:           Refine_Roots(file,thesys,sols,report);
                    285:           Clear(squsys);
                    286:     end if;
                    287:     Clear(thesys);
                    288:     locsols := Convert(sols,conpar);
                    289:     Clear(sols);
                    290:     Homotopy.Clear;
                    291:   end Determinantal_Polynomial_Continuation;
                    292:
                    293: -- TARGET ROUTINES :
                    294:
                    295:   procedure Trace_Paths ( file : in file_type; homsys : in Poly_Sys;
                    296:                           locmap : in Standard_Natural_Matrices.Matrix;
                    297:                           report,outlog : in boolean;
                    298:                           plane : in out Standard_Complex_Matrices.Matrix ) is
                    299:
                    300:   -- NOTE :
                    301:   --   This routine is only used in the original Pieri homotopy algorithm.
                    302:
                    303:     plavec : constant Standard_Complex_Vectors.Vector := Vector_Rep(plane);
                    304:     solvec : Standard_Complex_Vectors.Vector(1..plavec'last+1);
                    305:     lochom : Poly_Sys(homsys'range) := Localize(locmap,homsys);
                    306:     plaloc : constant Standard_Complex_Matrices.Matrix
                    307:            := Localize(locmap,plane);
                    308:     solloc : constant Standard_Complex_Vectors.Vector
                    309:            := Vector_Rep(locmap,plaloc);
                    310:     locsol : Standard_Complex_Vectors.Vector(1..solloc'last+1);
                    311:     evahom : Standard_Complex_Vectors.Vector(homsys'range);
                    312:     evaloc : Standard_Complex_Vectors.Vector(lochom'range);
                    313:
                    314:   begin
                    315:     if outlog
                    316:      then put_line(file,"The localization pattern :"); put(file,locmap);
                    317:           put_line(file,"The localized homotopy : "); put_line(file,lochom);
                    318:     end if;
                    319:    -- put_line(file,"The plane in local coordinates : "); put(file,plaloc,2);
                    320:     solvec(plavec'range) := plavec;
                    321:     solvec(solvec'last) := Create(0.0);
                    322:    -- put_line(file,"The solution vector : "); put_line(file,solvec);
                    323:     evahom := Eval(homsys,solvec);
                    324:    -- put_line(file,"Evaluation of solution vector at homotopy for t=0 :");
                    325:    -- put_line(file,evahom);
                    326:     put(file,"Residual of start solution :");
                    327:     put(file,Max_Norm(evahom),3); put_line(file,".");
                    328:  -- put_line(file,"The localized vector representation of the plane at t=0 :");
                    329:    -- put_line(file,solloc);
                    330:     locsol(solloc'range) := solloc;
                    331:     locsol(locsol'last) := Create(0.0);
                    332:     evaloc := Eval(lochom,locsol);
                    333:     put(file,"Residual of localized plane at t=0 :");
                    334:     put(file,Max_Norm(evaloc),3); put_line(file,".");
                    335:    -- Linear_Polynomial_Continuation(file,lochom,locsol,report,outlog);
                    336:     Determinantal_Polynomial_Continuation(file,lochom,locsol,report,outlog);
                    337:  -- put_line(file,"The localized vector representation of the plane at t=1 :");
                    338:    -- put_line(file,locsol);
                    339:     evaloc := Eval(lochom,locsol);
                    340:    -- put_line(file,"Evaluation of localized vector at homotopy for t=1 :");
                    341:    -- put_line(file,evaloc);
                    342:     put(file,"Residual of localized plane at t=1 :");
                    343:     put(file,Max_Norm(evaloc),3); put_line(file,".");
                    344:     plane := Matrix_Rep(locmap,locsol(1..locsol'last-1));
                    345:    -- put_line(file,"The solution plane at t=1 :");
                    346:    -- put(file,plane,2);
                    347:     solvec(plavec'range) := Vector_Rep(plane);
                    348:     solvec(solvec'last) := Create(1.0);
                    349:     evahom := Eval(homsys,solvec);
                    350:    -- put_line(file,"Evaluation of solution vector at homotopy for t=1 :");
                    351:    -- put_line(file,evahom);
                    352:     put(file,"Residual of target solution :");
                    353:     put(file,Max_Norm(evahom),3); put_line(file,".");
                    354:     Clear(lochom);
                    355:   end Trace_Paths;
                    356:
                    357:   procedure Trace_Paths
                    358:               ( file : in file_type; homsys : in Poly_Sys;
                    359:                 locmap : in Standard_Natural_Matrices.Matrix;
                    360:                 report,outlog : in boolean;
                    361:                 planes : in Standard_Complex_VecMats.VecMat ) is
                    362:
                    363:     lochom : Poly_Sys(homsys'range) := Localize(locmap,homsys);
                    364:     locsols : Standard_Complex_VecVecs.VecVec(planes'range);
                    365:     evaloc : Standard_Complex_Vectors.Vector(lochom'range);
                    366:     evahom : Standard_Complex_Vectors.Vector(homsys'range);
                    367:     lastvar : natural;
                    368:
                    369:   begin
                    370:     if outlog
                    371:      then put_line(file,"The localized homotopy :");
                    372:           put_line(file,lochom);
                    373:     end if;
                    374:     for i in planes'range loop               -- solution planes into vectors
                    375:       declare
                    376:         plaloc : constant Standard_Complex_Matrices.Matrix
                    377:                := Localize(locmap,planes(i).all);
                    378:         solloc : constant Standard_Complex_Vectors.Vector
                    379:                := Vector_Rep(locmap,plaloc);
                    380:         locsol : Standard_Complex_Vectors.Vector(1..solloc'last+1);
                    381:       begin
                    382:         locsol(solloc'range) := solloc;
                    383:         locsol(locsol'last) := Create(0.0);
                    384:         locsols(i) := new Standard_Complex_Vectors.Vector'(locsol);
                    385:         if outlog
                    386:          then evaloc := Eval(lochom,locsol);
                    387:               put(file,"Residual of localized plane at start :");
                    388:               put(file,Max_Norm(evaloc),3); put_line(file,".");
                    389:         end if;
                    390:       end;
                    391:     end loop;
                    392:     lastvar := locsols(locsols'first)'last;
                    393:     Determinantal_Polynomial_Continuation
                    394:       (file,lochom,lastvar,locsols,report,outlog);
                    395:     for i in locsols'range loop             -- solution vectors into planes
                    396:       planes(i).all := Matrix_Rep(locmap,locsols(i)(1..locsols(i)'last-1));
                    397:       if outlog
                    398:        then
                    399:          evaloc := Eval(lochom,locsols(i).all);
                    400:          put(file,"Residual of localized plane at target :");
                    401:          put(file,Max_Norm(evaloc),3); put_line(file,".");
                    402:          declare
                    403:            plavec : constant Standard_Complex_Vectors.Vector
                    404:                   := Vector_Rep(planes(i).all);
                    405:            solvec : Standard_Complex_Vectors.Vector
                    406:                       (plavec'first..plavec'last+1);
                    407:          begin
                    408:            solvec(plavec'range) := plavec;
                    409:            solvec(solvec'last) := Create(1.0);
                    410:            evahom := Eval(homsys,solvec);
                    411:            put(file,"Residual of target solution :");
                    412:            put(file,Max_Norm(evahom),3); put_line(file,".");
                    413:          end;
                    414:       end if;
                    415:     end loop;
                    416:     Clear(lochom); Clear(locsols);
                    417:   end Trace_Paths;
                    418:
                    419:   procedure Quantum_Trace_Paths
                    420:               ( file : in file_type; m,p,q : in natural; nd : in Node;
                    421:               -- (m,p,q) are needed for the symbol table
                    422:                 homsys : in Poly_Sys; conpar,s_mode : in natural;
                    423:                 locmap : in Standard_Natural_Matrices.Matrix;
                    424:                 report,outlog : in boolean;
                    425:                 planes : in Standard_Complex_VecMats.VecMat ) is
                    426:
                    427:     lochom : Poly_Sys(homsys'range)
                    428:            := Column_Localize(nd.top,nd.bottom,locmap,homsys);
                    429:     locsols : Standard_Complex_VecVecs.VecVec(planes'range);
                    430:     evaloc : Standard_Complex_Vectors.Vector(lochom'range);
                    431:     evahom : Standard_Complex_Vectors.Vector(homsys'range);
                    432:     addmix : natural;
                    433:
                    434:   begin
                    435:     if outlog
                    436:      then put_line(file,"The localization map : ");   put(file,locmap);
                    437:           if nd.tp = mixed
                    438:            then Two_Set_up_Symbol_Table(m,p,q,nd.top,nd.bottom);
                    439:            else One_Set_up_Symbol_Table(m,p,q,nd.top,nd.bottom);
                    440:           end if;
                    441:           Reduce_Symbols(nd.top,nd.bottom,locmap);
                    442:           put_line(file,"The localized homotopy : "); put_line(file,lochom);
                    443:     end if;
                    444:     if nd.tp = mixed
                    445:      then addmix := 1;
                    446:      else addmix := 0;
                    447:     end if;
                    448:     for i in planes'range loop               -- solution planes into vectors
                    449:       declare
                    450:         plaloc : constant Standard_Complex_Matrices.Matrix
                    451:                := Localize(locmap,planes(i).all);
                    452:         solloc : constant Standard_Complex_Vectors.Vector
                    453:                := Column_Vector_Rep(locmap,plaloc);
                    454:         locsol : Standard_Complex_Vectors.Vector(1..solloc'last+2+addmix);
                    455:       begin
                    456:         locsol(solloc'range) := solloc;
                    457:         if s_mode = 0
                    458:          then locsol(locsol'last-1) := Create(0.0); -- start value for s is 0
                    459:          else locsol(locsol'last-1) := Create(1.0); -- start value for s is 1
                    460:         end if;
                    461:         locsol(locsol'last)   := Create(0.0);   -- start value for t is 0
                    462:         if addmix = 1
                    463:          then locsol(locsol'last-2) := Create(1.0);   -- additional s-value
                    464:         end if;
                    465:         locsols(i) := new Standard_Complex_Vectors.Vector'(locsol);
                    466:         if outlog
                    467:          then evaloc := Eval(lochom,locsol);
                    468:               put(file,"Residual of localized plane at start :");
                    469:               put(file,Max_Norm(evaloc),3); put_line(file,".");
                    470:         end if;
                    471:       end;
                    472:     end loop;
                    473:     Determinantal_Polynomial_Continuation
                    474:       (file,lochom,conpar,locsols,report,outlog);
                    475:     for i in locsols'range loop             -- solution vectors into planes
                    476:       planes(i).all
                    477:         := Column_Matrix_Rep(locmap,locsols(i)(1..locsols(i)'last-2-addmix));
                    478:       if outlog
                    479:        then evaloc := Eval(lochom,locsols(i).all);
                    480:             put(file,"Residual of localized plane at target :");
                    481:             put(file,Max_Norm(evaloc),3); put_line(file,".");
                    482:             put_line(file,"The computed plane : ");
                    483:             put(file,planes(i).all,2);
                    484:       end if;
                    485:       declare
                    486:         plavec : constant Standard_Complex_Vectors.Vector
                    487:                := Column_Vector_Rep(nd.top,nd.bottom,planes(i).all);
                    488:         solvec : Standard_Complex_Vectors.Vector
                    489:                    (plavec'first..plavec'last+2+addmix);
                    490:       begin
                    491:         solvec(plavec'range) := plavec;
                    492:         solvec(solvec'last)   := Create(1.0);   -- target value for t
                    493:         solvec(solvec'last-1) := locsols(i)(locsols(i)'last-1);
                    494:         if addmix = 1
                    495:          then solvec(solvec'last-2)   := locsols(i)(locsols(i)'last-2);
                    496:         end if;
                    497:         if outlog
                    498:          then evahom := Eval(homsys,solvec);
                    499:               put(file,"Residual of target solution :");
                    500:               put(file,Max_Norm(evahom),3); put_line(file,".");
                    501:         end if;
                    502:       end;
                    503:     end loop;
                    504:     Clear(lochom); Clear(locsols);
                    505:   end Quantum_Trace_Paths;
                    506:
                    507: end Pieri_Continuation;

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