[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     ! 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>