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

Annotation of OpenXM_contrib/PHC/Ada/Homotopy/multprec_complex_solutions.adb, Revision 1.1

1.1     ! maekawa     1: with unchecked_deallocation;
        !             2: with Multprec_Complex_Number_Tools;      use Multprec_Complex_Number_Tools;
        !             3: with Multprec_Complex_Vector_Tools;      use Multprec_Complex_Vector_Tools;
        !             4: with Multprec_Complex_Norms_Equals;      use Multprec_Complex_Norms_Equals;
        !             5:
        !             6: package body Multprec_Complex_Solutions is
        !             7:
        !             8:   use List_of_Solutions;
        !             9:
        !            10: -- CREATORS :
        !            11:
        !            12:   function Create ( sl : Solution_List ) return Solution_Array is
        !            13:
        !            14:     sa : Solution_Array(1..Length_Of(sl));
        !            15:
        !            16:   begin
        !            17:     if not Is_Null(sl)
        !            18:      then declare
        !            19:             i : positive := 1;
        !            20:             temp : Solution_List := sl;
        !            21:           begin
        !            22:             while not Is_Null(temp) loop
        !            23:               sa(i) := new Solution'(Head_Of(temp).all);
        !            24:               i := i + 1;
        !            25:               temp := Tail_Of(temp);
        !            26:             end loop;
        !            27:           end;
        !            28:     end if;
        !            29:     return sa;
        !            30:   end Create;
        !            31:
        !            32:   function Create ( sa : Solution_Array ) return Solution_List is
        !            33:
        !            34:     sl : Solution_List;
        !            35:
        !            36:   begin
        !            37:     if sa'first <= sa'last
        !            38:      then declare
        !            39:             n : natural := sa(sa'first).n;
        !            40:             sol : Solution(n) := sa(sa'first).all;
        !            41:             l : Link_to_Solution := new Solution'(sol);
        !            42:             last,tmp : Solution_List;
        !            43:           begin
        !            44:             Construct(l,sl);
        !            45:             last := sl;
        !            46:             for i in (sa'first+1)..sa'last loop
        !            47:               sol := sa(i).all;
        !            48:               l := new Solution'(sol);
        !            49:               Construct(l,tmp);
        !            50:               Swap_Tail(last,tmp);
        !            51:               last := Tail_Of(last);
        !            52:             end loop;
        !            53:           end;
        !            54:     end if;
        !            55:     return sl;
        !            56:   end Create;
        !            57:
        !            58:   function Create ( s : Standard_Complex_Solutions.Solution )
        !            59:                   return Multprec_Complex_Solutions.Solution is
        !            60:
        !            61:     res : Multprec_Complex_Solutions.Solution(s.n);
        !            62:
        !            63:   begin
        !            64:     res.t := s.t;
        !            65:     res.m := s.m;
        !            66:     res.v := Create(s.v);
        !            67:     res.err := Create(s.err);
        !            68:     res.rco := Create(s.rco);
        !            69:     res.res := Create(s.res);
        !            70:     return res;
        !            71:   end Create;
        !            72:
        !            73:   function Create ( l : Standard_Complex_Solutions.Solution_List )
        !            74:                   return Multprec_Complex_Solutions.Solution_List is
        !            75:
        !            76:     res,res_last : Multprec_Complex_Solutions.Solution_List;
        !            77:     tmp : Standard_Complex_Solutions.Solution_List := l;
        !            78:
        !            79:     use Standard_Complex_Solutions;
        !            80:
        !            81:   begin
        !            82:     while not Is_Null(tmp) loop
        !            83:       declare
        !            84:         ls : Standard_Complex_Solutions.Link_to_Solution := Head_Of(tmp);
        !            85:         ms : Multprec_Complex_Solutions.Solution(ls.n) := Create(ls.all);
        !            86:       begin
        !            87:         Append(res,res_last,ms);
        !            88:       end;
        !            89:       tmp := Tail_Of(tmp);
        !            90:     end loop;
        !            91:     return res;
        !            92:   end Create;
        !            93:
        !            94: -- COMPARISON and COPYING :
        !            95:
        !            96:   function Equal ( s1,s2 : Solution; tol : Floating_Number ) return boolean is
        !            97:
        !            98:     use Standard_Complex_Numbers;
        !            99:
        !           100:   begin
        !           101:     if (s1.t /= s2.t) or else (s1.n /= s2.n)
        !           102:      then return false;
        !           103:      else return Equal(s1.v,s2.v,tol);
        !           104:     end if;
        !           105:   end Equal;
        !           106:
        !           107:   function Equal ( s1,s2 : Solution_List; tol : Floating_Number )
        !           108:                  return boolean is
        !           109:   begin
        !           110:     if Is_Null(s1) and Is_Null(s2)
        !           111:      then return true;
        !           112:      elsif Is_Null(s1) or Is_Null(s2)
        !           113:          then return false;
        !           114:          else declare
        !           115:                 temp1 : Solution_List := s1;
        !           116:                 temp2 : Solution_List := s2;
        !           117:               begin
        !           118:                 While not Is_Null(temp1) and not Is_Null(s2) loop
        !           119:                   if not Equal(Head_Of(temp1).all,Head_Of(temp2).all,tol)
        !           120:                    then return false;
        !           121:                    else temp1 := Tail_Of(temp1);
        !           122:                         temp2 := Tail_Of(temp2);
        !           123:                   end if;
        !           124:                 end loop;
        !           125:                 if Is_Null(temp1) and Is_Null(temp2)
        !           126:                  then return true;
        !           127:                  else return false;
        !           128:                 end if;
        !           129:               end;
        !           130:     end if;
        !           131:   end Equal;
        !           132:
        !           133:   function Equal ( s1,s2 : Solution_Array; tol : Floating_Number )
        !           134:                  return boolean is
        !           135:   begin
        !           136:     if s1'first /= s2'first
        !           137:      then return false;
        !           138:      elsif s1'last /= s2'last
        !           139:          then return false;
        !           140:          else for i in s1'range loop
        !           141:                 if not Equal(s1(i).all,s2(i).all,tol)
        !           142:                  then return false;
        !           143:                 end if;
        !           144:               end loop;
        !           145:     end if;
        !           146:     return true;
        !           147:   end Equal;
        !           148:
        !           149:   procedure Equals ( sols : in out Solution_List; flag : in natural;
        !           150:                      tol : in Floating_Number; same : out boolean ) is
        !           151:   begin
        !           152:     same := false;
        !           153:     if not Is_Null(sols)
        !           154:      then declare
        !           155:             n : natural := Head_Of(sols).n;
        !           156:             i : natural := 1;
        !           157:             s1,s2 : Solution(n);
        !           158:             temp : Solution_List := sols;
        !           159:           begin
        !           160:             while not Is_Null(temp) loop
        !           161:               s1 := Head_Of(temp).all;
        !           162:               for j in (i+1)..Length_Of(sols) loop
        !           163:                 s2 := Get(sols,j);
        !           164:                 if Equal(s1,s2,tol)
        !           165:                  then same := true;
        !           166:                       Change_Multiplicity(sols,i,flag);
        !           167:                       Change_Multiplicity(sols,j,flag);
        !           168:                 end if;
        !           169:               end loop;
        !           170:               temp := Tail_Of(temp);
        !           171:               i := i + 1;
        !           172:             end loop;
        !           173:           end;
        !           174:     end if;
        !           175:   end Equals;
        !           176:
        !           177:   procedure Equals ( sa : in Solution_Array; x : in Vector; i : in natural;
        !           178:                      tol : in Floating_Number; j : in out natural ) is
        !           179:
        !           180:     eq : boolean;
        !           181:
        !           182:   begin
        !           183:     while j < i loop
        !           184:       eq := true;
        !           185:       for k in x'range loop
        !           186:         if AbsVal(sa(j).v(k) - x(k)) > tol
        !           187:          then eq := false;
        !           188:         end if;
        !           189:         exit when not eq;
        !           190:       end loop;
        !           191:       exit when eq;
        !           192:       j := j + 1;
        !           193:     end loop;
        !           194:   end Equals;
        !           195:
        !           196:   procedure Copy ( s1 : in Solution; s2 : in out Solution ) is
        !           197:   begin
        !           198:        s2.t := s1.t;
        !           199:        s2.m := s1.m;
        !           200:     Copy(s1.v,s2.v);
        !           201:     Copy(s1.err,s2.err);
        !           202:     Copy(s1.rco,s2.rco);
        !           203:     Copy(s1.res,s2.res);
        !           204:   end Copy;
        !           205:
        !           206:   procedure Copy ( s1 : in Solution_List; s2 : in out Solution_List ) is
        !           207:   begin
        !           208:     Clear(s2);
        !           209:     if not Is_Null(s1)
        !           210:      then declare
        !           211:             temp : Solution_List := s1;
        !           212:             last : Solution_List;
        !           213:             n : natural := Head_Of(s1).n;
        !           214:             sol : Solution(n) := Head_Of(temp).all;
        !           215:             ns : Solution(n);
        !           216:           begin
        !           217:             Copy(sol,ns);
        !           218:             declare
        !           219:               l : Link_to_Solution := new Solution'(ns);
        !           220:             begin
        !           221:               Construct(l,s2);
        !           222:             end;
        !           223:             last := s2;
        !           224:             temp := Tail_Of(temp);
        !           225:             while not Is_Null(temp) loop
        !           226:               sol := Head_Of(temp).all;
        !           227:               declare
        !           228:                 l : Link_to_Solution := new Solution'(sol);
        !           229:                 tmp : Solution_List;
        !           230:               begin
        !           231:                 Construct(l,tmp);
        !           232:                 Swap_Tail(last,tmp);
        !           233:               end;
        !           234:               last := Tail_Of(last);
        !           235:               temp := Tail_Of(temp);
        !           236:             end loop;
        !           237:           end;
        !           238:     end if;
        !           239:   end Copy;
        !           240:
        !           241:   procedure Copy ( s1 : in Solution_Array; s2 : in out Solution_Array ) is
        !           242:   begin
        !           243:     Clear(s2);
        !           244:     for i in s1'range loop
        !           245:       s2(i) := new Solution'(s1(i).all);
        !           246:     end loop;
        !           247:   end Copy;
        !           248:
        !           249: -- SELECTORS :
        !           250:
        !           251:   function Number ( sols : Solution_List; flag : natural ) return natural is
        !           252:
        !           253:     res : natural := 0;
        !           254:
        !           255:   begin
        !           256:     if Is_Null(sols)
        !           257:      then return res;
        !           258:      else declare
        !           259:             temp : Solution_List := sols;
        !           260:             ls : Link_to_Solution;
        !           261:           begin
        !           262:             while not Is_Null(temp) loop
        !           263:               if Head_Of(temp).m = flag
        !           264:                then res := res + 1;
        !           265:               end if;
        !           266:               temp := Tail_Of(temp);
        !           267:             end loop;
        !           268:           end;
        !           269:           return res;
        !           270:     end if;
        !           271:   end Number;
        !           272:
        !           273:   function Is_In ( sols : Solution_List; s : Solution; tol : Floating_Number )
        !           274:                  return boolean is
        !           275:
        !           276:     tmp : Solution_List := sols;
        !           277:
        !           278:   begin
        !           279:     while not Is_Null(tmp) loop
        !           280:       if Equal(Head_Of(tmp).all,s,tol)
        !           281:        then return true;
        !           282:        else tmp := Tail_Of(tmp);
        !           283:       end if;
        !           284:     end loop;
        !           285:     return false;
        !           286:   end Is_In;
        !           287:
        !           288:   function Is_In ( sa : Solution_Array; s : Solution; tol : Floating_Number )
        !           289:                  return boolean is
        !           290:   begin
        !           291:     for i in sa'range loop
        !           292:       if Equal(sa(i).all,s,tol)
        !           293:        then return true;
        !           294:       end if;
        !           295:     end loop;
        !           296:     return false;
        !           297:   end Is_In;
        !           298:
        !           299:   function Get ( sols : Solution_List; pos : positive )
        !           300:                return Solution is
        !           301:   begin
        !           302:     if pos <= Length_Of(sols)
        !           303:      then declare
        !           304:             temp : Solution_List := sols;
        !           305:             count : natural := 1;
        !           306:           begin
        !           307:             while not Is_Null(temp) loop
        !           308:               if count = pos
        !           309:                then return Head_Of(temp).all;
        !           310:                else temp := Tail_Of(temp);
        !           311:                     count := count + 1;
        !           312:               end if;
        !           313:             end loop;
        !           314:           end;
        !           315:     end if;
        !           316:     declare
        !           317:       s : Solution(0);
        !           318:     begin
        !           319:       return s;
        !           320:     end;
        !           321:   end Get;
        !           322:
        !           323: -- CONSTRUCTORS :
        !           324:
        !           325:   procedure Append ( first,last : in out Solution_List; s : in Solution ) is
        !           326:
        !           327:     ss : Solution(s.n);
        !           328:     ls : Link_to_Solution;
        !           329:
        !           330:   begin
        !           331:     Copy(s,ss);
        !           332:     ls := new Solution'(ss);
        !           333:     if Is_Null(first)
        !           334:      then Construct(ls,first);
        !           335:           last := first;
        !           336:      else declare
        !           337:             tmp : Solution_List;
        !           338:           begin
        !           339:             Construct(ls,tmp);
        !           340:             Swap_Tail(last,tmp);
        !           341:             last := Tail_Of(last);
        !           342:           end;
        !           343:     end if;
        !           344:   end Append;
        !           345:
        !           346:   procedure Add ( sols : in out Solution_List; s : in Solution ) is
        !           347:
        !           348:     last,temp,tmp : Solution_List;
        !           349:     ls : Link_to_Solution := new Solution'(s);
        !           350:
        !           351:   begin
        !           352:     if Is_Null(sols)
        !           353:      then Construct(ls,sols);
        !           354:      else temp := sols;
        !           355:           while not Is_Null(temp) loop
        !           356:             last := temp;
        !           357:             temp := Tail_Of(temp);
        !           358:           end loop;
        !           359:           Construct(ls,tmp);
        !           360:           Swap_Tail(last,tmp);
        !           361:     end if;
        !           362:   end Add;
        !           363:
        !           364:   procedure Add ( sols : in out Solution_List; s : in Solution;
        !           365:                   tol : in Floating_Number; other : out natural ) is
        !           366:
        !           367:     last,temp,tmp : Solution_List;
        !           368:     ls : Link_to_Solution := new Solution'(s);
        !           369:     s2 : Solution(s.n);
        !           370:     count : natural := 1;
        !           371:
        !           372:   begin
        !           373:     other := 0;
        !           374:     if Is_Null(sols)
        !           375:      then Construct(ls,sols);
        !           376:      else temp := sols;
        !           377:           while not Is_Null(temp) loop
        !           378:             s2 := Head_Of(temp).all;
        !           379:             if Equal(s,s2,tol)
        !           380:              then other := count;
        !           381:                   Clear(ls);
        !           382:                   return;
        !           383:              else last := temp;
        !           384:                   temp := Tail_Of(temp);
        !           385:                   count := count + 1;
        !           386:             end if;
        !           387:           end loop;
        !           388:           Construct(ls,tmp);
        !           389:           Swap_Tail(last,tmp);
        !           390:     end if;
        !           391:   end Add;
        !           392:
        !           393: -- MODIFIERS :
        !           394:
        !           395:   procedure Set_Size ( s : in out Solution; size : in natural ) is
        !           396:   begin
        !           397:     Set_Size(s.v,size);
        !           398:     Set_Size(s.err,size);
        !           399:     Set_Size(s.rco,size);
        !           400:     Set_Size(s.res,size);
        !           401:   end Set_Size;
        !           402:
        !           403:   procedure Set_Size ( ls : in out Link_to_Solution; size : in natural ) is
        !           404:   begin
        !           405:     Set_Size(ls.v,size);
        !           406:     Set_Size(ls.err,size);
        !           407:     Set_Size(ls.rco,size);
        !           408:     Set_Size(ls.res,size);
        !           409:   end Set_Size;
        !           410:
        !           411:   procedure Set_Size ( sols : in out Solution_List; size : in natural ) is
        !           412:
        !           413:     tmp : Solution_List := sols;
        !           414:
        !           415:   begin
        !           416:     while not Is_Null(tmp) loop
        !           417:       declare
        !           418:         ls : Link_to_Solution := Head_Of(tmp);
        !           419:       begin
        !           420:         Set_Size(ls,size);
        !           421:         Set_Head(tmp,ls);
        !           422:       end;
        !           423:       tmp := Tail_Of(tmp);
        !           424:     end loop;
        !           425:   end Set_Size;
        !           426:
        !           427:   procedure Change ( sols : in out Solution_List; pos : in positive;
        !           428:                      s : in Solution; tol : in Floating_Number;
        !           429:                      other : out natural ) is
        !           430:   begin
        !           431:     if pos <= Length_Of(sols)
        !           432:      then declare
        !           433:             temp : Solution_List := sols;
        !           434:             ls : Link_to_Solution;
        !           435:           begin
        !           436:             other := 0;
        !           437:             for i in 1..Length_Of(temp) loop
        !           438:               ls := Head_Of(temp);
        !           439:               if i = pos
        !           440:                then ls.v := s.v;
        !           441:                     ls.m := s.m;
        !           442:                     ls.t := s.t;
        !           443:                     Set_Head(temp,ls);
        !           444:                     return;
        !           445:                elsif Equal(s,ls.all,tol)
        !           446:                    then other := i;
        !           447:                         return;
        !           448:               end if;
        !           449:               temp := Tail_Of(temp);
        !           450:             end loop;
        !           451:           end;
        !           452:     end if;
        !           453:   end Change;
        !           454:
        !           455:   procedure Set_Continuation_Parameter
        !           456:                ( sols : in out Solution_List;
        !           457:                  t : in Standard_Complex_Numbers.Complex_Number ) is
        !           458:
        !           459:     tmp : Solution_List := sols;
        !           460:
        !           461:   begin
        !           462:     while not Is_Null(tmp) loop
        !           463:       declare
        !           464:         ls : Link_to_Solution := Head_Of(tmp);
        !           465:       begin
        !           466:         ls.t := t;
        !           467:         Set_Head(tmp,ls);
        !           468:       end;
        !           469:       tmp := Tail_Of(tmp);
        !           470:     end loop;
        !           471:   end Set_Continuation_Parameter;
        !           472:
        !           473:   procedure Change_Multiplicity
        !           474:                 ( sols : in out Solution_List; pos : in positive;
        !           475:                   m : in natural ) is
        !           476:   begin
        !           477:     if pos <= Length_Of(sols)
        !           478:      then declare
        !           479:             temp : Solution_List := sols;
        !           480:             ls : Link_to_Solution;
        !           481:           begin
        !           482:             for i in 1..(pos-1) loop
        !           483:               temp := Tail_Of(temp);
        !           484:             end loop;
        !           485:             ls := Head_Of(temp);
        !           486:             ls.m := m;
        !           487:             Set_Head(temp,ls);
        !           488:           end;
        !           489:     end if;
        !           490:   end Change_Multiplicity;
        !           491:
        !           492:   procedure Remove ( sols : in out Solution_List; pos : in positive ) is
        !           493:
        !           494:     first,second,temp : Solution_List;
        !           495:     ls : Link_to_Solution;
        !           496:
        !           497:   begin
        !           498:     if pos <= Length_Of(sols)
        !           499:      then if pos = 1
        !           500:            then if Is_Null(Tail_Of(sols))
        !           501:                  then Clear(sols);
        !           502:                  else ls := Head_Of(sols);
        !           503:                       Clear(ls);
        !           504:                       sols := Tail_Of(sols);
        !           505:                 end if;
        !           506:            else second := sols;
        !           507:                 for i in 1..(pos-1) loop
        !           508:                   first := second;
        !           509:                   second := Tail_Of(first);
        !           510:                 end loop;
        !           511:                 ls := Head_Of(second);
        !           512:                 Clear(ls);
        !           513:                 temp := Tail_Of(second);
        !           514:                 Swap_Tail(first,temp);
        !           515:           end if;
        !           516:     end if;
        !           517:   end Remove;
        !           518:
        !           519:   procedure Delete ( sols : in out Solution_List ) is
        !           520:
        !           521:     continue : boolean;
        !           522:
        !           523:   begin
        !           524:     continue := true;
        !           525:     -- looking for the first element in sols that can stay :
        !           526:     while not Is_Null(sols) and continue loop
        !           527:       declare
        !           528:         ls : Link_to_Solution := Head_Of(sols);
        !           529:       begin
        !           530:         if To_Be_Removed(ls.m)
        !           531:          then Clear(ls);
        !           532:               sols := Tail_Of(sols);
        !           533:         else continue := false;
        !           534:         end if;
        !           535:       end;
        !           536:     end loop;
        !           537:     if not Is_Null(sols)
        !           538:      then -- first element of sols can stay in the list
        !           539:          declare
        !           540:            first,second : Solution_List;
        !           541:           begin
        !           542:            first := sols;
        !           543:            second := Tail_Of(first);
        !           544:            while not Is_Null(second) loop
        !           545:              declare
        !           546:                ls : Link_to_Solution := Head_Of(second);
        !           547:                temp : Solution_List;
        !           548:               begin
        !           549:                if To_Be_Removed(ls.m)
        !           550:                 then Clear(ls);
        !           551:                      temp := Tail_Of(second);
        !           552:                      Swap_Tail(first,temp);
        !           553:                 end if;
        !           554:              end;
        !           555:              first := second;
        !           556:              second := Tail_Of(first);
        !           557:             end loop;
        !           558:           end;
        !           559:     end if;
        !           560:   end Delete;
        !           561:
        !           562:   procedure Remove_All ( sols : in out Solution_List; flag : in natural ) is
        !           563:
        !           564:     continue : boolean;
        !           565:
        !           566:   begin
        !           567:     continue := true;
        !           568:     -- looking for the first element in sols that can stay :
        !           569:     while not Is_Null(sols) and continue loop
        !           570:       declare
        !           571:         ls : Link_to_Solution := Head_Of(sols);
        !           572:       begin
        !           573:         if ls.m = flag
        !           574:          then Clear(ls);
        !           575:               sols := Tail_Of(sols);
        !           576:         else continue := false;
        !           577:         end if;
        !           578:       end;
        !           579:     end loop;
        !           580:     if not Is_Null(sols)
        !           581:      then -- first element of s can stay in the list
        !           582:          declare
        !           583:            first,second : Solution_List;
        !           584:           begin
        !           585:            first := sols;
        !           586:            second := Tail_Of(first);
        !           587:            while not Is_Null(second) loop
        !           588:              declare
        !           589:                ls : Link_to_Solution := Head_Of(second);
        !           590:                temp : Solution_List;
        !           591:               begin
        !           592:                if ls.m = flag
        !           593:                 then Clear(ls);
        !           594:                      temp := Tail_Of(second);
        !           595:                      Swap_Tail(first,temp);
        !           596:                 end if;
        !           597:              end;
        !           598:              first := second;
        !           599:              second := Tail_Of(first);
        !           600:             end loop;
        !           601:           end;
        !           602:     end if;
        !           603:   end Remove_All;
        !           604:
        !           605: -- DESTRUCTORS :
        !           606:
        !           607:   procedure Clear( s : in out Solution ) is
        !           608:   begin
        !           609:     Clear(s.err);
        !           610:     Clear(s.res);
        !           611:     Clear(s.rco);
        !           612:     Clear(s.v);
        !           613:   end Clear;
        !           614:
        !           615:   procedure Clear ( ls : in out Link_to_Solution ) is
        !           616:
        !           617:     procedure free is new unchecked_deallocation(Solution,Link_to_Solution);
        !           618:
        !           619:   begin
        !           620:     if ls /= null
        !           621:      then Clear(ls.all);
        !           622:     end if;
        !           623:     free(ls);
        !           624:   end Clear;
        !           625:
        !           626:   procedure Shallow_Clear ( sl : in out Solution_List ) is
        !           627:   begin
        !           628:     List_of_Solutions.Clear(List_of_Solutions.List(sl));
        !           629:   end Shallow_Clear;
        !           630:
        !           631:   procedure Deep_Clear ( sl : in out Solution_List ) is
        !           632:
        !           633:     temp : Solution_List := sl;
        !           634:     ls : Link_to_Solution;
        !           635:
        !           636:   begin
        !           637:     while not Is_Null(temp) loop
        !           638:       ls := Head_Of(temp);
        !           639:       Clear(ls);
        !           640:       temp := Tail_Of(temp);
        !           641:     end loop;
        !           642:     Shallow_Clear(sl);
        !           643:   end Deep_Clear;
        !           644:
        !           645:   procedure Clear ( sa : in out Solution_Array ) is
        !           646:   begin
        !           647:     for i in sa'range loop
        !           648:       Clear(sa(i));
        !           649:     end loop;
        !           650:   end Clear;
        !           651:
        !           652: end Multprec_Complex_Solutions;

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