Changeset 6ed15c in git


Ignore:
Timestamp:
May 2, 2005, 9:43:22 AM (18 years ago)
Author:
Hans Schönemann <hannes@…>
Branches:
(u'jengelh-datetime', 'ceac47cbc86fe4a15902392bdbb9bd2ae0ea02c6')(u'spielwiese', 'f875bbaccd0831e36aaed09ff6adeb3eb45aeb94')
Children:
6eff86e3417d554a62456e5d4f0634e215db4891
Parents:
d1a54b1d03b681db8f1032e2f169a09db7a0faf7
Message:
*lossen: new lib


git-svn-id: file:///usr/local/Singular/svn/trunk@7982 2c84dea3-7e68-4137-9b89-c4e89433aadc
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • Singular/LIB/presolve.lib

    rd1a54b r6ed15c  
    11//last change: 13.02.2001 (Eric Westenberger)
    22///////////////////////////////////////////////////////////////////////////////
    3 version="$Id: presolve.lib,v 1.20 2005-04-28 09:22:18 Singular Exp $";
     3version="$Id: presolve.lib,v 1.21 2005-05-02 07:43:22 Singular Exp $";
    44category="Symbolic-numerical solving";
    55info="
     
    1313 elimpartanyr(i,p);     factors of p partially eliminated from i in any ring
    1414 fastelim(i,p[..]);     fast elimination of factors of p from i [options]
     15 faststd(id,[..]);      fast std for ideal id [options]
    1516 findvars(id[..]);      ideal of variables occuring in id [more information]
    1617 hilbvec(id[,c,o]);     intvec of Hilberseries of id [in char c and ord o]
     
    1819 tolessvars(id[,]);     maps id to new basering having only vars occuring in id
    1920 solvelinearpart(id);   reduced std-basis of linear part of id
    20  sortandmap(id,s1,s2);  map to new basering with vars sorted w.r.t. complexity
     21 sortandmap(id [..]);   map to new basering with vars sorted w.r.t. complexity
    2122 sortvars(id[n1,p1..]); sort vars w.r.t. complexity in id [different blocks]
    2223 valvars(id[..]);       valuation of vars w.r.t. to their complexity in id
     
    451452   }
    452453   else
    453 //------- h!=0: homogenize and compute Hilbert-series using hilbvec ----------
    454    {
    455       intvec hi = hilbvec(L[1]);         // Hilbert-series of i
     454//------- h!=0: homogenize and compute Hilbert series using hilbvec ----------
     455   {
     456      intvec hi = hilbvec(L[1]);         // Hilbert series of i
    456457      execute("ring r2=("+charstr(P)+"),("+varstr(basering)+",@homo),dp;");
    457458      list L = imap(r1,L);
     
    479480///////////////////////////////////////////////////////////////////////////////
    480481
    481 proc faststd (@id,string @s1,string @s2, list #)
    482 "USAGE:   faststd(id,s1,s2[,\"hilb\",\"sort\",\"dec\",o,\"blocks\"]);
    483          id=ideal/module, s1,s2=strings (names for new ring and maped id)
    484          o = string (allowed ordstring:\"lp\",\"dp\",\"Dp\",\"ls\",\"ds\",\"Ds\")
    485          \"hilb\",\"sort\",\"dec\",\"block\" options for Hilbert-std, sortandmap
    486 COMPUTE: create a new ring (with \"best\" ordering of vars) and compute a
    487          std-basis of id (hopefully faster)
    488          - If say, s1=\"R\" and s2=\"j\", the new basering has name R and the
    489            std-basis of the image of id in R has name j
    490          - \"hilb\"  : use Hilbert-series driven std-basis computation
    491          - \"sort\"  : use 'sortandmap' for a best ordering of vars
    492          - \"dec\"   : order vars w.r.t. decreasing complexity (with \"sort\")
    493          - \"block\" : create blockordering, each block having ordstr=o, s.t.
    494                      vars of same complexity are in one block (with \"sort\")
    495          - o       : defines the basic ordering of the resulting ring
    496          default: o = ordering of 1-st block of basering - if it is allowed,
    497                       else o=\"dp\",
    498                   \"sort\", if none of the optional parameters is given
    499 RETURN:  nothing
    500 NOTE:    This proc is only useful for hard problems where other methods fail.
    501          \"hilb\" is useful for hard orderings (as \"lp\") or for characteristic 0,
    502          it is correct for \"lp\",\"dp\",\"Dp\" (and for blockorderings combining
    503          these) but not for s-orderings or if the vars have different weights.
     482proc faststd (@id, list #)
     483"USAGE:   faststd(id [,\"hilb\",\"sort\",\"dec\",o,\"blocks\"]);
     484         id=ideal/module, o=string (allowed:\"lp\",\"dp\",\"Dp\",\"ls\",
     485         \"ds\",\"Ds\"),  \"hilb\",\"sort\",\"dec\",\"block\" options for
     486         Hilbert-driven std, and the procedure sortandmap
     487RETURN:  a ring R, in which an ideal STD_id is stored: @*
     488         - the ring R differs from the active basering only in the choice
     489         of monomial ordering and in the sorting of the variables.
     490         - STD_id is a standard basis for the image (under imap) of the input
     491         ideal/module id with respect to the new monomial ordering. @*
     492NOTE:    Using the optional input parameters, we may modify the computations
     493         performed: @*
     494         - \"hilb\"  : use Hilbert-driven standard basis computation@*
     495         - \"sort\"  : use 'sortandmap' for a best sorting of the variables@*
     496         - \"dec\"   : order vars w.r.t. decreasing complexity (with \"sort\")@*
     497         - \"block\" : create block ordering, each block having ordstr=o, s.t.
     498                     vars of same complexity are in one block (with \"sort\")@*
     499         - o       : defines the basic ordering of the resulting ring@*
     500         [default: o=ordering of 1st block of basering (if allowed, else o=\"dp\"],
     501                  \"sort\", if none of the optional parameters is given @*
     502         This proc is only useful for hard problems where other methods fail.@*
     503         \"hilb\" is useful for hard orderings (as \"lp\") or for characteristic 0,@*
     504         it is correct for \"lp\",\"dp\",\"Dp\" (and for block orderings combining
     505         these) but not for s-orderings or if the vars have different weights.@*
    504506         There seem to be only few cases in which \"dec\" is fast
    505507EXAMPLE: example faststd; shows an example.
     
    536538      }
    537539   }
    538    if( voice==2 ) { "// choosen options, hilb sort dec block:",@h,@s,@n,@m; }
     540   if( voice==2 ) { "// chosen options, hilb sort dec block:",@h,@s,@n,@m; }
    539541
    540542//-------------------- nosort: create ring with new name ----------------------
    541543   if ( @s==0 )
    542544   {
    543       execute("ring "+@s1+"=("+charstr(@P)+"),("+varstr(@P)+"),("+@o+");");
    544       def @id = imap(@P,@id);
    545       verbose(noredefine);
    546       def @P = basering;
    547       verbose(redefine);
    548       kill `@s1`;
    549       if ( @h==0 ) { @id = std(@id); }
    550    }
    551 //--------- sort: create new ring with "best" ordering of variables -----------
    552  proc bestorder(@id,string @s1,string @s2,int @n,string @o,int @m,int @l)
    553   {
    554      intvec getoption = option(get);
    555      option(redSB);
    556      @id = interred(sort(@id)[1]);
    557      poly @p = product(maxideal(1),1..@l);
    558      def i,s1,s2,n,p,o,m = @id,@s1,@s2,@n,@p,@o,@m;
    559      sortandmap(i,s1,s2,n,p,0,o,m);
    560      option(set,getoption);
    561      keepring(basering);
    562   }
     545      execute("ring @S1 =("+charstr(@P)+"),("+varstr(@P)+"),("+@o+");");
     546      def STD_id = imap(@P,@id);
     547      if ( @h==0 ) { STD_id = std(STD_id); }
     548   }
     549
    563550//---------------------- no hilb: compute SB directly -------------------------
    564551   if ( @s != 0 and @h == 0 )
    565552   {
    566       bestorder(@id,@s1,@s2,@n,@o,@m,nvars(@P));
    567       verbose(noredefine);
    568       def @P = basering;
    569       verbose(redefine);
    570       kill `@s1`;
    571       def @id = `@s2`;
    572       @id = std(@id);
     553      intvec getoption = option(get);
     554      option(redSB);
     555      @id = interred(sort(@id)[1]);
     556      poly @p = product(maxideal(1),1..nvars(@P));
     557      def @S1=sortandmap(@id,@n,@p,0,@o,@m);
     558      setring @S1;
     559      option(set,getoption);
     560      def STD_id=imap(@S1,IMAG);
     561      STD_id = std(STD_id);
    573562   }
    574563//------- hilb: homogenize and compute Hilbert-series using hilbvec -----------
     
    576565   if ( @h != 0 )
    577566   {
    578       execute("ring @Q=("+charstr(@P)+"),("+varstr(@P)+",@homo),("+@o+");");
     567      execute("ring @Q=("+charstr(@P)+"),("+varstr(@P)+",@homo),("+@o+");"); 
    579568      def @id = imap(@P,@id);
    580       kill @P;
    581569      @id = homog(@id,@homo);               // @homo = homogenizing var
    582570      if ( @s != 0 )
    583571      {
    584          bestorder(@id,@s1,@s2,@n,@o,@m,nvars(@Q)-1);
    585          verbose(noredefine);
    586          def @Q= basering;
    587          kill `@s1`;
    588          def @id = `@s2`;
    589          verbose(redefine);
     572        intvec getoption = option(get);
     573        option(redSB);
     574        @id = interred(sort(@id)[1]);
     575        poly @p = product(maxideal(1),1..(nvars(@Q)-1));
     576        def @S1=sortandmap(@id,@n,@p,0,@o,@m);
     577        setring @S1;
     578        option(set,getoption);
     579        kill @Q;
     580        def @Q= basering;
     581        def @id = IMAG;
    590582      }
    591583      intvec @hi;                     // encoding of Hilbert-series of i
     
    603595         else { @o = @o[1,size(@o)-8] + @o[size(@o)-1,2]; }
    604596      }
    605       execute("ring @P=("+charstr(@Q)+"),("+@va+"),("+@o+");");
    606       def @id = imap(@Q,@id);
    607    }
    608    def `@s1` = @P;
    609    def `@s2` = @id;
    610    attrib(`@s2`,"isSB",1);
    611    export(`@s2`);
    612    kill @P;
    613    keepring(basering);
    614    if( voice==2 ) { "// basering is now "+@s1+", std-basis has name "+@s2; }
    615    return();
     597      kill @S1;     
     598      execute("ring @S1=("+charstr(@Q)+"),("+@va+"),("+@o+");");
     599      def STD_id = imap(@Q,@id);
     600   }
     601   attrib(STD_id,"isSB",1);
     602   export STD_id;
     603   if (defined(IMAG)) { kill IMAG; }
     604   setring @P;
     605   dbprint(printlevel-voice+3,"
     606// 'faststd' created a ring, in which an object STD_id is stored.
     607// To access the object, type (if the name R was assigned to the return value):
     608        setring R; STD_id; ");
     609   return(@S1);
    616610}
    617611example
     
    620614   ideal i = w2+f2-1, x2+t2+a2-1,  y2+u2+b2-1, z2+v2+c2-1,
    621615            d2+e2-1, f4+2u, wa+tf, xy+tu+ab;
    622   option(prot); timer=1;
     616   option(prot); timer=1;
    623617   int time = timer;
    624618   ideal j=std(i);
    625619   timer-time;
    626    show(R);dim(j),mult(j);
    627    int time = timer;
    628    faststd(i,"R","i");                      // use "best" ordering of vars
     620   dim(j),mult(j);
     621
     622   time = timer;
     623   def R=faststd(i);                      // use "best" ordering of vars
    629624   timer-time;
    630    show(R);dim(i),mult(i);
    631    setring s;time = timer;
    632    faststd(i,"R","i","hilb");                // hilb-std only
     625   show(R);setring R;dim(STD_id),mult(STD_id);
     626
     627   setring s;kill R;time = timer;
     628   def R=faststd(i,"hilb");                // hilb-std only
    633629   timer-time;
    634    show(R);dim(i),mult(i);
    635    setring s;time = timer;
    636    faststd(i,"R","i","hilb","sort");         // hilb-std,"best" ordering
     630   show(R);setring R;dim(STD_id),mult(STD_id);
     631
     632   setring s;kill R;time = timer;
     633   def R=faststd(i,"hilb","sort");         // hilb-std,"best" ordering
    637634   timer-time;
    638    show(R);dim(i),mult(i);
    639     setring s;time = timer;
    640    faststd(i,"R","i","hilb","sort","block","dec"); // hilb-std,"best",blocks
     635   show(R);setring R;dim(STD_id),mult(STD_id);
     636
     637   setring s;kill R;time = timer;
     638   def R=faststd(i,"hilb","sort","block","dec"); // hilb-std,"best",blocks
    641639   timer-time;
    642    show(R);dim(i),mult(i);
    643   setring s;time = timer;
     640   show(R);setring R;dim(STD_id),mult(STD_id);
     641
     642   setring s;kill R;time = timer;
    644643   timer-time;time = timer;
    645    faststd(i,"R","i","sort","block","Dp"); //"best",decreasing,Dp-blocks
     644   def R=faststd(i,"sort","block","Dp"); //"best",decreasing,Dp-blocks
    646645   timer-time;
    647    show(R);dim(i),mult(i);
     646   show(R);setring R;dim(STD_id),mult(STD_id);
    648647}
    649648///////////////////////////////////////////////////////////////////////////////
     
    750749proc tolessvars (id ,list #)
    751750"USAGE:   tolessvars(id [,s1,s2] ); id poly/ideal/vector/module/matrix,
    752           s1,s2=strings@*
    753           s1: name of new ring,@*
    754           s2: new ordering@*
    755           (default: s1=\"R(n)\" where n is the # of vars in the new ring,
    756           s2=\"dp\" or \"ds\" depending whether the first block of the old
    757           ordering is a p- resp. an s-ordering)
    758 
    759 CREATE:  nothing, if id contains all vars of the basering.@*
    760          Else, create a ring with same char as the basering, but possibly less
    761          variables (only those variables which actually occur in id) and map
    762          id to the new ring, which will be the basering after the proc has
    763          finished.
    764 DISPLAY: If printlevel >=0, display ideal of vars, which have been ommitted from
    765          the old ring
    766 RETURN:  the original ideal id (see NOTE)
    767 NOTE:    You must not type, say, 'ideal id=tolessvars(id);' since the ring
    768          to which 'id' would belong will only be defined by the r.h.s.. But you
    769          may type 'def id=tolessvars(id);' or 'list id=tolessvars(id);'
    770          since then 'id' does not a priory belong to a ring, its type will
    771          be defined by the right hand side. Moreover, do not use a name which
    772          occurs in the old ring, for the same reason.
     751          s1=string (new ordering)@*
     752          [default: s1=\"dp\" or \"ds\" depending on whether the first block
     753          of the old ordering is a p- resp. an s-ordering)
     754RETURN:  If id contains all vars of the basering: empty list. @*
     755         Else: ring R with the same char as the basering, but possibly less
     756         variables (only those variables which actually occur in id). In R
     757         an object IMAG (image of id under imap) is stored. 
     758DISPLAY: If printlevel >=0, display ideal of vars, which have been ommitted
     759         from the old ring.
    773760EXAMPLE: example tolessvars; shows an example
    774761"
     
    776763//---------------- initialisation and check occurence of vars -----------------
    777764   int s,ii,n,fp,fs;
    778    string s1,s2,newvar;
     765   string s2,newvar;
    779766   int pr = printlevel-voice+3;  // p = printlevel+1 (default: p=1)
    780767   def P = basering;
     
    791778   if( n == nvars(P) )
    792779   {
    793       dbprint( pr,"","// all variables occured in "+typeof(id)+", no change of ring!");
    794       return(id);
     780     dbprint(printlevel-voice+3,"
     781// All variables appear in input object.
     782// empty list returned. ");
     783     return(list());
    795784   }
    796785//----------------- prepare new ring, map to it and return --------------------
    797    s1 = "R("+string(n)+")";
    798786   if ( size(#) == 0 )
    799787   {
     
    803791       else {  s2="ds"; }
    804792   }
    805    if ( size(#) ==1 ) { s1=#[1]; }
    806    if ( size(#) ==2 ) { s1=#[1]; s2=#[2]; }
    807    //dbprint( pr,"","// variables which did not occur:",simplify(max,2) );
     793   if ( size(#) ==1 ) { s2=#[1]; }
    808794   dbprint( pr,"","// variables which did not occur:",L[3] );
    809 
    810    execute("ring "+s1+"=("+charstr(P)+"),("+newvar+"),("+s2+");");
    811    def id = imap(P,id);
    812    export(basering);
    813    keepring (basering);
    814    dbprint( pr,"// basering is now "+s1 );
    815    return(id);
     795   execute("ring S1=("+charstr(P)+"),("+newvar+"),("+s2+");");
     796   def IMAG = imap(P,id);
     797   export IMAG;
     798   dbprint(printlevel-voice+3,"
     799// 'tolessvars' created a ring, in which an object IMAG is stored.
     800// To access the object, type (if the name R was assigned to the return value):
     801        setring R; IMAG; ");
     802   return(S1);
    816803}
    817804example
     
    819806   ring r  = 0,(x,y,z),dp;
    820807   ideal i = y2-x3,x-3,y-2x;
    821    def j   = tolessvars(i,"R_r","lp");
     808   def R_r = tolessvars(i,"lp");
     809   setring R_r;
    822810   show(basering);
    823    j;
     811   IMAG;
    824812   kill R_r;
    825813}
     
    876864///////////////////////////////////////////////////////////////////////////////
    877865
    878 proc sortandmap (@id,string @s1,string @s2, list #)
    879 "USAGE:   sortandmap(id,s1,s2[,n1,p1,n2,p2...,o1,m1,o2,m2...]);@*
     866proc sortandmap (@id, list #)
     867"USAGE:   sortandmap(id [,n1,p1,n2,p2...,o1,m1,o2,m2...]);@*
    880868         id=poly/ideal/vector/module,@*
    881          s1,s2 = strings (names for new ring and mapped id),@*
    882869         p1,p2,...= polynomials (product of variables),@*
    883870         n1,n2,...= integers,@*
     
    886873         (default: p1=product of all vars, n1=0, o1=\"dp\",m1=0)
    887874         the last pi (containing the remaining vars) may be omitted
    888 CREATE:  a new ring and map id into it, the new ring has same char as basering
    889          but with new ordering and vars sorted in the following manner:
     875RETURN:  a ring R, in which a poly/ideal/vector/module IMAG is stored: @*
     876         - the ring R differs from the active basering only in the choice
     877         of monomial ordering and in the sorting of the variables.@*
     878         - IMAG is the image (under imap) of the input ideal/module id @*
     879         The new monomial ordering and sorting of vars is as follows:
    890880  @format
    891881  - each block of vars occuring in pi is sorted w.r.t. its complexity in id,
    892882  - ni controls the sorting in i-th block (= vars occuring in pi):
    893     ni=0 (resp.!=0) means that less (resp. more) complex vars come first
     883    ni=0 (resp.!=0) means that least complex (resp. most complex) vars come
     884    first @*
    894885  - oi and mi define the monomial ordering of the i-th block:
    895886    if mi =0, oi=ordstr(i-th block)
     
    898889      in one block
    899890  @end format
    900   Note that only simple ordstrings oi are allowed:
    901   \"lp\",\"dp\",\"Dp\",\"ls\",\"ds\",\"Ds\".
    902 RETURN:  nothing
     891         Note that only simple ordstrings oi are allowed: \"lp\",\"dp\",\"Dp\",
     892         \"ls\",\"ds\",\"Ds\". @*
    903893NOTE:    We define a variable x to be more complex than y (with respect to id)
    904894         if val(x) > val(y) lexicographically, where val(x) denotes the
     
    946936   }
    947937   @o=@o[1..size(@o)-1];
    948 //------------------ create new ring and make objects global -----------------
    949    execute("ring "+@s1+"=("+charstr(@P)+"),("+@va+"),("+@o+");");
    950    def @id = imap(@P,@id);
    951    execute("def "+ @s2+"=@id;");
    952    execute("export("+@s1+");");
    953    execute("export("+@s2+");");
    954    keepring(basering);
    955    return();
     938   execute("ring @S1 =("+charstr(@P)+"),("+@va+"),("+@o+");");
     939   def IMAG = imap(@P,@id);
     940   export IMAG;
     941   dbprint(printlevel-voice+3,"
     942// 'sortandmap' created a ring, in which an object IMAG is stored.
     943// To access the object, type (if the name R was assigned to the return value):
     944        setring R; IMAG; ");
     945   return(@S1);
    956946}
    957947example
     
    959949   ring s = 32003,(x,y,z),dp;
    960950   ideal i=x3+y2,xz+z2;
    961    sortandmap(i,"R_r","i");
    962    // i is now an ideal in the new basering R_r
     951   def R_r=sortandmap(i); 
    963952   show(R_r);
     953   setring R_r; IMAG;
    964954   kill R_r; setring s;
    965    sortandmap(i,"R_r","i",1,xy,0,z,0,"ds",0,"lp",0);
     955   def R_r=sortandmap(i,1,xy,0,z,0,"ds",0,"lp",0);
    966956   show(R_r);
     957   setring R_r; IMAG;
    967958   kill R_r;
    968959}
  • Singular/LIB/solve.lib

    rd1a54b r6ed15c  
    11///////////////////////////////////////////////////////////////////////////////
    2 version="$Id: solve.lib,v 1.28 2005-04-25 16:57:36 Singular Exp $";
     2version="$Id: solve.lib,v 1.29 2005-05-02 07:43:22 Singular Exp $";
    33category="Symbolic-numerical solving";
    44info="
     
    4646         parameters.
    4747RETURN:  list of (complex) roots of the polynomial f, depending on n. The
    48          result is of type
    49  string: if the basering is not complex,
    50  number: otherwise.
     48         result is of type@*
     49          string: if the basering is not complex,@*
     50          number: otherwise.
    5151NOTE:    If printlevel >0: displays comments ( default = 0 ).
    5252         If s != 0 and if the procedure stops with ERROR, try a higher
     
    516516
    517517proc solve( ideal G, list # )
    518 "USAGE:   solve(G [, m, n, l] ); G = ideal,
    519          m, n, l = integers (control parameters of the method)
     518"USAGE:   solve(G [, m, n [, l]] [,\"oldring\"] [,\"nodisplay\"] ); G = ideal,
     519         m, n, l = integers (control parameters of the method), outR ring
    520520         m: precision of output in digits ( 4 <= m) and of the
    521521            generated ring of complex numbers;
     
    525525         l: precision of internal computation in decimal digits ( l >=8 )
    526526            only if the basering is not complex or complex with smaller
    527             precision,
    528          ( default: m, n, l = 8, 0, 30 or
    529                     for (n != 0 and size(#) = 2) l = 60 )
     527            precision, @*
     528         [default: (m,n,l) = (8,0,30), or if only (m,n) are set explicitly
     529          with n!=0, then (m,n,l) = (m,n,60) ]
    530530ASSUME:  the ideal is 0-dimensional;@*
    531          basering has characteristic 0 and is either complex or
    532          without parameters;
    533 RETURN:  list of solutions of the ideal G, depending on n; one solution is a
    534          list of complex numbers in the generated output ring (the new
    535          basering).
    536  The result is a list L
    537     n  = 0: a list of all different solutions (L[i]),
    538     n != 0: a list of two elements,
    539             L[i][1] contains all different solutions with the same multiplicity
    540             L[i][2] the multiplicity
    541  L is ordered w.r.t. multiplicity (the smallest first).
    542 NOTE:    If the problem is not 0-dim. the procedure stops with ERROR, if the
    543          ideal G is not a lex. standard basis, it is generated with internal
    544          computation (Hilbert driven), if the input-ring (with char 0) has
    545          the name \"<A>\", the lexicographical and complex output-ring has the
    546          name \"<A>C\".
     531         basering has characteristic 0 and is either complex or without
     532         parameters;
     533RETURN:  (1) If called without the additional parameter @code{\"oldring\"}: @*
     534         ring @code{R} with the same number of variables but with complex
     535         coefficients (and precision m). @code{R} comes with a list
     536         @code{SOL} of numbers, in which complex roots of G are stored: @*
     537         * If n  = 0, @code{SOL} is the list of all different solutions, each
     538         of them being represented by a list of numbers. @*
     539         * If n != 0, @code{SOL} is a list of two list: SOL[i][1] is the list
     540         of all different solutions with the multiplicity SOL[i][2].@*
     541         SOL is ordered w.r.t. multiplicity (the smallest first). @*
     542         (2) If called with the additional parameter @code{\"oldring\"}, the
     543         procedure looks for an appropriate ring (on the Top level) in which
     544         the solutions can be stored (interactive). @*
     545         The user may then select an appropriate ring and choose a name for
     546         the output list in this ring. The list is exported directly to the
     547         selected ring and the return value is a string \"result exported to\"
     548         + name of the selected ring.
     549NOTE:    If the problem is not 0-dim. the procedure stops with ERROR. If the
     550         ideal G is not a lexicographic Groebner basis, the lexicographic
     551         Groebner basis is computed internally (Hilbert driven).  @*
     552         The computed solutions are displayed, unless @code{solve} is called
     553         with the additional parameter @code{\"nodisplay\"}.
    547554EXAMPLE: example solve; shows an example
    548555"
     
    550557// test if basering admissible
    551558  if (char(basering)!=0){ERROR("characteristic of basering not 0");}
    552   if ((charstr(basering)[1]=="0") and (npars(basering)!=0)){ERROR("basering has parameters");}
     559  if ((charstr(basering)[1]=="0") and (npars(basering)!=0)){
     560    ERROR("basering has parameters");
     561  }
    553562
    554563// some global settings and control
     564  int oldr, nodisp, ii, jj;
     565  list LL;
    555566  int outprec = 8;
    556567  int mu = 0;
    557568  int prec = 30;
    558   if (size(#)>0){outprec = #[1];if (outprec<4){outprec = 4;}}
    559   if (size(#)>1){mu = #[2];}
    560   if (size(#)>2){prec = #[3];if (prec<8){prec = 8;}}
    561   else {if(mu!=0){prec = 60;}}
     569  // check additional parameters...
     570  if (size(#)>0){
     571    int sofar=1;
     572    if (typeof(#[1])=="int"){
     573      outprec = #[1];
     574      if (outprec<4){outprec = 4;}
     575      if (size(#)>1){
     576        if (typeof(#[2])=="int"){
     577          mu = #[2];
     578          if (size(#)>2){
     579            if (typeof(#[3])=="int"){
     580              prec = #[3];
     581              if (prec<8){prec = 8;}
     582            }
     583            else {
     584              if(mu!=0){prec = 60;}
     585              if (#[3]=="oldring"){ oldr=1; }
     586              if (#[3]=="nodisplay"){ nodisp=1; }
     587            }
     588            sofar=3;
     589          }
     590        }
     591        else {
     592          if (#[2]=="oldring"){ oldr=1; }
     593          if (#[2]=="nodisplay"){ nodisp=1; }
     594        }
     595        sofar=2;
     596      }
     597    }
     598    else {
     599      if (#[1]=="oldring"){ oldr=1; }
     600      if (#[1]=="nodisplay"){ nodisp=1; }
     601    }   
     602    for (ii=sofar+1;ii<=size(#);ii++) { // check for additional strings
     603       if (#[ii]=="oldring"){ oldr=1; }
     604       if (#[ii]=="nodisplay"){ nodisp=1; }
     605    }
     606  }   
    562607  if (outprec>prec){prec = outprec;}
    563   string rinC = nameof(basering)+"C";
     608
     609  // if interaktive version is chosen -- choice of basering (Top::`outR`)
     610  // and name for list of solutions (outL):
     611  if (oldr==1) {
     612    list Out;
     613    LL=names(Top);
     614    for (ii=1;ii<=size(LL);ii++)
     615    {
     616      if (typeof(`LL[ii]`)=="ring") {
     617        if (find(charstr(`LL[ii]`),"complex,"+string(outprec))){
     618          jj++;
     619          Out[jj]=LL[ii];
     620        }
     621      }
     622    }
     623    if (size(Out)>0) {
     624      print("// *** You may select between the following rings for storing "+
     625            "the list of");
     626      print("// *** complex solutions:");
     627      Out;
     628      print("// *** Enter the number of the chosen ring");
     629      print("// ***  (0: none of them => new ring created and returned)");
     630      string chosen;
     631      while (chosen=="") { chosen=read(""); }
     632      execute("def tchosen = "+chosen);
     633      if (typeof(tchosen)=="int") {
     634        if ((tchosen>0) and (tchosen<=size(Out))) {
     635          string outR = Out[tchosen];
     636          print("// *** You have chosen the ring "+ outR +". In this ring"
     637                +" the following objects");
     638          print("//*** are defined:");
     639          listvar(Top::`outR`);
     640          print("// *** Enter a name for the list of solutions (different "+
     641                "from existing names):");
     642          string outL;
     643          while (outL==""){ outL=read(""); }
     644        }
     645      }
     646    }
     647    else {
     648      print("No appropriate ring for storing the list of solutions found " +
     649             "=> new ring created and returned");
     650    }
     651    if (not(defined(outR))) { oldr=0; }   
     652  }
     653
     654//  string rinC = nameof(basering)+"C";
    564655  string sord = ordstr(basering);
    565656  int nv = nvars(basering);
     
    578669  if (sb){if (dim(G)!=0){ERROR("ideal not zero-dimensional");}}
    579670
    580 // the trivial homog case
     671// the trivial homogeneous case (unique solution: (0,...0))
    581672  if (homog(G))
    582673  {
     
    587678      ideal G = std(imap(rin,G));
    588679      if (dim(G)!=0){ERROR("ideal not zero-dimensional");}
    589     }
    590     changering(rinC,outprec);
    591     list ret0;
    592     if (mu==0){ret0[1] = zerolist(nv);}
    593     else{ret0[1] = list(zerolist(nv),list(vdim(G)));}
    594     option(set,ovec);
    595     keepring basering;
    596     return(ret0);
     680      int vdG=vdim(G);
     681    }
     682    if (oldr!=1) {
     683      execute("ring rinC =(complex,"+string(outprec)+
     684                 "),("+varstr(basering)+"),lp;");
     685      list SOL;
     686      if (mu==0){SOL[1] = zerolist(nv);}
     687      else{SOL[1] = list(zerolist(nv),list(vdG));}
     688      export SOL;
     689      if (nodisp==0) { print(SOL); }
     690      option(set,ovec);
     691      dbprint( printlevel-voice+3,"
     692// 'solve' created a ring, in which a list SOL of numbers (the complex solutions)
     693// is stored.
     694// To access the list of complex solutions, type (if the name R was assigned
     695// to the return value):
     696        setring R; SOL; ");
     697      return(rinC);
     698    }
     699    else {
     700      setring (Top::`outR`);
     701      list SOL;
     702      if (mu==0){SOL[1] = zerolist(nv);}
     703      else{SOL[1] = list(zerolist(nv),list(vdG));}
     704      execute("def "+outL + "=SOL;");
     705      execute("export "+outL+";");
     706      if (nodisp==0) { print(SOL); }
     707      option(set,ovec);
     708      kill SOL;
     709      return("result exported to "+outR+" as list "+outL);
     710    }
    597711  }
    598712
    599713// look for reduced standard basis in lex
    600   if (sb*lp==0)
    601   {
    602     if (sb==0)
    603     {
    604       execute("ring dphilb=("+charstr(rin)+"),("+
    605       varstr(rin)+"),dp;");
     714  if (sb*lp==0) {
     715    if (sb==0) {
     716      execute("ring dphilb=("+charstr(rin)+"),("+ varstr(rin)+"),dp;");
    606717      ideal G = imap(rin,G);
    607718      G = std(G);
    608719      if (dim(G)!=0){ERROR("ideal not zero-dimensional");}
    609720    }
    610     else
    611     {
     721    else {
    612722      def dphilb = basering;     
    613723    }   
    614     execute("ring lexhilb=("+charstr(rin)+"),("+
    615     varstr(rin)+"),lp;");
     724    execute("ring lexhilb=("+charstr(rin)+"),("+ varstr(rin)+"),lp;");
    616725    option(redTail);
    617726    ideal H = fglm(dphilb,G);
     
    619728    H = simplify(H,2);
    620729    if (lp){setring rin;}
    621     else
    622     {
     730    else {
    623731      execute("ring lplex=("+charstr(rin)+"),("+
    624732      varstr(rin)+"),lp;");
     
    631739// only 1 variable
    632740  def hr = basering;
    633   if (nv==1)
    634   {
    635     if ((mu==0) and (charstr(basering)[1]=="0")) // special case
    636     {
     741  if (nv==1) {
     742    if ((mu==0) and (charstr(basering)[1]=="0")) { // special case
    637743      list L = laguerre_solve(H[1],prec,prec,mu,0); // list of strings
    638       changering(rinC,outprec);
    639       list sp;
    640       for (int ii=1; ii<=size(L); ii++ )
    641       {
    642         execute("sp[ii]="+L[ii]);
    643       }
    644       keepring basering;
    645       return(sp);
    646     }
    647     else
    648     {
     744      if (oldr!=1) {
     745        execute("ring rinC =(complex,"+string(outprec)+
     746                   "),("+varstr(basering)+"),lp;");
     747        list SOL;
     748        for (ii=1; ii<=size(L); ii++ ) { execute("SOL[ii]="+L[ii]+";"); }
     749        export SOL;
     750        if (nodisp==0) { print(SOL); }
     751        option(set,ovec);
     752        dbprint( printlevel-voice+3,"
     753// 'solve' created a ring, in which a list SOL of numbers (the complex solutions)
     754// is stored.
     755// To access the list of complex solutions, type (if the name R was assigned
     756// to the return value):
     757        setring R; SOL; ");
     758        return(rinC);
     759      }
     760      else {
     761        setring (Top::`outR`);
     762        list SOL;
     763        for (ii=1; ii<=size(L); ii++ ) { execute("SOL[ii]="+L[ii]+";"); }
     764        execute("def "+outL + "=SOL;");
     765        execute("export "+outL+";");
     766        if (nodisp==0) { print(SOL); }
     767        option(set,ovec);
     768        kill SOL;
     769        return("result exported to "+outR+" as list "+outL);
     770      }
     771    }
     772    else {
    649773      execute("ring internC=(complex,"+string(prec)+
    650774                 "),("+varstr(basering)+"),lp;");
    651 
    652775      ideal H = imap(hr,H);
    653776      list sp = splittolist(splitsqrfree(H[1],var(1)));
    654       int jj = size(sp);
     777      jj = size(sp);
    655778      while(jj>0)
    656779      {
     
    659782      }
    660783      setring hr;
    661       changering(rinC,outprec);
    662       list sp=imap(internC,sp);
    663 
    664       keepring basering;
    665       if(mu!=0){return(sp);}
    666       jj = size(sp);
    667       list ll=sp[jj][1];
    668       while(jj>1)
    669       {
    670         jj--;
    671         ll = sp[jj][1]+ll;
    672       }
    673       return(ll);
     784      if (oldr!=1) {
     785        execute("ring rinC =(complex,"+string(outprec)+
     786                 "),("+varstr(basering)+"),lp;");
     787        list SOL;
     788        list sp=imap(internC,sp);
     789        if(mu!=0){ SOL=sp; }
     790        else {
     791          jj = size(sp);
     792          SOL=sp[jj][1];
     793          while(jj>1) {
     794            jj--;
     795            SOL = sp[jj][1]+SOL;
     796          }
     797        }
     798        export SOL;
     799        if (nodisp==0) { print(SOL); }
     800        option(set,ovec);
     801        dbprint( printlevel-voice+3,"
     802// 'solve' created a ring, in which a list SOL of numbers (the complex solutions)
     803// is stored.
     804// To access the list of complex solutions, type (if the name R was assigned
     805// to the return value):
     806        setring R; SOL; ");
     807        return(rinC);
     808      }
     809      else {
     810        setring (Top::`outR`);
     811        list SOL;
     812        list sp=imap(internC,sp);
     813        if(mu!=0){ SOL=sp; }
     814        else {
     815          jj = size(sp);
     816          SOL=sp[jj][1];
     817          while(jj>1) {
     818            jj--;
     819            SOL = sp[jj][1]+SOL;
     820          }
     821        }
     822        kill sp;
     823        execute("def "+outL + "=SOL;");
     824        execute("export "+outL+";");
     825        if (nodisp==0) { print(SOL); }
     826        option(set,ovec);
     827        kill SOL;
     828        return("result exported to "+outR+" as list "+outL);
     829      }
    674830    }   
    675831  }   
     
    695851  else
    696852  {
    697     changering(rinC,prec);
     853    execute("ring rinC =(complex,"+string(outprec)+
     854                 "),("+varstr(basering)+"),lp;");
    698855  }
    699856  list triC = imap(hr,sp);
     
    724881// final computations
    725882  option(set,ovec);
    726   if (outprec==prec)
    727   {
    728     keepring basering;
    729     return(ret1);
    730   }
    731   changering(rinC,outprec);
    732   keepring basering;
    733   return(imap(internC,ret1));
     883  if (outprec==prec) { // we are in ring rinC
     884    if (oldr!=1) {
     885      list SOL=ret1;
     886      export SOL;
     887      if (nodisp==0) { print(SOL); }
     888      dbprint( printlevel-voice+3,"
     889// 'solve' created a ring, in which a list SOL of numbers (the complex solutions)
     890// is stored.
     891// To access the list of complex solutions, type (if the name R was assigned
     892// to the return value):
     893        setring R; SOL; ");
     894      return(rinC);
     895    }
     896    else {
     897      setring (Top::`outR`);
     898      list SOL=imap(rinC,ret1);
     899      execute("def "+outL + "=SOL;");
     900      execute("export "+outL+";");
     901      if (nodisp==0) { print(SOL); }
     902      kill SOL;
     903      return("result exported to "+outR+" as list "+outL);   
     904    }
     905  }
     906  else {
     907    if (oldr!=1) {
     908      execute("ring rinC =(complex,"+string(outprec)+
     909                 "),("+varstr(basering)+"),lp;");
     910      list SOL=imap(internC,ret1);
     911      export SOL;
     912      if (nodisp==0) { print(SOL); }
     913      dbprint( printlevel-voice+3,"
     914// 'solve' created a ring, in which a list SOL of numbers (the complex solutions)
     915// is stored.
     916// To access the list of complex solutions, type (if the name R was assigned
     917// to the return value):
     918        setring R; SOL; ");
     919      return(rinC);
     920    }
     921    else {
     922      setring (Top::`outR`);
     923      list SOL=imap(internC,ret1);
     924      execute("def "+outL + "=SOL;");
     925      execute("export "+outL+";");
     926      if (nodisp==0) { print(SOL); }
     927      kill SOL;
     928      return("result exported to "+outR+" as list "+outL);   
     929    }
     930  }
    734931}
    735932example
     
    737934    "EXAMPLE:";echo=2;
    738935    // Find all roots of a multivariate ideal using triangular sets:
    739     int d=4;// with these 3 parameters you may construct
    740     int t=3;// very hard problems for 'solve'
    741     int s=2;
     936    int d,t,s = 4,3,2 ;
    742937    int i;
    743     ring A=0,(x(1..d)),dp;
     938    ring A=0,x(1..d),dp;
    744939    poly p=-1;
    745     for(i=d;i>0;i--){p=p+x(i)^s;}
    746     ideal I=x(d)^t-x(d)^s+p;
    747     for(i=d-1;i>0;i--){I=x(i)^t-x(i)^s+p,I;}
     940    for (i=d; i>0; i--) { p=p+x(i)^s; }
     941    ideal I = x(d)^t-x(d)^s+p;
     942    for (i=d-1; i>0; i--) { I=x(i)^t-x(i)^s+p,I; }
    748943    I;
    749     // the mutiplicity is
     944    // the multiplicity is
    750945    vdim(std(I));
    751     list l1=solve(I,6,0);
    752     // the current ring is
    753     AC;
     946    def AC=solve(I,6,0,"nodisplay");  // solutions should not be displayed
     947    // list of solutions is stored in AC as the list SOL (default name)
     948    setring AC;
     949    size(SOL);               // number of different solutions
     950    SOL[5];                  // the 5th solution
    754951    // you must start with char. 0
    755952    setring A;
    756     list l2=solve(I,6,1);
    757     // the number of different solutions is
    758     size(l1);
    759     // this is equal to
    760     size(l2[1][1])+size(l2[2][1]);
    761     // the number of solutions with multiplicity is
    762     size(l2[1][1])*l2[1][2]+size(l2[2][1])*l2[2][2];
    763     // the solutions with multiplicity
    764     l2[2][2];
    765     // are
    766     l2[2][1];
     953    def AC1=solve(I,6,1,"nodisplay");
     954    setring AC1;
     955    size(SOL);               // number of different multiplicities
     956    SOL[1][1][1];            // a solution with
     957    SOL[1][2];               // multiplicity 1
     958    SOL[2][1][1];            // a solution with
     959    SOL[2][2];               // multiplicity 12
     960    // the number of different solutions is equal to
     961    size(SOL[1][1])+size(SOL[2][1]);
     962    // the number of complex solutions (counted with multiplicities) is
     963    size(SOL[1][1])*SOL[1][2]+size(SOL[2][1])*SOL[2][2];
    767964}
    768965//////////////////////////////////////////////////////////////////////////////
    769966//                subprocedures for solve
    770967
    771 /* ----------------------- support ----------------------- */
    772 /*
    773 * the complex ring with precision outprec
    774 * has the well defined name: rinC
    775 * 1. if such a ring exists with the precision outprec,
    776 *    this will be the current ring
    777 * 2. otherwise such a ring will be created
    778 */
    779 static proc changering(string rinC, int outprec)
    780 {
    781   string rinDC = "ring "+rinC+"=(complex,"+string(outprec)+
    782                  "),("+varstr(basering)+"),lp;";
    783   string h = "int ex=defined("+rinC+");";
    784 
    785   execute(h);
    786   if (ex)
    787   {
    788     h = "setring "+rinC+";";
    789     execute(h);
    790     if (system("getPrecDigits")==outprec)
    791     {"// name of current ring: "+rinC;}
    792     else
    793     {
    794       execute("kill "+rinC+";");
    795       execute(rinDC);
    796       execute("export "+rinC+";");
    797       "// name of new current ring: "+rinC;
    798     }
    799   }
    800   else
    801   {
    802     execute(rinDC);
    803     execute("export "+rinC+";");
    804     "// name of new current ring: "+rinC;
    805   }
    806   keepring basering;
    807 }
    808968
    809969/*
     
    13351495    interpolate( 3, v, 4 );
    13361496}
     1497
    13371498///////////////////////////////////////////////////////////////////////////////
    1338 
     1499// changed for Singular 3
     1500// Return value is now a list: (rlist, rn@)
    13391501static proc psubst( int d, int dd, int n, list resl,
    1340                     ideal fi, int elem, int nv, int prec )
     1502                    ideal fi, int elem, int nv, int prec, int rn@, list rlist)
    13411503{
    13421504    //   nv: number of ring variables         (fixed value)
     
    13491511    //    d: actual variable
    13501512
     1513    list LL;
     1514    int pdebug;
    13511515    int olddd=dd;
    13521516
    1353     if ( pdebug>=1 )
    1354     {"// 0 step "+string(dd)+" of "+string(elem);}
     1517    dbprint(printlevel-voice+2, "// 0 step "+string(dd)+" of "+string(elem) );
    13551518
    13561519    if ( dd <= elem )
     
    13621525        int thedd;
    13631526
    1364         if ( pdebug>=1 )
    1365         {"// 1 dd = "+string(dd);}
     1527        dbprint( printlevel-voice+1,"// 1 dd = "+string(dd) );
    13661528
    13671529        thedd=0;
     
    13721534            if ( n-1 > 0 )
    13731535            {
    1374                 if ( pdebug>=2 )
    1375                 {
     1536                dbprint( printlevel-voice,
    13761537                    "// 2 ps=fi["+string(dd+1)+"]"+" size="
    13771538                        +string(size(coeffs(ps,var(n-1))))
    1378                         +"  leadexp(ps)="+string(leadexp(ps));
    1379                 }
     1539                        +"  leadexp(ps)="+string(leadexp(ps)) );
     1540
    13801541                if ( size(coeffs(ps,var(n-1))) == 1 )
    13811542                {
     
    13921553            else
    13931554            {
    1394                 if ( pdebug>=2 )
    1395                 {
     1555                dbprint( printlevel-voice,
    13961556                    "// 2 ps=fi["+string(dd+1)+"]"+"  leadexp(ps)="
    1397                         +string(leadexp(ps));
    1398                 }
     1557                        +string(leadexp(ps)) );
    13991558                dd++;
    14001559            }
     
    14031562        ps= fi[thedd];
    14041563
    1405         if ( pdebug>=1 )
    1406         {
     1564        dbprint( printlevel-voice+1,
    14071565            "// 3    fi["+string(thedd-1)+"]"+"  leadexp(fi[thedd-1])="
    1408                 +string(leadexp(fi[thedd-1]));
     1566                +string(leadexp(fi[thedd-1])) );
     1567        dbprint( printlevel-voice+1,
    14091568            "// 3 ps=fi["+string(thedd)+"]"+"  leadexp(ps)="
    1410                 +string(leadexp(ps));
    1411         }
     1569                +string(leadexp(ps)) );
    14121570
    14131571        for ( k= nv; k > nv-d; k-- )
    14141572        {
    1415             if ( pdebug>=2 )
    1416             {
     1573            dbprint( printlevel-voice,
    14171574                "// 4 subst(fi["+string(thedd)+"],"
    1418                     +string(var(k))+","+string(resl[k])+");";
    1419             }
     1575                    +string(var(k))+","+string(resl[k])+");" );
    14201576            ps = subst(ps,var(k),resl[k]);
    14211577        }
    14221578
    1423         if ( pdebug>=2 )
    1424         { "// 5 substituted ps="+string(ps); }
     1579        dbprint( printlevel-voice, "// 5 substituted ps="+string(ps) );
    14251580
    14261581        if ( ps != 0 )
     
    14301585        else
    14311586        {
    1432             if ( pdebug>=1 )
    1433             { "// 30 ps == 0, thats not cool..."; }
    1434             lsr=@ln; // lsr=number(0);
     1587            dbprint( printlevel-voice+1,"// 30 ps == 0, thats not cool...");
     1588            lsr=list(number(0));
    14351589        }
    14361590
    1437         if ( pdebug>=1 )
    1438         { "// 6 laguerre_solve found roots: lsr["+string(size(lsr))+"]"; }
     1591        dbprint( printlevel-voice+1,
     1592         "// 6 laguerre_solve found roots: lsr["+string(size(lsr))+"]" );
    14391593
    14401594        if ( size(lsr) > 1 )
    14411595        {
    1442             if ( pdebug>=1 )
    1443             {
     1596            dbprint( printlevel-voice+1, 
    14441597                "// 10 checking roots found before, range "
    1445                     +string(dd-olddd)+" -- "+string(dd);
    1446                 "// 10 thedd = "+string(thedd);
    1447             }
     1598                    +string(dd-olddd)+" -- "+string(dd) );
     1599            dbprint( printlevel-voice+1, 
     1600                "// 10 thedd = "+string(thedd) );
    14481601
    14491602            int i,j,l;
     
    15251678                "Numerical problem: No root found...";
    15261679                "Output may be incorrect!";
    1527                 nares=@ln;
     1680                nares=list(number(0));
    15281681            }
    15291682
     
    15411694                        rn@++; 
    15421695                    }
    1543                     psubst( d+1, dd+1, n-1, resl, fi, elem, nv, prec );
     1696                    LL = psubst( d+1, dd+1, n-1, resl, fi, elem, nv, prec,
     1697                                 rn@, rlist );
     1698                    rlist = LL[1];
     1699                    rn@ = LL[2];
    15441700                }
    15451701                else
    15461702                {
    1547                     if ( i > 1 ) {  rn@++; }  //bug found by O.Labs
    1548                     if ( pdebug>=1 )
    1549                     {"// 30_1 <"+string(rn@)+"> "+string(size(resl))+" <-----";}
    1550                     if ( pdebug>=2 )
    1551                     { resl; }
    1552                     rlist[rn@]=resl;
     1703                   if ( i > 1 ) {  rn@++; }  //bug found by O.Labs
     1704                   if ( pdebug>=1 )
     1705                   {"// 30_1 <"+string(rn@)+"> "+string(size(resl))+" <-----";}
     1706                   if ( pdebug>=2 ){ resl; }
     1707                   rlist[rn@]=resl;
    15531708                }
    15541709            }
     
    15621717            if ( dd < elem )
    15631718            {
    1564                 psubst( d+1, dd+1, n-1, resl, fi, elem, nv, prec );
     1719                LL= psubst( d+1, dd+1, n-1, resl, fi, elem, nv, prec,
     1720                            rn@, rlist );
     1721                rlist = LL[1];
     1722                rn@ = LL[2];
    15651723            }
    15661724            else
     
    15741732        }
    15751733    }
     1734    return(list(rlist,rn@));
    15761735}
    15771736
     
    15811740"USAGE:   fglm_solve(i [, p] ); i ideal, p integer
    15821741ASSUME:  the ground field has char 0.
    1583 RETURN:  a list of numbers, the complex roots of i;
    1584          p>0: gives precision of complex numbers in decimal digits (default:
    1585          p=30).
     1742RETURN:  ring @code{R} with the same number of variables but with complex
     1743         coefficients (and precision p). @code{R} comes with a list
     1744         @code{rlist} of numbers, in which the complex roots of i are stored.@*
     1745         p>0: gives precision of complex numbers in decimal digits [default:
     1746         p=30].
    15861747NOTE:    The procedure uses a standard basis of i to determine all complex
    15871748         roots of i.
    1588          It creates a ring rC with the same number of variables but with
    1589          complex coefficients (and precision p).
    15901749EXAMPLE: example fglm_solve; shows an example
    15911750"
     
    15981757    }
    15991758
    1600     lex_solve(stdfglm(fi),prec);
    1601     keepring basering;
     1759    def R = lex_solve(stdfglm(fi),prec);
     1760    dbprint( printlevel-voice+3,"
     1761// 'fglm_solve' created a ring, in which a list rlist of numbers (the
     1762// complex solutions) is stored.
     1763// To access the list of complex solutions, type (if the name R was assigned
     1764// to the return value):
     1765        setring R; rlist; ");
     1766    return(R);
    16021767}
    16031768example
     
    16061771    ring r = 0,(x,y),lp;
    16071772    // compute the intersection points of two curves
    1608     ideal s=  x2 + y2 - 10, x2 + xy + 2y2 - 16;
    1609     fglm_solve(s,10);
    1610     rlist;
     1773    ideal s =  x2 + y2 - 10, x2 + xy + 2y2 - 16;
     1774    def R = fglm_solve(s,10);
     1775    setring R; rlist;
    16111776}
    16121777
     
    16181783ASSUME:  i is a reduced lexicographical Groebner bases of a zero-dimensional
    16191784         ideal, sorted by increasing leading terms.
    1620 RETURN:  nothing
    1621 CREATE:  The procedure creates a complec ring with the same variables but
    1622          with complex coefficients (and precision p).
    1623          In this ring a list rlist of numbers is created, in which the complex
    1624          roots of i are stored.
     1785RETURN:  ring @code{R} with the same number of variables but with complex
     1786         coefficients (and precision p). @code{R} comes with a list
     1787         @code{rlist} of numbers, in which the complex roots of i are stored.
    16251788EXAMPLE: example lex_solve; shows an example
    16261789"
    16271790{
    16281791    int prec=30;
     1792    list LL;
    16291793
    16301794    if ( size(#)>=1  && typeof(#[1])=="int")
     
    16331797    }
    16341798
    1635     if ( !defined(pdebug) )
    1636     {
    1637         int pdebug;
    1638         pdebug=0;
    1639         export pdebug;
    1640     }
    1641 
    1642     string orings= nameof(basering);
     1799    if ( !defined(pdebug) ) { int pdebug; }
    16431800    def oring= basering;
    16441801
    16451802    // change the ground field to complex numbers
    1646     string nrings= "ring "+orings+"C=(complex,"+string(prec)
     1803    string nrings= "ring RC =(complex,"+string(prec)
    16471804        +"),("+varstr(basering)+"),lp;";
    16481805    execute(nrings);
    16491806
    1650     if ( pdebug>=0 )
    1651     { "// name of new ring: "+string(nameof(basering));}
    1652 
    16531807    // map fi from old to new ring
    16541808    ideal fi= imap(oring,fi);
    1655 
    1656     // list with entry 0 (number)
    1657     number nn=0;
    1658     if ( !defined(@ln) )
    1659     {
    1660         list @ln;
    1661         export @ln;
    1662     }
    1663     @ln=nn;
    16641809
    16651810    int idelem= size(fi);
     
    16741819    }
    16751820
    1676     if ( !defined(rn@) )
    1677     {
    1678         int rn@;
    1679         export rn@;
    1680     }
    1681     rn@=0;
    1682 
    16831821    li= laguerre_solve(fi[1],prec,prec,0);
    16841822    lis= size(li);
    16851823
    1686     if ( pdebug>=1 )
    1687     {"// laguerre found roots: "+string(size(li));}
     1824    dbprint(printlevel-voice+2,"// laguerre found roots: "+string(size(li)));
     1825    int rn@;
    16881826
    16891827    for ( j= 1; j <= lis; j++ )
    16901828    {
    1691         if ( pdebug>=1 )
    1692         {"// root "+string(j);}
     1829        dbprint(printlevel-voice+1,"// root "+string(j) );
    16931830        rn@++;
    16941831        resl[nv]= li[j];
    1695         psubst( 1, 2, nv-1, resl, fi, idelem, nv, prec );
    1696     }
    1697 
    1698     if ( pdebug>=0 )
    1699     {"// list of roots: "+nameof(rlist);}
    1700 
    1701     // keep the ring and exit
    1702     keepring basering;
     1832        LL = psubst( 1, 2, nv-1, resl, fi, idelem, nv, prec, rn@, rlist );
     1833        rlist=LL[1];
     1834        rn@=LL[2];
     1835    }
     1836
     1837    dbprint( printlevel-voice+3,"
     1838// 'lex_solve' created a ring, in which a list rlist of numbers (the
     1839// complex solutions) is stored.
     1840// To access the list of complex solutions, type (if the name R was assigned
     1841// to the return value):
     1842        setring R; rlist; ");
     1843
     1844    return(RC);
    17031845}
    17041846example
     
    17071849    ring r = 0,(x,y),lp;
    17081850    // compute the intersection points of two curves
    1709     ideal s=  x2 + y2 - 10, x2 + xy + 2y2 - 16;
    1710     lex_solve(stdfglm(s),10);
    1711     rlist;
     1851    ideal s =  x2 + y2 - 10, x2 + xy + 2y2 - 16;
     1852    def R = lex_solve(stdfglm(s),10);
     1853    setring R; rlist;
    17121854}
    17131855
     
    17181860         p>0: gives precision of complex numbers in digits (default: p=30).
    17191861ASSUME:  the ground field has char 0;  i is a zero-dimensional ideal
    1720 RETURN:  nothing
    1721 CREATE:  The procedure creates a ring rC with the same number of variables but
    1722          with complex coefficients (and precision p).@*
    1723          In rC a list rlist of numbers is created, in which the complex
    1724          roots of i are stored.@*
    1725          The proc uses a triangular system (Lazard's Algorithm with
    1726          factorization) computed from a standard basis to determine recursively
    1727          all complex roots with Laguerre's algorithm of input ideal i.
     1862RETURN:  ring @code{R} with the same number of variables but with complex
     1863         coefficients (and precision p). @code{R} comes with a list
     1864         @code{rlist} of numbers, in which the complex roots of i are stored.
     1865NOTE:    The proc uses a triangular system (Lazard's Algorithm with
     1866         factorization) computed from a standard basis to determine
     1867         recursively all complex roots of the input ideal i with Laguerre's
     1868         algorithm.
    17281869EXAMPLE: example triangLf_solve; shows an example
    17291870"
     
    17361877    }
    17371878
    1738     triang_solve(triangLfak(stdfglm(fi)),prec);
    1739     keepring basering;
     1879    def R=triang_solve(triangLfak(stdfglm(fi)),prec);
     1880    dbprint( printlevel-voice+3,"
     1881// 'triangLf_solve' created a ring, in which a list rlist of numbers (the
     1882// complex solutions) is stored.
     1883// To access the list of complex solutions, type (if the name R was assigned
     1884// to the return value):
     1885        setring R; rlist; ");
     1886    return(R);
    17401887}
    17411888example
     
    17441891    ring r = 0,(x,y),lp;
    17451892    // compute the intersection points of two curves
    1746     ideal s= x2 + y2 - 10, x2 + xy + 2y2 - 16;
    1747     triangLf_solve(s,10);
    1748     rlist;
     1893    ideal s = x2 + y2 - 10, x2 + xy + 2y2 - 16;
     1894    def R = triangLf_solve(s,10);
     1895    setring R; rlist;
    17491896}
    17501897
     
    17561903ASSUME:  the ground field has char 0;@*
    17571904         i zero-dimensional ideal
    1758 RETURN:  nothing
    1759 CREATE:  The procedure creates a ring rC with the same number of variables but
    1760          with complex coefficients (and precision p).@*
    1761          In rC a list rlist of numbers is created, in which the complex
    1762          roots of i are stored.@*
    1763          The proc uses a triangular system (Moellers Algorithm) computed from a
     1905RETURN:  ring @code{R} with the same number of variables but with complex
     1906         coefficients (and precision p). @code{R} comes with a list
     1907         @code{rlist} of numbers, in which the complex roots of i are stored.
     1908NOTE:    The proc uses a triangular system (Moellers Algorithm) computed from a
    17641909         standard basis to determine recursively all complex roots with
    17651910         Laguerre's algorithm of input ideal i.
     
    17741919    }
    17751920
    1776     triang_solve(triangM(stdfglm(fi)),prec);
    1777     keepring basering;
     1921    def R = triang_solve(triangM(stdfglm(fi)),prec);
     1922    dbprint( printlevel-voice+3,"
     1923// 'triangM_solve' created a ring, in which a list rlist of numbers (the
     1924// complex solutions) is stored.
     1925// To access the list of complex solutions, type (if the name R was assigned
     1926// to the return value):
     1927        setring R; rlist; ");
     1928    return(R);
    17781929}
    17791930example
     
    17821933    ring r = 0,(x,y),lp;
    17831934    // compute the intersection points of two curves
    1784     ideal s=  x2 + y2 - 10, x2 + xy + 2y2 - 16;
    1785     triangM_solve(s,10);
    1786     rlist;
     1935    ideal s =  x2 + y2 - 10, x2 + xy + 2y2 - 16;
     1936    def R = triangM_solve(s,10);
     1937    setring R; rlist;
    17871938}
    17881939
     
    17931944         p>0: gives precision of complex numbers in digits (default: p=30).
    17941945ASSUME:  the ground field has char 0; i is a zero-dimensional ideal.
    1795 RETURN:  nothing
    1796 CREATE:  The procedure creates a ring rC with the same number of variables but
    1797          with complex coefficients (and precision p).@*
    1798          In rC a list rlist of numbers is created, in which the complex
    1799          roots of i are stored.@*
    1800          The proc uses a triangular system (Lazard's Algorithm) computed from
     1946RETURN:  ring @code{R} with the same number of variables but with complex
     1947         coefficients (and precision p). @code{R} comes with a list
     1948         @code{rlist} of numbers, in which the complex roots of i are stored.
     1949NOTE:    The proc uses a triangular system (Lazard's Algorithm) computed from
    18011950         a standard basis to determine recursively all complex roots with
    18021951         Laguerre's algorithm of input ideal i.
     
    18111960    }
    18121961
    1813     triang_solve(triangL(stdfglm(fi)),prec);
    1814     keepring basering;
     1962    def R=triang_solve(triangL(stdfglm(fi)),prec);
     1963    dbprint( printlevel-voice+3,"
     1964// 'triangL_solve' created a ring, in which a list rlist of numbers (the
     1965// complex solutions) is stored.
     1966// To access the list of complex solutions, type (if the name R was assigned
     1967// to the return value):
     1968        setring R; rlist; ");
     1969    return(R);
    18151970}
    18161971example
     
    18191974    ring r = 0,(x,y),lp;
    18201975    // compute the intersection points of two curves
    1821     ideal s=  x2 + y2 - 10, x2 + xy + 2y2 - 16;
    1822     triangL_solve(s,10);
    1823     rlist;
     1976    ideal s =  x2 + y2 - 10, x2 + xy + 2y2 - 16;
     1977    def R = triangL_solve(s,10);
     1978    setring R; rlist;
    18241979}
    18251980
     
    18281983
    18291984proc triang_solve( list lfi, int prec, list # )
    1830 "USAGE:   triang_solve(l,p [, d] ); l=list, p,d=integers,@*
     1985"USAGE:   triang_solve(l,p [,d] ); l=list, p,d=integers@*
    18311986         l a list of finitely many triangular systems, such that the union of
    18321987         their varieties equals the variety of the initial ideal.@*
     
    18371992         l was computed using Algorithm of Lazard or Algorithm of Moeller
    18381993         (see triang.lib).
    1839 RETURN:  nothing
    1840 CREATE:  The procedure creates a ring rC with the same number of variables but
    1841          with complex coefficients (and precision p).@*
    1842          In rC a list rlist of numbers is created, in which the complex
    1843          roots of i are stored.@*
     1994RETURN:  ring @code{R} with the same number of variables but with complex
     1995         coefficients (and precision p). @code{R} comes with a list
     1996         @code{rlist} of numbers, in which the complex roots of l are stored.@*
    18441997EXAMPLE: example triang_solve; shows an example
    18451998"
    18461999{
    1847     if ( !defined(pdebug) )
    1848     {
    1849         int pdebug;
    1850         export pdebug;
    1851     }
    1852     pdebug=0;
    1853 
    1854     string orings= nameof(basering);
    18552000    def oring= basering;
     2001    list LL;
    18562002
    18572003    // change the ground field to complex numbers
    1858     string nrings= "ring "+orings+"C=(real,"+string(prec)
     2004    string nrings= "ring RC =(complex,"+string(prec)
    18592005        +",I),("+varstr(basering)+"),lp;";
    18602006    execute(nrings);
    18612007
    1862     if ( pdebug>=0 )
    1863     { "// name of new ring: "+string(nameof(basering));}
    1864 
    18652008    // list with entry 0 (number)
    18662009    number nn=0;
    1867     if ( !defined(@ln) )
    1868     {
    1869         list @ln;
    1870         export @ln;
    1871     }
    1872     @ln=nn;
    18732010
    18742011    // set number of digits for zero-comparison of roots
     
    18762013    {
    18772014        int myCompDigits;
    1878         export  myCompDigits;
    18792015    }
    18802016    if ( size(#)>=1  && typeof(#[1])=="int" )
     
    18872023    }
    18882024
    1889     if ( pdebug>=1 )
    1890     {"// myCompDigits="+string(myCompDigits);}
     2025    dbprint( printlevel-voice+2,"// myCompDigits="+string(myCompDigits) );
    18912026
    18922027    int idelem;
    18932028    int nv= nvars(basering);
    1894     int i,j,k,lis;
     2029    int i,j,lis;
    18952030    list resu,li;
    18962031
     
    19012036    }
    19022037
    1903     if ( !defined(rn@) )
    1904     {
    1905         int rn@;
    1906         export rn@;
    1907     }
    1908     rn@=0;
     2038    int rn@=0;
    19092039
    19102040    // map the list
    19112041    list lfi= imap(oring,lfi);
    1912 
    19132042    int slfi= size(lfi);
     2043
    19142044    ideal fi;
    1915 
    19162045    for ( i= 1; i <= slfi; i++ )
    19172046    {
     
    19252054        lis= size(li);
    19262055
    1927         if ( pdebug>=1 )
    1928         {"// laguerre found roots: "+string(size(li));}
     2056        dbprint( printlevel-voice+2,"// laguerre found roots: "+string(lis) );
    19292057
    19302058        for ( j= 1; j <= lis; j++ )
    19312059        {
    1932             if ( pdebug>=1 )
    1933             {"// root "+string(j);}
     2060            dbprint( printlevel-voice+2,"// root "+string(j) );
    19342061            rn@++;
    19352062            resu[nv]= li[j];
    1936             psubst( 1, 2, nv-1, resu, fi, idelem, nv, myCompDigits );
     2063            LL = psubst( 1, 2, nv-1, resu, fi, idelem, nv, myCompDigits,
     2064                         rn@, rlist );
     2065            rlist = LL[1];
     2066            rn@ = LL[2];
    19372067        }
    19382068    }
    19392069
    1940     if ( pdebug>=0 )
    1941     {"// list of roots: "+nameof(rlist);}
    1942     // keep the ring and exit
    1943     keepring basering;
     2070    dbprint( printlevel-voice+3,"
     2071// 'triang_solve' created a ring, in which a list rlist of numbers (the
     2072// complex solutions) is stored.
     2073// To access the list of complex solutions, type (if the name R was assigned
     2074// to the return value):
     2075        setring R; rlist; ");
     2076
     2077    return(RC);
    19442078}
    19452079example
     
    19492083    // compute the intersection points of two curves
    19502084    ideal s=  x2 + y2 - 10, x2 + xy + 2y2 - 16;
    1951     triang_solve(triangLfak(stdfglm(s)),10);
    1952     rlist;
     2085    def R=triang_solve(triangLfak(stdfglm(s)),10);
     2086    setring R; rlist;
    19532087}
    19542088
  • Tst/Long/solve_l.res.gz.uu

    rd1a54b r6ed15c  
    11begin 640 solve_l.res.gz
    2 M'XL(""Q>X$```W-O;'9E7VPN<F5S`.U=6V\;1[)^]Z\8&'D010[5]XL#^6&S
    3 M^V!@SWG)P7D)$D.[D6P"LF1(BI?VK]^OAUW5/>1('"HF`@AC&)8X4UU=]?6E
    4 M+NPN__Q_?W_WOTW3R+?-V=FKG_,GM<2GYO[V^LOE^_OEP_U#TS;W'V_O'IJ'
    5 MR_N'^^;J]JYA8KTLOYME\\]W?VM>H\GR>O6OUS_R&_NVP</WJYO5P\GLQU?I
    6 M9_/V;>[C>GES^9_E_</%`].[3/_AYO;N\N3U3___<_/N[\T/[WY_PVWP?O&E
    7 MD4O5R!CCF91G,C32O='AC;;-[;\N_OWQT\5-\X_UY^:'U^@3*A66;YH_RY)%
    8 M]6\+`"$#T#'<@B`6.BD2PH__83I9P)48E0J2YO7=ZN9#<W<OF_-&+$[6BZ^+
    9 M;[/%]><?7S>[RCY&R\SUVRV:CXL!*E.I8)?-Y]OKK\V5.&_6\Z_S;W-9"#%\
    10 MFY<2+W]3S;QQIVO\JT^_=K]_PXPRA=P3N3IOOG;D"N2M[ZAM]_%;H0Y$K8GY
    11 MILTW_-LVE11`?/7[Y<5ULSJ_DHLKM;C2_%()?OGI_$HL=@ED458!^S_N+N_?
    12 M=^-Z\O'VT^V'D]7BXVPA@?4O\M<WKS#`]!-_6K&4T7LMK%+26Q6EM"I$+:2*
    13 MUDBA.WK%]&(90O`^6.F,-D8[K[TR4>BHO!-!=N2Z(C=2FRB],,(&J81USAJ%
    14 M28LN@_*OB'4E4FKCC?!1ZA"LU58J%X-344`V(\.`1'CNHQ/66R.T=5J"UIL8
    15 MA3=V2R(HK""&U<9:Y4(T446=_EHEM58BO"+B2J23UBVALY86>@KA`(T+`A`H
    16 M;:.%]F;^[M0M#9!34AJ1%/!..>-\"#HZ;9Q2LRW!3R`*9!:`4-D$JD1;K:&Z
    17 MD,';J!28ZJ6$5M8$&0"DL]+C-V<,."L1E9UMJ7?BEM$!"N6U]!IHV:"DTE$;
    18 MC4=:=W):C?'6&`(EG(XQ8.2$LR+!XHV<O?K%/`.!]A@(M-\?@784`G8``;LT
    19 M7@43H;?T^(-9IH-T6#<&784T7&&I++K!!`_:A"2S$\Y%*?!$0X@=!/S2A>`L
    20 M]--8;!`:=%HZB?7E78"L9HE5Y8,727Y`[8)+N.)W`QVMVU$_+,$N*A,<-(_.
    21 M1FDP)B+B$;!PII,RF&[!`G/CA=#@CA7AH!N@LQBG7]PS]&^_N_[S(^C?CM+?
    22 M[^J/G=($C2F=I@TFF+$@UD``:F*[D7FPM$XH81Z+3E8KTP9H,<.<L3OJNZ70
    23 M$K):8Y2/WF'-`+F@C,9T]"*"IUA"=AUE,-)(,()&R@-=B6YL&H0=!+##^0"M
    24 M%/9S;(T0$M@#T8BEAMW.=:A"S)@6A(7V$ATZAZ&,V-?3%NV!0#@<@?D1$)@?
    25 M`X%V#`)D4N%Q?/K\/AG53Q</9%(_D4U]#X#./YY^N+PYD;.V^R%F<]L]"+/6
    26 M=+]`[?=0.M.IV7S=:^"H@3340LK97&4F<U>8:&*B9_.O/2:1F7AFHF9P33(3
    27 M79@88F)F\V\U$\6B2Y9=ZF%)[*_GZZS.IBUKH5@+Q5I`L]PX:48P,3-'$CG"
    28 MAO4C]JR?8OU@48B])TVKCA0IC2[1AZ<^//7!ZN<^-*NO6'W%Z@.2765TI1;Z
    29 M"+^>?\WB;SAJXJ@E2^A9+M6'(B06D<2,A`"+24P-,U4LIF7VH0*%.M(5*&G*
    30 MBE_/OV7>&Y:VUK+HEJ5+33#-%0UOIE`TE"[_[#"0BF:&(Z:*AZ=JS,/#;&+^
    31 MN9%1$QO/;%BUBHW>ED9E-"%_8F-H2%B:,A2*$5)J2Q73-;:\MBU-&AX63\-2
    32 M&/-ZJR3U+)_ESG0%0NK&T7#T5"T*9LD2*69Q[D-OP^8[`IZ"D831JM*<1+!;
    33 M8'5S3T82)%8Z5?+G_M)NABF4&:1/,G_*\*EN)BB5GV8)-]HJO7FJ<]>J&R=E
    34 M\M.L+G/J!D+Q;B.S%&D19*G2>Y=;6VZ=GOJM_CN$%"/$O$B2#@3%(-![U6FL
    35 M!<N=/LF^O+K36&>-23K=::QU7SK=::P-TZ9/EFG8\E11K++#0;4Z(*C>H67F
    36 M[NU^FBI[H,)V2%W(XD$!M1:'!-1:C@RHM7HBH-9Z3T"M*]RU[074JRF*GJ+H
    37 M*8J>HN@IBIZBZ"F*'A]%:]>+HE>?*'2NG="0W:,<T>:@6?7"QD!>+4<LBF/6
    38 M'""K7G#%;G!QTSG*R\%P'>WXS0^30]RZ:_(&<\!:8L$<)9586U&'ML3+V1<E
    39 MGS)2=YNHL6:587`Y&JQCFTC2M2R))$=\*YCT&QI+P5O/A?<<(K7]P"U#*IBN
    40 M"JL+KK8*>24CSG$<CY$L826#GJ,[TQ]ZAE%1W*7Z<5FLPV?%W#EODL.H7L04
    41 MMB.G'D?"P%+8E,.-?E#%<5$=E/!;E_$S6R%1E>N@O`M%49Q7Z<5-<C=KX>B1
    42 MYB"_%U1Q8):PT_T,C>MGGG0!QC%TF@(]ET//W,35X5@)M*ML`NL7J4V@($WU
    43 MHTO#`3''H$E52[.L"MV4V\T,2%\)3+B9LJE4,8E&3'+UX?H3.>H+A&E=('1S
    44 M\>FRN;UJ;B[_TP4Y;U*4\U-Z<[VZ?TAO[FYO'^[Q.'UF=HACN@>#_O[W=:[=
    45 MX<[UKK__G4.0@R.0`7=_KZE?'<'4KXYAZE=C3/V`N[_7U!\!@?DQ$&A'(3#D
    46 M[C\=\!A(^W2\H_TS(K[5]X_X5F/BG2%_?P\`[3$`:+\_`.TH``8<_GT!3P"T
    47 M3P<\*4'8'!3PK8X0\*W&!#P#[OY>_=OOKO_\"/JW8_3/QM.(8I>-7#;WEP^4
    48 M7N0DFU%O&SR]N/GPSS]KLO'\]+2YN_S]\FIUD_OYB?O1DR$_NB%_63'[<PSY
    49 MBXK9GV7(]R4NGV7(_ZK4[7,,^3$`^,LRM\\RY/LREX<;\K\L<_LL0_[=]?_+
    50 M,K=D/*MOPHQ]Q)`[-N17Q[7D?K+DDR6?+/EDR2=+/EGRR9(?9LE#9<GCL"6W
    51 M@BSY_QS5D%LY&?+)D$^&?#+DDR&?#/EDR`\RY%850V[UN-NYUI3;N?:1@\0Z
    52 M'_R5B[5:K/6^L\1#Y-Q%.4Y,9&(Q3%E]@6][AXKE?*WF:UU=U;7UR>)6;@X6
    53 MR^[@K\$OIVO5G3)>J^Y1Z!YI/)("S_*O>*U_*PZ/JT\?MR"2:*DV7.?-6FT^
    54 MJ=\R9\E=Z<UOBG_K<>V=4DZ-+`FZS@><.VDKYH&YLK3MKK1/'6IV^PXUNRJ5
    55 MX^S@+>&U>/2:\$GG`@EX95K!*`6?U@^,4PA&1;A#W4XCEEXZ>%_6QV0Q,<6#
    56 M4M@YG=31^G1N8VNER64RLU@U6#9:8K$%I05(C0[=\AW-4_<$U6G+]U9@"\6:
    57 MA1>(Y8[=%=LWUKO:>#%8L;#(6,$&5-AT8?(U["WV$=AT[`D#7N!^#-HC8#":
    58 MYR$8S,=A,'2$&QB(Y$_YF)QRA\TJ1(B3W%OL<<)VK.&^&D"#G=@%%:`3S)F'
    59 MM=5PHL2NVP6F,)S!6.S83F('A7$.`NZYQG:9-N#13'MN5S*C&"FT"Q@@N/L"
    60 MME^G8]8633<86)4B#8M1!<82J$H8W0!O`BJ&1SS/O1BTQ\!@--,#,&C'83#D
    61 M>Z9VL()1POKA;X"D+L+S2OZK3V%8AR_<'`1E$<XV_"]$<G#2$4<A)-)HN7N.
    62 M62Z!'Z;AIG,T3O(XI0)6!@!1HWGV%X-+J]5CB.#3(]`3-AJ;@@1$98@".Z9:
    63 MP9%(7CY"/&>2,PG8'$RTAV+V$?=S+P;M$3`8S?,0#-I1&`P>YT;PBLFGHH?7
    64 M#+_&)C]9IXT)LL7-#).(N!``IS@M:JP8!2+L2)AX"'O"T%)0`LXT-B-H'!'$
    65 M)U<=ZF/#3:F`.)II;RD(C(Q!].4!`181MD(K/"#&A@IG;@.!%)#9IMT5<$,A
    66 M_`M:A!0!@_K8<>ZG$9@?`X'13`]!8#X"`?(@W/"E:'(ANJ/=:Y$/NI:#R(J?
    67 MIDO0LGZ_?2\XY-/<F5Z#7O7H5;ENS?2&Z0WH=8]>TZUE6=_YW;G#:F:MI6.N
    68 M[=#%9\=].-:A2$=LU=9)85_N>F^=IQ:]L[J>N7OF7G0A[G1)LMS>G(<M;F'6
    69 MAL(V@"V=?F^W!5.[^E:WQ2-+%%G+(E%FE^X?;TG42K$CTCP_LW1R/7,!Z%(/
    70 M4%=BR.TKIF6@'*M@^M>QNZO(DL:J:U6N@K:/<(O,K9PT=]7Q[')#GVXI2QJO
    71 M#I!RF;3E<\[$L8R3J\XSEPO7><@R;\.#YOCB*%TV;;>T(4F+]#4JI2!`[TI\
    72 M.F=/J]3R="O#['F828!RK[7=4G9>K@X$%L40D#P9:KU+A0'26_$,R0(ZGB($
    73 MKR7^BF=*-]GT`/_`=P]D3^UTB7H;SQW\ZFOZ^89`AB66>_@$!BO/BL9JT`L.
    74 MU85\(E1TPV"M>]PM\^K8ZFU0>VR)6:6JHCL)U+8'&)-INH=`LY7G3>^B?[YY
    75 M0$2L79EZO0/\I0!$OG^0&VI>"XK7@N(QZUWKSZ.769C"0A,+S>4E*GEJ\:LZ
    76 M$;IF5JQ`NE>0V1IF6^[+\V16C+LJD[G2V%8JE,H1I$*9UED`5[3A^:QY>%29
    77 MSSULB%T9Y,S.T\6+@DU_A+C(0;[_3J:4[^>DN1R8A2%X6\:!=8[5`%:0<!F*
    78 MJL8!-5%TK9XL<NFV:,^XI>646^HR\:L!Z/4;N%_JK4)'T;W]0+T1NQ[83*_I
    79 M9G^[#6>YWM\R8"REKF9.P:Y46L@E`%I5I!"%B=Z&O<>$M+)4,H#;5LK4V+$R
    80 MELH*,%DI+>"JQ)L+PQE!<UA&<(B<NXAOQY#YZMRPEP/IP$*IOGLRT.MC)`.]
    81 M.4XRT-LGDH'>[4D&^FKX?1A3X6!*`$X)P"D!."4`IP3@E`"<$H!3`M#'1^HY
    82 MN.VP17`8WKM`+CG))7N))*KZ0$%&N?=-F3-+WC9'!([J,]3WY(O#783A._^N
    83 M3GH9DF3#BUSIG$\L4505/&=FQ$16.:L-K_RY5T;"]LI(R)Q+K'6C9%1.!+9<
    84 M\+"Z.Q^>$"*#&C90>@X03$X!5K%A*=!(H\2%&JH2E'V(J#YART4222Y5)66X
    85 M7@/7BZ@S@7G@)"5UZ@H6@CLLM3&D[%?`*'5`<GZO"E%+Q<8LU&X"C$I##*3Q
    86 M2FJ#M-*LU2!,)5-%B6A2*U#ZKF0]JL*%X0DQ2QZ'D]QR.V-'@MHJZ5?2BKN+
    87 M1%*V.N?A.:2F#%O)_.PF\097#"_>-C/F-4S9M5)IT3!O6L\\9\H6P7.&UVG.
    88 MN.T$ULISA;^6AVE@-O-:K<MWE`J&56$0+MOAN'553U'ULP&&YTA>`;O)IFI<
    89 M>TDPJML1^#UU5Y?H(,[$92#[-92<&A"GY$/H&XE6;F?!6BY.6M6=#$^,6)61
    90 MI"&C^>FW,UNJRLX1T\'1*[DQ^@Z!F0;*;U5IEY+JH#FVLP54@/"TR:DO=[KU
    91 M1G$22=2%6<N>->?-JOHB*S*G6(U\R5D.)'HE<PJT<')ZRFW+W\OU:=H=AK*\
    92 MDK;4G+ERVPN/OP=*`UJ*G9:!G)<!;//>D5-=;GOM1>;EA_)\14$9^.NNG/QR
    93 M6TM(LU^0!DOSYCB0Q2L5CBD%QAG;.:],2B,.SHHJ=TF8$/-2HBI4V:<@#Z@F
    94 M8_96DPGJJ1/O8V*IU1%BJ;$\#XJE5F/BB.'<RKY8Z@@8C.9Y4"PU"H-'<BM/
    95 MYY=61\@OC>5Y4'YI-2J_]$ANY>D\XQ$P&,WSH#SC.`P&<BM[(\K5,2+*L4P/
    96 MBBA7(V+J@<S*WJS",1`8S?2@K,(8!(:.]N_-,:Z.D6,<R_20'.-J5(YQZ'C_
    97 MWESS,3`8S?207/,H#,A;T)4C8NJ[>J5P=K"'E<]YPD<9N*MG^*Y><'_6<WE9
    98 M6>#G>2XO*PO\+,_EA7TS]BS/Y85]0_H<S^5%Y<*?Y;F\K.]#GN6YO+!O1Y_E
    99 MN;RL;\G)6ZC.E83PB.<2#ZP7]%S7)8K)=9E<E\EUF5R7R7697)?)=9E<EZ=<
    100 MEUC]+]I1#;LN41]6(.G9GHN9/)?)<YD\E\ESF3R7R7.9/)?)<WG2<[&5Y^+&
    101 M582*OE2$BH_<_W+T/\'NN_G5)V2VY<[7(($47'VI.6^D7:?_[;6[F=5=AY*B
    102 M$,(UN[[X\,?EW=UE]KNNJEM*8HG=-]5RL^PI=*.F-X7Y-E_G:9L*[LEB2&N2
    103 M=HLDVYE4N2]J83`R'07LC!8B_8?$M`M7%/,^!8E>JG7!C"QWU%A(,:2)\7%(
    104 M%QUTK8WP85`?D+4[9+LZ&5-KI:,;U,N8^385Z6,JW1ZI*O;O\^;D[O+B>J'$
    105 MXMULL=XSDX;(N8M25>Q),E_-JA-IEZFZG)V=KG]+\^M$V:6X;).A4>E9-=U.
    106 MWQ4>X<D)EZ#&TO7:PS53$EN_ER*:C5L`S%-MR>2*I-J3$JZBF?4&$WX%_`"+
    107 MK1_[1\`N)8WI-CWGX52F`G#P)[#)`/M87<+J;(<-7;$[#5N#F1)3H;BNUYB*
    108 MET8GDS<"[S05N.L/>JHK:5(UT1!L\I/A=VQVV@`W6F#G2J4IK;,:>XOM302H
    109 M:&!2L9-A]).FV$MS+("9"F]%XS4\6OSFJLD1R^208M2F)*5<EC8(P?)H^WQC
    110 MM+=Y2*YW]N5<NH58X(EW6$X&`(I%@$#`Q!5Z3-;5S</E'>;&Q0-FJ%XT7Q:-
    111 M27-1K4VKU%K-M6-R6XGO6)30E)WL]TH83\)\!H%:Z/(F%#$;N<"KA5G8A5OX
    112 M15A$B`NY%U(MI%Y(LY!V(2N1J>#=ZO-Y7_;/BR\+G23/E`H[Z0KBR#,#2V$0
    113 MBL!Y#*G"I#!BK;_J.;Q6F(UXAKF)J,+:1`#G-@2\5:U/M1#/I'$>HVE3\5T8
    114 MI`BV:Y7:(K;"%(??<I8*HUK$0?@L%9K.K?0.'@PFTQDF/MX%^"@:X8U+;54+
    115 MFV@Q+?R9==Z+Y/^B!TP<L4Z,%89,8S'(,WC-F$!.!(B+8<`+A65@(3`6(R:G
    116 M394;P;&MWTEX6)U#;BSVW#6ZJSC"M=)>P#7#T$N!WEB4KOQJDJ^MI$^5/!'Y
    117 MP7:OT4G16*=JKS#6$MK,,T[H3*Q;@E3#AD?SM94:&VT0<#,D8CWCS\`1@P%A
    118 J@6ET@@>K)!JD4N-6AM)E92BSV6KO'RX>_K@_D;,??WCU7R0P\``>CP``
     2M'XL("$/8=4(``W-O;'9E7VPN<F5S`.U=6V_;2-)]SZ\@@@'6BDBY[Y<$]L->
     3M'@+L?@\[BWT9S`2>1$Z$]26PG(R27_^=IKJKFQ1M49X(`V08!+%,%JNK3M].
     4ME=B5'__S]]?_5U45/Z].3Y_]&'\3"_Q6K6^O/B_?K!?WZ_NJJ=8?;N_NJ_OE
     5M^GY=7=[>520L%_FS6E3_?/W7ZCD>65RM?GW^BN[H\PH7WZQN5O<GLU?/PL_J
     6M_#RV<;6X6?ZV6-]?W).\B?+O;V[OEB?/__;?'ZO7?Z]^>/WN)3V#^_7GBB]$
     7MQ;WWIYR?<E=Q\U*ZEU)7M[]>O/UP?7%3_6/SL?KA.=J$2UGER^KWJB13[7D&
     8MP$4`6H4]"'R6XRP@_/`?DN,97(Y>*2"IGM^M;MY7=VM>G56L/MG47^JOL_KJ
     9MXZOGU:ZS#\F2<GG>D_E0#TBIP@6]J#[>7GVI+ME9M9E_F7^=\RR([MO>Y+CY
     10MBZCFE7FQP;_RQ9?V\U>,*)7%;1(79]675EQ`O+&MM&Y__9JE79*62?GVF:_X
     11MMZD**X#XZMWRXJI:G5WR^E+4EY)N"D8WK\\N6;TKP+.S`MA_NENNW[3]>O+A
     12M]OKV_<FJ_C"K.;#^B?_\\ADZ./W$GX8MN+=6,BT$MUIXSK5P7C(NO%:<R59>
     13MD#Q;..>L=9H;)962QDHKE&?2"VN8XZVX+,05E\ISRQ33C@NFC=%*8-"B22?L
     14MLZ2Z,"D\8Q6SGDOGM)::"^.=$9[!-L7=@$6X;KUAVFK%I#:20]8J[YE5NF<1
     15M'!8P0TNEM3#.*R^\#'^UX%(*YIXEX<*DD\8LX+/D&GXR9@"-<0P0"*F]AO=J
     16M_OJ%62@@)SA7+#A@C3#*6.>D-U(9(68]PT]@"FQF@%#H`"K'LU+"=<:=U5X(
     17M*)4+#J^T<MP!2*.YQ2>C%#0+YH6>]=P[,0MO`(6PDEL)M+037$@OE<0E*5L[
     18MM41_2W2!8$9Z[]!SS&@68+&*SY[]I)Z`0',,!)IOCT`S"@$]@(!>*"N<\O";
     19M6_S!*)..&\P;A:9<Z"ZW$!K-8(`[J5RPV3!C/&>X(F'$#@)V89PS&OY)3#88
     20M#3G)#<?\LL;!5K7`K++.LF`_H#;.!%SQ6<%';7;<=PNH\T(Y`\^]T9XK]`GS
     21MN`0LC&JM=*J=L,!<6<8DM&-&&/@&Z#3ZZ2?S!/^;;^[__`C^-Z/\M[O^8Z54
     22M3F)(AV&#`:8TA"40@)M8;GCL+"D#2AC'K+55\[``:HPPH_2.^V;!)(>M6BEA
     23MO368,T#."24Q'"WST,D6L%UZ[A17'(K@D;!`EZ,9'3IA!P&L<-;!*X'U'$LC
     24MC`3V0-1CJF&U,RVJ,-.'":'A/4>#QJ`K/=;UL$1;(.`.1V!^!`3FQT"@&8-`
     25MVE+!.*X_O@F;ZO7%?=I2K].>^@8`G7UX\7YY<\)G3?N#S>:ZO>!FC6H_P.TW
     26M<#K*B=E\TWG`I`>X2D]P/IN+J&1NLA*9E,C9_$M'B2<EEI2(&:A)5"*S$I64
     27MJ-G\:ZE$D.F<;.=RV!+]\]DFNK-]EKP0Y(4@+^!9?#AXEF`B92999!(VY%]2
     28M3_X)\@\[2E)ODZ=%0R(YC2;1ADUMV-0&N1_;D.2^(/<%N0](=IV1A5MHP_U\
     29M]B6:O]4HDT;)R4)+=HDN%"ZH\,E,GQ`@,Y-214H%F:E)O2M`20W)`I0P9-G/
     30M9U^C[JU*77J9?8O6A4<PS$7JWB@A4E>:^+/%@(LT,DQ2*JA[BH>I>TB-CS^W
     31M-LJDQI(:<JU0(_O6B(@F[`]J5.H2LB9WA2"$A.BYHMJ'-<UMG08-=8M-W9(5
     32MTWPK++5DGZ;&9`%":,:D[NBXFAV,E@51C.+8ANS#9EL!&H(^&2-%X7DR0??`
     33M:L<>]\D07_A4V!_;"ZL9AE!4$'[C\;<(GVA'@A#Q:K1PZZV0VZLR-BW:?A(J
     34M7HWNDJ:V(P2M-CQ:$29!M"K<-_%I34^'J[;7?HN0((1(5[*D!4$0".F^:#V6
     35MC.P.O_&NO;+U6$:/DW6R]5C*KG6R]5@JD@V_:9*AG:>(8H4>#JK%`4'UCBPI
     36M-^?[98KL@7#]D#J+^8,":LD.":@E'QE02_%(0"WEGH!:%KA+W0FH5U,4/471
     37M4Q0]1=%3%#U%T5,4/3Z*EJ831:^N4^A<DE`7Z5&,:&/0+#IAHTNLEB(603%K
     38M#)!%)[@B&IQI.D5Y,1@NHQV[_:%BB%LVG=A@#%AS+!BCI!QKB]2@SO%RY**)
     39M4_K4W#9J+%5%&$R,!LO8QB?K&K*$)R+>"R;M5D:GX*U#X2V%2$TW<(N0,I(K
     40MPNJ,JRY"7DZ(4QQ'?<1S6$F@Q^A.=;N>8!0I[A+=N,R7X;,@[90WB6%4)V)R
     41M_<BIHS%AH%/8%,.-;E!%<5$9E-!=$_%3O9"HR'6DO$N*HBBOTHF;^&[6PJ1+
     42MDH+\3E!%@5G`3G8S-*:;>9(9&$/0R13HF1AZQD=,&8[E0+O()I!_/CWC4I`F
     43MNM&EHH"88M#@JDZCK`C=A-G-#'!;&)QP4WE1*6(2B9CDW?(RQ#%_.[M\?W6=
     44M&'N->.W5LQ`2_25?_DOU]FYY<;]\5UVTD4]=K6ZJWSZLWG[`A:O5^KZZ:_^]
     45MO:QN/EW_NKQ;5R?W'Y9!R]O;ZX]7RTWX*O;3_>KV9CVK5NMJ?8](Z]VB"A+_
     46MN:TNWKY=KM<5'JF2GIWGZNK^R\=E=;*Z;.5N+JZ7U;^KWR[6U<5ZC=`-QK6!
     47MW&U[^VYY_^GNIOI\<?5I.7M9Q36ZJM;+^S9T^_>KK<FO,B((Q=+=@`K%-PI!
     48MUU9V*);YMH&#.3QPV(UEOG%X=7!T-1#*[*4QJR/0F-4Q:,QJ#(T9"&7VTI@C
     49M(#`_!@+-*`2&0IG'@SD%:Q^/Y:1]0C2[^O;1[&I,+#<4R^P!H#D&`,VW!Z`9
     50M!<!`,+,OF'.`]O%@+B0_JX."V=41@MG5F&!N()39ZW_SS?V?'\'_9HS_:?,L
     51MWK918I%WV+7(&ZP\K_ZWNKKJ;;OJ/#,4/'1Q\_Z?`R2E<^?/P%.4[O&4B9P<
     52MFYQ\7SF6IY"3[RK'\B1RLB_1_"1R\D>EVI]"3HX!P!^6:7\2.=F7:3Z<G/QA
     53MF?8GD9-O[O\?EFE/6ZDIR(E]@)RX07+B=\G)Y</LY/+/0T\TF^C)1$\F>C+1
     54MDXF>3/1DHB>_@Y[H(G>B'\B=Z,'<B=[-G?SK07;RKS\1.9ER)Q,YF<C)1$XF
     55M<C*1DXF<_"YR8@:)1_&*B7;C#L-KGP_#&S;\WKZ,[]GS>B/JC=SWZOZ0.#7!
     56MS_MBK!Z6%-D9(\MW^/E\(^8;69R,-ZIXD;_AV_?X>?N>O<*'%QO1OM2_$>TE
     57MUUZ2N,09KL6/N"U_R=3.Z.)E_P9"'$^*K=9YM1';W\0O43.GIN3VDZ!/':VF
     58M/!00'M+)T$T\3]!:6RAWI)6L;7:MM8^<(3!NSQD"4Q11L&SP4/Z&/7@J_Z0E
     59M1@Q<30IL5<Z&684MRSDE/$A2N_ZPA>4&G$Q;'_91#'PG!-93PZ77-KPFU9M_
     60M?!$V7\PE3";),06=D`RB2KIV4H_6*3N&RK`16,VPL&(F@QMB$<":BT4=JX#8
     61M<AO,8^S3F-<*4EB*000D=F&L+MCIL5(,<,/]&#1'P&"TSD,PF(_#8.C$!#!@
     62M@659'ZBZP1+F/,P)I!<K'].M:I!:!6BP/ALG''S")F>Q!TM0*[9+QJ`4VZE3
     63M&NNXX5A7L64[!M(NL8B&97FTT@X9"YLK>@K/.700@@`&1B##J0:-1[<8:!'B
     64M#XU>!<8<J')LQ0X<`RZZ!_CH7@R:8V`P6ND!&#3C,!ABI.$Y[(V>8T_$7P=+
     65MC0<?"ZS6AN"LQ1?D!Z&:!P4'*T-\!^J.Z`J!DL23N\<&^`+X81AN&\?#P1XC
     66MA,/,`"!BM,[N9#!AMEIT$9@^PC^FO=(A=$"LAMBP52H%Z$7@_@C\C`H4$[`9
     67M;-P6CND'2.E>#)HC8#!:YR$8-*,P&#P]@9`6@T]X"RX-MJ,#>Y9A88)M?CO"
     68M..(PA,4A>O,2,T9`""L2!AZ"(3<T%00#Q<9B!(\]0OM`X.$^%MR0(/"CE7:F
     69M`D//*,1D%A!@$F$IU,P"8BRHH'A;"#B#S3JLKH`;#N%?R"+0<.C4ATY//([`
     70M_!@(C%9Z"`+S$0@D!L&':Q`D"M&>I-BP^%YY?N]?T-50<X"7]_O'\%T\/!'E
     71M)>1%1U[DZ@8DKTA>05YVY&4J$L#+(_8[1\;5K-'IK?)FJ,Z`H38,^9"M2VI%
     72M[\5\FTLK](XOL,ZK\9:T6]*>?4G:TYGD?%AZ[GK:W*QQ6:V#VG38I.D;)G;]
     73M+8HS>++(DY?9HJ@N'/?O6=1PMF/2/%[3Z:!(U`+0N1R0+LS@_1/=N:,,N:"Z
     74MU0_:D_\\]57[5#YYW3R@S9.V?+##%*<A<D&,5!2`I_YJ`<EGMQLZ5I`TYGXR
     75MQ?&!7-\@=EG4K:C3#)W33F>[FYXWR=)L?8E*KK_1J4`1CK6D6:IIN.5NMM3-
     76MR8!\C+SI.3O/)W4<F:(2D#082K]S08_DMZ`1$@TT-$02O#KI%S12VL$F!_0[
     77M.NK#.VZ'F@5]/'?P*ZMBQ`,Y$1:?RUXD,,AY<M07G9YQ*.I?)$&1#O1L9$>[
     78M)EVM6MD'M:,V*2M<%>D(4'JV`QB)R73L)XU6&C>=NAKQH$\2(N_RT.N<E\GU
     79M5N)QG_B@I+D@:"X(ZK-.%8W8>U&%RBID4B&IFDMA3VE^499%ELKR+A".\42U
     80MBM3F\A0TF`7A+O)@+CS6A0NY4$MR(0_K:(#)WM!XEM0](H_G#C9)7>[DJ,ZF
     81M<TX9FVX/44V16&XB;:5T'"Z,94<J5(*W(1S(9U]T8`$)57TI2HJD1T2J8I%V
     82MY-QL]IYP"],I/BGSP"\ZH-.NHW93:P4Z(I7)<*FUI*X#-LG+5$BCZ<.9JVDT
     83M!!A9*8N1D['+A4UBQ8U&9"M85B+[L'>4)*]TJM!!SQ;.E-B1,SI5\2"Q7,G#
     84M%HDW*X<S@NJPC."0.#6ASD>)Z<(J,Y`.S)+VFR<#K3M&,M#ZXR0#'7LD&>CX
     85MGF2@*[K?R3$%1:8$X)0`G!*`4P)P2@!."<`I`3@E`)UZH'R*Z8<MC,+P3KT&
     86M3DDNWDDDI2(K*<C(9192YDPGMDT1@4GE4,JR%)EP9V.HQ(8IDUXJ6;+5E:AT
     87MS"?F**H(GJ.RI(07.:NMKOA[IVJ+[E1MX3&76/J6DE$Q$=A0?=&B5(5[Q(@(
     88MJMM":2E`4#$%6,2&N1YJZB6JBU)4?.U"E,J!-E23--DEBJ0,E4>A\BQE)C!V
     89M'$])G;)@#*,&<RD:SKL%9W+9G9C?*T+47"`U&K6;`$N56`;2>#FUD;R2Y-4@
     90M3#E3E1+1R2V7TG<YZU'4"76/F)GS.)3DYOV,73)4%TF_G%;<G20\9:MC'IY"
     91MZI1ARYF?W23>X(RAR=M$Q32'4W8M%S95I#O-9QHS>8F@,4/S-&;<=@)K8:F@
     92M9D/=-#":::Z6U7)RP="B#@]5R3'T=%&^5'2S`8K&2)P!N\FFHE\[2;!4)L?1
     93M_=1<61$G:4Y:!K)?0\FI`7-R/B1](]'P?A:LH5K`19E7]TB/%1G)U&5I?-I^
     94M9DL4V;FD=+#W<FXL?8=`2EW*;Q5IEYSJ2&-L9PDH`*%A$U-?YD7OCJ`D$BOK
     95M(.<U:TZ+5?%%EB=-ONCYG+,<2/1RTN32Q(GI*=.WOY/KDVEU&,KR\K2DQLR5
     96MZ4\\^AXH=&BN+9P[<IX[L(EK1TQUF?[<\Z3+#N7YLH/<T===,?EE>E-($B\(
     97MG25I<1S(XN6"XBD%1AG;.<W,E$8<'!5%[C)ADI3GBG"NR#XY,Q5OZK[8[^SX
     98M%_O'!(>K(P2'8W4>%!RNQ@1&P\FB?<'A$3`8K?.@X'`4!@\DBQY/F*V.D#`;
     99MJ_.@A-EJ5,+L@631XXG3(V`P6N=!B=-Q&`PDB_:&R*MCA,ACE1X4(J]&)`D&
     100M4D5[TR3'0&"TTH/2)&,0&#K!L#=INCI&TG2LTD.2IJM12=.A4PQ[D^?'P&"T
     101MTD.2YZ,P2-S!%<S*E\<L<^%]SX9..W@^E:@:8F->]-C8[R-CWU>F_FED[/O*
     102MU#^)C'UGWUX^B8Q]9]]B/X6,?5??5SR)C'U?WUD]B8Q]9]]@/XF,?5]O,B3J
     103M(#,9\^H!,J8'R9B92G(]0,?ZR;&)CDUT;*)C$QV;Z-A$QR8Z-M&Q1^A8D1OS
     104MP[DQSH9R8]B!IA)D`V0,@V@B8Q,9F\C81,8F,C:1L8F,361L+!G#\G2>:80:
     105M55P-@VJ1GS'#1RE-^C_,]QVB[`J26GN^1X#.+E9G%=>;\/^4MX<<VY.%G&5!
     106M?UY=7;S_M+R[6T:N>%D<^&,+K+ZA6*(FIM#VFMQ6OMQ^D2QUJ&C)\T9:BC0]
     107MD;C/A-*87C*%GFDEL,](QH3*JW`A,>]*1-,YRWW#^6+'C9JS(4^4]4.^2"=+
     108M;YAU@_Y`K-D1V_5)J=(KZ<V@7TK-^U+)'U'X]L!QW+=GU0FX^U4M6/UZ5F_V
     109MC*0A<6HB'\=]5$P7H^J$ZT4HWZAG+S:_A/%U(O2"+9NPT8APK1AN+UYG'>;1
     110M`1>@QM2UTH*:"8ZEWV*,JBTM`.:A>&N@(J&X*P=55+-.9X)7@`=H+/U8/QQ6
     111M*:Y4N^@9"U(9*BR"3V"1`?:^.,_8[AW:M=4D)?8:C!0?*C&VK?I0'=@;'M@(
     112MV&FH(-GM]%"X585RO<[IP)/!.[8KK0.-9EBY0NU7;;3$VJ([`P$N*FRI6,G0
     113M^\%3K*4Q%L!(!5N1N`U&BT^F&!RV&!SC*CYB9\V+DF"+U-LV'K[N+!Z"3@M_
     114M/N.F9C6&H#683@H`LMK!(&!BLCP&Z^KF?GF'L8%0\J22=?6YKE08BV*C&B$V
     115M8BX-B1=KJE!DBJOR2O:N,$8G8SY"0-0RWS'9S(K7N%6K6M>FMK6K/<R%W347
     116M-9<U5S77-2],3L?%5Q_/NK9_K#_7,EB>)$,=19C#3Q5V"H50!.31A1*N3+&-
     117M_"+G8*W8-OPIQB:B"JV#`,BM<[@K&AN*C9YR92QZ4X?JUMB0//I@(\*SB*TP
     118MQ,%;3D/E88TX"+]S@4?GFEL#!H/!=(J!CWL.'$4BO#'A6=%@3]08%O94&VM9
     119MX+]H`0.';8)B@2Z3F`S\%*P9`\@P!W/1#;@A,`TT#,8V@<&I0VE4:&S*>QP,
     120MJR7D2F/-W:"Y0B.HE;0,U`P+!V=HC4QIZQL'^YK"^E`J%Y$?]NX-&LD>RU!.
     121M&9LUAS?SB!,:8YLF02JQAWOUI>$2"ZUCH!D<L9ZRI]"(SH"QP-0;1IV5:UKB
     122AD7$S0_(\,Z38+K7K^XO[3^L3/GOUP[/_!]4`6N?8E0``
    119123`
    120124end
  • Tst/Long/solve_l.stat

    rd1a54b r6ed15c  
    1 1 >> tst_memory_0 :: 1088445996:2004062311:2-1-2:ix86-Linux:nepomuck:895540
    2 1 >> tst_memory_1 :: 1088445996:2004062311:2-1-2:ix86-Linux:nepomuck:1372352
    3 1 >> tst_memory_2 :: 1088445996:2004062311:2-1-2:ix86-Linux:nepomuck:1372352
    4 1 >> tst_timer_1 :: 1088445996:2004062311:2-1-2:ix86-Linux:nepomuck:312
     11 >> tst_memory_0 :: 1115019332:2005043019:3-0-0:ix86-Linux:nepomuck:668828
     21 >> tst_memory_1 :: 1115019332:2005043019:3-0-0:ix86-Linux:nepomuck:1355220
     31 >> tst_memory_2 :: 1115019332:2005043019:3-0-0:ix86-Linux:nepomuck:1355220
     41 >> tst_timer_1 :: 1115019332:2005043019:3-0-0:ix86-Linux:nepomuck:338
  • Tst/Long/solve_l.tst

    rd1a54b r6ed15c  
    44LIB "tst.lib";
    55tst_init();
    6 tst_ignore("CVS ID $Id: solve_l.tst,v 1.2 1999-11-18 16:38:35 obachman Exp $");
     6tst_ignore("CVS ID $Id: solve_l.tst,v 1.3 2005-05-02 07:42:46 Singular Exp $");
    77
    88LIB "solve.lib";
     
    3636mp_res_mat(im);
    3737
    38 fglm_solve(i,30);
     38def rinC=fglm_solve(i,30);
     39setring rinC;
    3940rlist;
    4041
    4142setring rs2;
    42 triangL_solve(i,30);
    43 rlist;
     43kill rinC;
     44def rinC=triangL_solve(i,30);
     45setring rinC; rlist;
    4446
    4547setring rs2;
    46 triangLf_solve(i,30);
    47 rlist;
     48kill rinC;
     49def rinC=triangLf_solve(i,30);
     50setring rinC; rlist;
    4851
    4952setring rs2;
    50 triangM_solve(i,30);
    51 rlist;
     53kill rinC;
     54def rinC=triangM_solve(i,30);
     55setring rinC; rlist;
     56kill rinC;
    5257
    5358////////////////////////////
     
    7984mp_res_mat(im);
    8085
    81 fglm_solve(i,30);
    82 rlist;
     86def rinC=fglm_solve(i,30);
     87setring rinC; rlist;
    8388
    8489setring rs4;
    85 triangL_solve(i,30);
    86 rlist;
     90kill rinC;
     91def rinC=triangL_solve(i,30);
     92setring rinC;rlist;
    8793
    8894setring rs4;
    89 triangLf_solve(i,30);
    90 rlist;
     95kill rinC;
     96def rinC=triangLf_solve(i,30);
     97setring rinC;rlist;
    9198
    9299setring rs4;
    93 triangM_solve(i,30);
    94 rlist;
     100kill rinC;
     101def rinC=triangM_solve(i,30);
     102setring rinC;rlist;
    95103
    96104////////////////////////////
  • Tst/Short/solve_s.res.gz.uu

    rd1a54b r6ed15c  
    11begin 640 solve_s.res.gz
    2 M'XL("#<1X$```W-O;'9E7W,N<F5S`.U<;6\;-Q+^[E]!!/T@1;MK<H:OSLG`
    3 M7=L/`=J[`W(X'%"D@=/*B0#+-B0EE?WK[^%JR:5>$K_41H!"@B&M=H?#F8?#
    4 MF7DVVKSYSP^O_RF$4*?B^/CH3?>-&GP3BZN+SY-WBV:Y6(I:+#Y>S9=B.5DL
    5 M%^+\:BZR,#?]L6[$3Z__(5Y@2',Q??_B5;YB3@5.OIM>3I>#X:NC^"E.3_,<
    6 MEY,_FL7R;)GE;2?_X?)J/AF\^/Z_;\3K'\1WKW\_*>VJ/@O5:$%2ZF-)QXJ$
    7 MTB<D3\B+-]/+#Y\NSN;BQ]6U^.X%YH1+O<H3\6=59E/=:0^`[P!H%6Y!$'HY
    8 M)2/"7WYE.=6#J[`J!23BQ1SFB/E"B;&0U6!5W52WP^KB^M4+L>OLEV2S<C[=
    9 MDOE8[9'2A0NF$==7%S?B7([%:G0SNAVI7A#+M[ZH</%7$B-A7Z[PSB]OVN-;
    10 M1)3NQ5T2I[&X:<4)XK5KI4W[];:7]DF:D_+UF%N\UZ*P`HA/?Y^<78CI^%Q5
    11 MYU2=<[Y(,E^<C<]EM2N@>F<)V'^:3Q;OVG4=?+R:77T83*N/PTH!ZU_4VY,C
    12 M+'#ZQ*N6C0K.L31$RAD*2AGR@:6B8+22W,I3EI>-]]XY;Y35K#5;QXYTD!S(
    13 M6>E5*\Z%N%:L@W)22^,526.MT:1"P)2>W%%279@4QS@M75#LO3%L%-G@+04)
    14 MV[3R>RS">1>L-,YHR<:R@JS3(4BGS99%<)A@AF%M#%D?=*#`\<^08B;ICY)P
    15 M8=*@M@U\9F7@IY06T%@O`0&Q"0;>Z]'KE[;10(Z4TC(ZX"Q9;9WW'"QK2S3<
    16 M,GP`4V"S!(1D(J@*8YGANE3>F4`$I=PH>&6T5QY`6J,<CJS6T$PRD!ENN3>P
    17 M3;"`@APKQT#+>%+$@37C%'-KIV&L-V,)2%H.P6/EI#4RPN*T&A[]HA^!0/T<
    18 M"-1/CT!]+P3,'@1,HQUY'>"W<G@ARM@KBWVC,96/R^4;,I@&`>Y9^VBSE=8&
    19 M)7&&8<0.`JZQWEL#_QB;#49#CI55V%_.>MBJ&^PJYYV,]@-JZVW$%<<:/AJ[
    20 MX[YOH"Z0]A:>!VN"TE@3&7`*6%C=6NEUNV&!N792,K1C1UCX!N@,UND7^PC_
    21 MZR?W?_0,_M?W\M_M^H],J3TCI&/8(,"T@3`#`;B)=*.ZQ6*.*"&.96NK43$!
    22 M&D28U6;'?=M(5K#5:$TN.(L]`^0\:48X.AF@4S:PG8/R6FD%1?"('-!5F,;$
    23 M1=A!`!G.>7A%R.=(C3`2V`/1@*V&;&=;5&%FB!O"P'N%":W%4@;D]9BB'1#P
    24 M#T=@]`P(C)X#@?H^"*22BHYC=OTN%M79V3*5U%FJJ>\`T/CCRP^3RX$:UNV'
    25 M'(Y,>\(/:]T>P.UW<+J3H^%HM3'`I@%*IQ%*#4?4*1G97@DG)3P<W6PH"5F)
    26 MRTIHB-:D4\*]$IV4Z.'HME1"V725;5>\WQ+S=KSJW%F/S5Y0]H*R%_"L&QP]
    27 M2S!E93999!,VV;^D/OM'V3]4E*3>)4^+B2@YC2DQATMSN#1'=K^;@[/[E-VG
    28 M[#X@V76&"[<PAW\[ONG,7VODI)%5MM!ENV@3"A]5A&1F2`AD,Y-2G952-M-D
    29 M];X`)4W$!2@Q9.7;\6VG>ZW2E%[VOG76Q2$(<TK+VTE06DK;?;88*$J189-2
    30 MRLM3#,[+D]6$[G-M(R<U+JO)KA5J>-L:ZM"$_5&-3DN2K>F7@C)"1%NNZ':P
    31 MR7O;I*#)R^+2LO2*\WXK+'79/I,GXP*$.(U-R['A:N]@9UD4111W<_`V;*X5
    32 MR"$8DC%,A>?)!+,%5AM[*B1#0N%387\W7\QF"*%.0?RFNF\=?-1&`E%WMK-P
    33 M[2WQ^BQW4U.[3J2[LYV[65.[$)2SC>JLB)N@LRI>M]UHDT?'LVYK_A8AR@AE
    34 M7<F2%@3*(*3KU'K,,ML=OZE->[GUF#N/DW7<>LR\:1VW'K/.LO&;R3*Y\A0L
    35 MELQ^4DT/(-4[LEFY/;U;IKA[0'Z;4O=BX4&$FN5#"#6K>Q)JIJ\0:N8["#47
    36 MN+/9(-33`XL^L.@#BSZPZ`.+/K#H`XN^/XMFN\&BI[-$G<LFU'?M4<=H.]),
    37 M&[31IZXV,Q;*G+4CR+1!KG(;W+?IF>5U9+AD.V[]H3N*6TZ=NL&.L/9<L&-)
    38 M/=>F-*'I^7+7BZ:>,J3IUJRQ5-7!8#LV6'*;D*RKLR4J->);9-*M94PB;QLM
    39 MO,L4J=XD;AVD,LL5M+K'U1245V7$,X_+:Z1Z6IE![]B=WESZ#",EWD6;O"R4
    40 M])FR]GS?I*-1&XS);S.G#8T)`Y-H4T<W-DE5YD4E*<E7;8>?WJ)$Q;V.=-\E
    41 ML:A\7V6#-ZG=NQ8VG>),\C=(529F$3O>O$-C-^\\<0^,S=!Q(GJVHY[=$%O2
    42 ML9YH%W<3LG\AC?&)I-$FN]29$&<.&ETU*<H*ZD9V]\Z`<H7!"3?=)Y6"DS`X
    43 MR?F'BUEJU"O0M)8(79[-)N+J7%Q._FA)SDED.=_'*Q?3Q3)>F5]=+1<X';]G
    44 M=>`Q[8F]_?[3-M?VX<WU;K__Q!3DP0QD3[M_9ZF?/D.IGSY'J9_>I]3O:??O
    45 M+/7/@,#H.1"H[X7`OG;_ZX1'P]JO\QUVCV!\TZ=G?-/[\)U]_?X=`-3/`4#]
    46 M]`#4]P)@3\-_%^'Q@/;KA"?>(!0/(GS39R!\T_L0GCWM_IW^UT_N_^@9_*_O
    47 MXW]7/+7LZ[)6C5A,ENGV8K[)INE4X.S9Y8>?_FS)QOF7+\5\\OOD?'K9S?-]
    48 MGH</A?S9"_E?B[,_II#_I3C[HPKY73<N'U7(O]6MV\<4\N<`X)O=N7U4(;_K
    49 MSN7#"_DWNW/[J$+^Y/Y_LSNWJ7@6_Q*FS1<*N<V%_/QY*[D[5/)#)3]4\D,E
    50 M/U3R0R4_5/*'57)?5/*POY(;F2KYS\]:R(TZ%/)#(3\4\D,A/Q3R0R$_%/('
    51 M%7)#?2$W?+^G<XWNG\XU7_@AL4V_^[WK5\2;@EEM_Q/B+PCD1V?%6"BSBK_M
    52 M77%\:W^Z*WM!="H79Q\^3>;S2=>&G!>_ND5M!6S8N297ZKAG':_3</NOGV@:
    53 M8GJ-FX9W1>HMD:ZVQ#R-DJZ1'UJ)@$60,O[\/.7>0F*T*9%,+YZ<MK+9<:-2
    54 M<I\G:%[V^<*>2V^D\WO]@5B]([;KD]:E5TA_>_W2>K0ME?PIGC*V7WC"^[>Q
    55 M&,PG9Q<5R>KUL%K=$4G[Q/,4_7/>7Q73150-%-(!]J<9OES]&N-K0*:1DSK6
    56 M+(KGBG![^;K78;X:<!%J]*%HX;![T212<$H&[=M>`)C'3@*E(<1.`\VAC@%3
    57 M+"9R`@J00<<1)"%1H%'0;2-ET;+:N-W1Y%GVP#YPL<#H,S0*4$QM*!0Q4D),
    58 M"^VL(;:JP2J'L^@J8CK;7/381>C8.Z*#MD$C`;)K)_7H,*5!@X%&Q%B#7!E_
    59 M_E0$`ES44FDV#JL?/47Y:><DA4BU$DY*90(2'=LB.&P1'.Y^2<GZ/BE9,))N
    60 MM5WW`,)&\G#Y&?C/8V4K6:$F.XOMA(+O9>5A$#"QO3R"=7JYG,P1&V=+1"A7
    61 MXG,E=(Q%6NF::$4CMEF\R*F.LRE>])GL]\(8G8RYA@!5_8,#SO1F"E7A4J4K
    62 M4]G*5;X*,!=V5XHJQ972E3*5*DQ._Q/!]'J\:?MU];GB:'F21":=PAQUK)V*
    63 M70>C5_"QGP"!6/$-CU#ZI/3A&+&)8H<R$MM=1)_'5:I=K'S'"LT*5M-$J@4F
    64 M%,`[5A3'>@+7<NBACF,;C*8Z?E>$H2,T.NB@8S`=(_!Q#>64.6ACXUBJR:`5
    65 M0[MZ;*P#FT'<8P8$CEQ%Q80E8VP&=:PX!A"8$,S%,N`"81L8&*Q063WJ*!1#
    66 M8UU>0Z>%[0#7-)HBO<)TA4;T:JB8(%EH])3$;-F4MMF.]M6%];%O0W--,`"3
    67 M]!YS[.W1?2EX,^IPPF1R52=(&<PLZ)L:?`*;2Z*'1]\1M#N&1BP&C`6F:/7R
    68 M8A6\VX7[[0PO^YWA52,FJ[/9]<5$+*;Q8_6O3\LVHU[/KWXKSHGS^=4,;/R]
    69 MR/^GQ]&/__O[S__^Z<>XN=<Q+5(N127*FPQ7H>ZWJ\L%@G<NEA\G8G:V:N($
    70 M[R\FLY/V^EH(+UR:SJ:W$R%6`S6,&75`P_8!G]6`ATBN2#\XU,-RV!_3Y<=V
    71 MAN7\#,&].!%Y>'[16D%^_6V,K2;SO%]\Q7%4C*N%:^>/"E!E[U8@UB[4[0$/
    72 MU\\@106GK8+&?$5%=J)#(:N(!U`AHHJ0H)B=+>?3E5C,D''CKXNC^@J9(OYQ
    73 M%:M%=;1G$L!0U1#!.\7W?3*MIB0@W%Z9J%^L5:DHN5]/B`+IKXT.K)BXA"?Z
    74 M50O$Y:?9>\3)U7FYHIW8;)_8Y[/Y]`RAE(44\N:V$%9KCSI"(MV6/-TKR7LD
    75 MQYN2$&WO5F&#C+N-,UC,*G%9";S/`,L,\,T8N584.VL`>9RZC8VK:]#A'ZWB
    76 M8W+<<#S4L4HT`4<<?6\<3N;=6Q06S^NF*?[O09\6")M7WQW]'T4)-U_62```
     2M'XL(".;7=4(``W-O;'9E7W,N<F5S`.U<:V\;-Q;][E]!!`4J13-CDI=/9VU@
     3M=]L/`=K=15,L%BC20$GD>+"2;4AR(OO7[^%HR*&D<?Q8&P%:"8$>,Y>7]QY>
     4MDN<PDM_\^L/K?S#&Q`D[/#QXTWZ2%3ZQQ<7T\^3=HEHNEJQDB[.+^9(M)XOE
     5M@IU>S%DRIJI[KRKVT^N_L1=H4DWK]R]>I3OZA.'BN_J\7@Z&KP["*SLY27V<
     6M3[Y4B^5XF>Q-:__I_&(^&;SX^[_?L-<_L.]>?SS*XRH^,U$I)CE7AUP>"LF$
     7M.I+\2#KVIC[_=#4=S]F/JTOVW0OTB90ZET?L_W690K4G'0"N!:!QN`6![^P$
     8M#PC?_DAVH@-78%0R2-B+.<)A\X5@QXP7@U5Q7=P,B^GEJQ=L-]G;;)-S.MFR
     9M.2MZK%26@J[8Y<7TFIWR8[8:78]N1J(SQ/"M;PK<_%VR$3,O5WBFE]?-^QM4
     10ME.K,;327Q^RZ,9<P+VUCK9N/-YVUB]84G:_;W."Y9%D40+S^.!E/67U\*HI3
     11M69Q2NBEYNCD[/N7%KH'HDI7`_FH^6;QKQG5P=C&[^#2HB[-A(8#U;^+MT0$&
     12M.+[B4?)*>&N):RF%U=(+H:7SQ(7T6@E.C;U,]KQRSEGKM#"*E")CR4KE.7EI
     13M#7>B,:?,7`E27EBNN'9"<FV,5E)XCRZ=M`?1=192:&,5MUZ0<UJ3%M)X9Z3G
     14MB$T)UQ,1KEMON+9:<=*&!&RM\IY;I;<B0L(286A26DOCO/+24_BGI2"2W!U$
     15MXRRD06DJY$Q"(T_.#:`QC@,"2=IK9*]&KU^:2@$Y*83B(0%KI%'&.D?>D#)2
     16M#K<"'R`4Q,P!H=0!5(&V1$B="V>UEQ).J1+(2BLG'(`T6EB\,TK!L^1>ZN%6
     17M>@-3>0,HI"5A"6AI)X4D3XIPB:B)4Q/&FS`$DAORWF'DN-$\P&*5&![\IAZ!
     18M0/D<")1/CT!Y+P1T#P*Z4E8ZY9&WL'B@RL@)@WFCT)4+P^4JJ=$-"MR1<B%F
     19MPXWQ@N,*(8@=!&QEG#,:^1$F&X*&'0DC,+^L<8A559A5UED>X@?4QIF`*]XK
     20MY*C-3OJN@CLOE3/(W!OMA<*8<(]+P,*H)DJGF@D+S)7EG.`=,\(@-T"G,4Z_
     21MF4?D7SYY_J-GR+^\5_YV-W^LE,H12CJ4#0I,:1@3$$":6&Y$.UA$`274,6]B
     22MU2(L@!H59I3>2=]4G`1BU4I)ZZW!G`%R3BI".5KNX9-7B)V\<$HH`4?(2%J@
     23M*]"-#H.P@P!6..N0E<1ZCJ4100)[(.HQU;#:F095A.G#A-#(7J!#8S"4'NMZ
     24M6*(M$'`/1V#T#`B,G@.!\CX(Q"T5C&-V^2YLJK/Q,FZIL[BGO@-`QV<O/TW.
     25M!V)8-B]\.-+-!3<L5?,&:;]#TJV='(Y6&PU,;"!4;"'$<"1;)R/3.:'HA(:C
     26MZPTG/CFQR8D<@IJT3JASHJ(3-1S=Y$YD"EVDV`7U1Z+?'J_:=-9M4Q8R92%3
     27M%LBL;1PRBS`E9R9&9"(V*;_H/N4G4W[84:)[&S/-.I(Q:72)/FSLP\8^4OIM
     28M'Y32ERE]F=(')+O)4)86^G!OCZ_;\-<>*7HDD2*T*2ZY"84++GP,TT<$4IC1
     29MJ4I.90I3)_<N`R5V1!DHH63YV^.;UO?:I<ZS[')KHPM-4.8R#F]K(>-0FO:U
     30MP4#(6!DF.I5I>++&:7B2&]^^KF.DZ,8F-RFUS`UM1R-;-!%_<*/BD*1HNJ&0
     31M"2$IMU)136.=YK:.19.&Q<9AZ1RG^99%:E-\.G5&&0BA&Q.'8R/5+L$VLF"*
     32M*F[[H&W8;&.02M#'8$AFF<<0]!983>T)'P/Q64Y9_&U_835#";4.PB?1?FKA
     33MDTTE2-E>;2-<9RMI?97:KF4S3E*U5]MTDZ=F(&1:;40;19@$;53AOFE;Z]0Z
     34M7+5;_3<(R810\A4C:4"0"81X7S89$T]QAT]B,UYJ,J8VXQ@=-1D3;49'3<:D
     35MDFWXI)--VGDR%2MUOZB6#Q#5.[;)N3FYVR8[/9!N6U)W9OY!@IKX0P0UB7L*
     36M:I)?$=1$=PAJRG`GO2&HZ[V*WJOHO8K>J^B]BMZKZ+V*OK^*)K.AHNM9E,XY
     37M"74M/6H5;2N:Y89L=)'5)L4BDV9M!;+<$%>)!G<T/:F\5@SG:L>N7U0K<?.N
     38M(QML!6NG!5N5U&EM&3O4G5YNN6CDE#YVMU:-N:L6!M.JP5S;^!A=F2(1D8AO
     39MB4F[MM%1O&U0>)LD4KDIW%I(>;++9'6'J\XDKTB()QV7QDATLC*!WJH[M3GT
     40M"489=9?<U&4^E\\R>4_G)JV,VE!,;ELY;7B,&.@HFUJYL2FJDB[*14FZ:UK\
     41MU)8DRLXZXKE+5%'I7&5#-XG=4PL3+U$2^1NB*@FS@!UMGM"8S9,GZH`Q"3J*
     42M0L^TTK-M8G(YU@GM[#0AY>=C&Q=%FMQ4ERH)XJ1!0ZHZ5EDFW:39/1D0-@LX
     43MXJ:Z1273)`1-\G%R&G3,WZ%A3C]-9Y&S%U!LKPZ"*/J^N_P]^S"?C)>3CVS<
     44M:)^"U>?LRUG]X0P7IO5BR>;-\\4I.[^:O9_,%VRP/)L$+Q\N9I?3R2K\9^S5
     45MLKXX7PQ9O6"+);36QXH%BU\OV/C#A\EBP="$13\[[0JVO+Z<L$%]VMB=CV<3
     46M]@O[,EZP\6(!\8;@&BEWT=R>3Y97\W/V>3R]F@R/6+M*,[:8+!OQ]LNK=<BO
     47M.DP@QN+=@$M2.`JR:VW;IV:>5CJ8ATN'737SQ`+KP?JJ1\S<263J9R`R]7,0
     48MF?H^1*9'S-Q)9)X!@=%S(%#>"X$^,?-U.:<0[=?5'-E'Z-GZZ?5L?1\UUZ=F
     49M[@"@?`X`RJ<'H+P7`#URYBXYYP#MU^5<./YD#Y*S]3/(V?H^<JY'S-R9?_GD
     50M^8^>(?_R/OG'S3/[OHV25;?#+F2WP=()^V\]G6YMN^HDYRAH-C[_]%,/3=FX
     51M\V=@*DK?QE3,GJD\.U/Y8QVY/(:I_*&.7![%5.XZ=WX44_E6)^^/82K/`<`W
     52M.WA_%%.YZ^#YX4SEFQV\/XJI/'G^W^S@/6Z>V?F(<K<P%=_'5#3O8RJGMU.5
     53MTS\/5]'B%JZBY9ZK[+G*GJOLN<J>J^RYRIZK/(BK:.JXBE;]7$7K7JYB>KC*
     54MS[=2E9__1$S%WL94W)ZI[)G*GJGLF<J>J>R9RIZI/(RI])Z8&-[Q%R/N]ZMY
     55M([M?S1OJ_X*_B=_'O^O;_9N&R:TZN<-`Q^_4@SL)O0K?N5]1>&J^4L\[0]"L
     56MZ?C3U60^G[3DZC3[-CQV7(")^:S3_AUFLJ7UXMS\OSVH1%ATPU2B79-RRZ3=
     57M<<+JC8U>8=5H+#R&AO/PLY"X(F<6HTV+&'IV#F9<M9-&(7A?)J`T?;F0HSP;
     58M;EUO/C`K=\QV<U(JSPJ+8F]>2HVVK6(^V5]KL+R_ACX<LP'([K20O'@]+%9W
     59M5%*?>>I"G-S+3&95-1!8)#!K]?#EZO=07P.I*SXIPTXFP[6LW%Z^[GS05PLN
     60M0`UV"F*'.0WJ*+T5W"O7,`1@'O@%-@P?^`<HHPH%DPTF5@IL2QH\Q'.)Y0/T
     61M037TRH#(FK`(@/H9<L#>4S;`8!\*VU)8\+!]A$KQ8;%H>O6!P'HC+*Z":X1%
     62M;G/0`[=0@5&"5QNOL"R2;3IUX)U<@W:`GFBCL8*&KR5FA8`4%1>*M,7HATRQ
     63M*35]2H%*-1Q)<J$]EC\R77'8[)<L5M]O4;*F6Y2LK>)HV_:'01N+AW7QIS2?
     64MCX4I>(&=VAI,)]``QPN'@(")Z>S#'[HX7T[FJ`UHKP&C@GTNF`JU*%>JE'(E
     65M1V2BN<O65"=2*(YU*]G'+AB7?O1S"0-9=#_H<=2%R42!6X4J=&$*6[C"(US$
     66M70A9""J$*H0N1!>R4VTEUY?'F[%?%I\+"I%'2ZRD-<(1A\J*P$4(#,(%E@%9
     67ML:)K&F%#Y-SY0]0FMD!L+H$$H_H<[LK2AOWP4(#"8#1U$&#01QYJ9"5#6R>A
     68MP"R8U6$@QZ#:X;.0:#H"_0&O#L5TB,+'/6RR1%YI$]K*4FH0-)#80VTL-`[J
     69M'CV@</@J.)88,L)D$(>"0@%!'R%<#`-N2$P#C8`%]EN'W16.X;',[X%_83H@
     70M-06JI%;H+O,(!H=]%-(+]$]P])9":2AXB*_,H@]L#I1;(@!TTF5,@?&#DPED
     71M,VIQ0F=\549("7K-J^L2*@.3BX/9@XUX90_A$8.!8($I"&`:+).5EKW?S'"N
     72MFQG.5VRR&@=!SQ9UH^O_>;5L5M3+^<6'[!H[G5_,V+1^S]+?VCGX\3]__?E?
     73M/_T8)O>ZIEE<2[$3I4F&N\UIP_D"Q3MOS@!FXU45.G@_G<R.FOMK(SQPJY[5
     74M-Q/&5@,Q#"OJ0`Z;']ZM!C3$XHKE!V_5,&_VI5Z>-3TLYV,4]^*(I>;I(=<.
     75MTN,OQUA7>.KWUD=H)[-V);--_\$!=MF[';!U"F7SAH;KWP8&!R>-@TI_Q45*
     76MHD4AN0AOX((%%SY",1LOY_6*+698<<.W_H/[`BM%^$=%V"V*@YY.`$-1P@3/
     77M,CSWV32>H@&SO3;!/UN[$L&RWX\/!O%?4QT8,7:.3-2K!HCU.=7ZI"F-:&LV
     78MZS/[/)[78Y12,A)8-[>-,%H][B06TFW+DUY+ZK$\WK2$:7-&A@ERW$Z<P6)6
     79ML/."X7D&6&:`;T98:UDVLP:PQZ6;0%QM!=Y_L`H_7Z6*PEL5=HG*XQV%W"N+
     80>BW'V^FQC\6)-FL)?];I:H&Q>?7?P/THUEZ5N3```
    7781`
    7882end
  • Tst/Short/solve_s.stat

    rd1a54b r6ed15c  
    1 1 >> tst_memory_0 :: 1088426295:2004062311:2-1-2:ix86-Linux:nepomuck:577416
    2 1 >> tst_memory_1 :: 1088426295:2004062311:2-1-2:ix86-Linux:nepomuck:827584
    3 1 >> tst_memory_2 :: 1088426295:2004062311:2-1-2:ix86-Linux:nepomuck:827584
    4 1 >> tst_timer_1 :: 1088426295:2004062311:2-1-2:ix86-Linux:nepomuck:168
     11 >> tst_memory_0 :: 1115019239:2005043019:3-0-0:ix86-Linux:nepomuck:450864
     21 >> tst_memory_1 :: 1115019239:2005043019:3-0-0:ix86-Linux:nepomuck:830932
     31 >> tst_memory_2 :: 1115019239:2005043019:3-0-0:ix86-Linux:nepomuck:830932
     41 >> tst_timer_1 :: 1115019239:2005043019:3-0-0:ix86-Linux:nepomuck:157
  • Tst/Short/solve_s.tst

    rd1a54b r6ed15c  
    44LIB "tst.lib";
    55tst_init();
    6 tst_ignore("CVS ID $Id: solve_s.tst,v 1.4 2004-02-12 14:20:28 Singular Exp $");
     6tst_ignore("CVS ID $Id: solve_s.tst,v 1.5 2005-05-02 07:42:56 Singular Exp $");
    77
    88LIB "solve.lib";
     
    3636mp_res_mat(im);
    3737
    38 fglm_solve(i,30);
     38def rinC = fglm_solve(i,30);
     39setring rinC;
    3940rlist;
    4041
    4142setring rs2;
    42 triangL_solve(i,30);
     43kill rinC;
     44def rinC = triangL_solve(i,30);
     45setring rinC;
    4346rlist;
    4447
    4548setring rs2;
    46 triangLf_solve(i,30);
     49kill rinC;
     50def rinC = triangLf_solve(i,30);
     51setring rinC;
    4752rlist;
    4853
    4954setring rs2;
    50 triangM_solve(i,30);
     55kill rinC;
     56def rinC = triangM_solve(i,30);
     57setring rinC;
    5158rlist;
     59kill rinC;
    5260
    5361////////////////////////////
Note: See TracChangeset for help on using the changeset viewer.