Changeset 6ed15c in git
- Timestamp:
- May 2, 2005, 9:43:22 AM (18 years ago)
- Branches:
- (u'jengelh-datetime', 'ceac47cbc86fe4a15902392bdbb9bd2ae0ea02c6')(u'spielwiese', 'f875bbaccd0831e36aaed09ff6adeb3eb45aeb94')
- Children:
- 6eff86e3417d554a62456e5d4f0634e215db4891
- Parents:
- d1a54b1d03b681db8f1032e2f169a09db7a0faf7
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/LIB/presolve.lib
rd1a54b r6ed15c 1 1 //last change: 13.02.2001 (Eric Westenberger) 2 2 /////////////////////////////////////////////////////////////////////////////// 3 version="$Id: presolve.lib,v 1.2 0 2005-04-28 09:22:18Singular Exp $";3 version="$Id: presolve.lib,v 1.21 2005-05-02 07:43:22 Singular Exp $"; 4 4 category="Symbolic-numerical solving"; 5 5 info=" … … 13 13 elimpartanyr(i,p); factors of p partially eliminated from i in any ring 14 14 fastelim(i,p[..]); fast elimination of factors of p from i [options] 15 faststd(id,[..]); fast std for ideal id [options] 15 16 findvars(id[..]); ideal of variables occuring in id [more information] 16 17 hilbvec(id[,c,o]); intvec of Hilberseries of id [in char c and ord o] … … 18 19 tolessvars(id[,]); maps id to new basering having only vars occuring in id 19 20 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. complexity21 sortandmap(id [..]); map to new basering with vars sorted w.r.t. complexity 21 22 sortvars(id[n1,p1..]); sort vars w.r.t. complexity in id [different blocks] 22 23 valvars(id[..]); valuation of vars w.r.t. to their complexity in id … … 451 452 } 452 453 else 453 //------- h!=0: homogenize and compute Hilbert -series using hilbvec ----------454 { 455 intvec hi = hilbvec(L[1]); // Hilbert -series of i454 //------- h!=0: homogenize and compute Hilbert series using hilbvec ---------- 455 { 456 intvec hi = hilbvec(L[1]); // Hilbert series of i 456 457 execute("ring r2=("+charstr(P)+"),("+varstr(basering)+",@homo),dp;"); 457 458 list L = imap(r1,L); … … 479 480 /////////////////////////////////////////////////////////////////////////////// 480 481 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. 482 proc 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 487 RETURN: 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. @* 492 NOTE: 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.@* 504 506 There seem to be only few cases in which \"dec\" is fast 505 507 EXAMPLE: example faststd; shows an example. … … 536 538 } 537 539 } 538 if( voice==2 ) { "// cho osen options, hilb sort dec block:",@h,@s,@n,@m; }540 if( voice==2 ) { "// chosen options, hilb sort dec block:",@h,@s,@n,@m; } 539 541 540 542 //-------------------- nosort: create ring with new name ---------------------- 541 543 if ( @s==0 ) 542 544 { 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 563 550 //---------------------- no hilb: compute SB directly ------------------------- 564 551 if ( @s != 0 and @h == 0 ) 565 552 { 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); 573 562 } 574 563 //------- hilb: homogenize and compute Hilbert-series using hilbvec ----------- … … 576 565 if ( @h != 0 ) 577 566 { 578 execute("ring @Q=("+charstr(@P)+"),("+varstr(@P)+",@homo),("+@o+");"); 567 execute("ring @Q=("+charstr(@P)+"),("+varstr(@P)+",@homo),("+@o+");"); 579 568 def @id = imap(@P,@id); 580 kill @P;581 569 @id = homog(@id,@homo); // @homo = homogenizing var 582 570 if ( @s != 0 ) 583 571 { 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; 590 582 } 591 583 intvec @hi; // encoding of Hilbert-series of i … … 603 595 else { @o = @o[1,size(@o)-8] + @o[size(@o)-1,2]; } 604 596 } 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); 616 610 } 617 611 example … … 620 614 ideal i = w2+f2-1, x2+t2+a2-1, y2+u2+b2-1, z2+v2+c2-1, 621 615 d2+e2-1, f4+2u, wa+tf, xy+tu+ab; 622 option(prot); timer=1;616 option(prot); timer=1; 623 617 int time = timer; 624 618 ideal j=std(i); 625 619 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 629 624 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 633 629 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 637 634 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 641 639 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; 644 643 timer-time;time = timer; 645 faststd(i,"R","i","sort","block","Dp"); //"best",decreasing,Dp-blocks644 def R=faststd(i,"sort","block","Dp"); //"best",decreasing,Dp-blocks 646 645 timer-time; 647 show(R); dim(i),mult(i);646 show(R);setring R;dim(STD_id),mult(STD_id); 648 647 } 649 648 /////////////////////////////////////////////////////////////////////////////// … … 750 749 proc tolessvars (id ,list #) 751 750 "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) 754 RETURN: 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. 758 DISPLAY: If printlevel >=0, display ideal of vars, which have been ommitted 759 from the old ring. 773 760 EXAMPLE: example tolessvars; shows an example 774 761 " … … 776 763 //---------------- initialisation and check occurence of vars ----------------- 777 764 int s,ii,n,fp,fs; 778 string s 1,s2,newvar;765 string s2,newvar; 779 766 int pr = printlevel-voice+3; // p = printlevel+1 (default: p=1) 780 767 def P = basering; … … 791 778 if( n == nvars(P) ) 792 779 { 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()); 795 784 } 796 785 //----------------- prepare new ring, map to it and return -------------------- 797 s1 = "R("+string(n)+")";798 786 if ( size(#) == 0 ) 799 787 { … … 803 791 else { s2="ds"; } 804 792 } 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]; } 808 794 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); 816 803 } 817 804 example … … 819 806 ring r = 0,(x,y,z),dp; 820 807 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; 822 810 show(basering); 823 j;811 IMAG; 824 812 kill R_r; 825 813 } … … 876 864 /////////////////////////////////////////////////////////////////////////////// 877 865 878 proc sortandmap (@id, string @s1,string @s2,list #)879 "USAGE: sortandmap(id ,s1,s2[,n1,p1,n2,p2...,o1,m1,o2,m2...]);@*866 proc sortandmap (@id, list #) 867 "USAGE: sortandmap(id [,n1,p1,n2,p2...,o1,m1,o2,m2...]);@* 880 868 id=poly/ideal/vector/module,@* 881 s1,s2 = strings (names for new ring and mapped id),@*882 869 p1,p2,...= polynomials (product of variables),@* 883 870 n1,n2,...= integers,@* … … 886 873 (default: p1=product of all vars, n1=0, o1=\"dp\",m1=0) 887 874 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: 875 RETURN: 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: 890 880 @format 891 881 - each block of vars occuring in pi is sorted w.r.t. its complexity in id, 892 882 - 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 @* 894 885 - oi and mi define the monomial ordering of the i-th block: 895 886 if mi =0, oi=ordstr(i-th block) … … 898 889 in one block 899 890 @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\". @* 903 893 NOTE: We define a variable x to be more complex than y (with respect to id) 904 894 if val(x) > val(y) lexicographically, where val(x) denotes the … … 946 936 } 947 937 @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); 956 946 } 957 947 example … … 959 949 ring s = 32003,(x,y,z),dp; 960 950 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); 963 952 show(R_r); 953 setring R_r; IMAG; 964 954 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); 966 956 show(R_r); 957 setring R_r; IMAG; 967 958 kill R_r; 968 959 } -
Singular/LIB/solve.lib
rd1a54b r6ed15c 1 1 /////////////////////////////////////////////////////////////////////////////// 2 version="$Id: solve.lib,v 1.2 8 2005-04-25 16:57:36Singular Exp $";2 version="$Id: solve.lib,v 1.29 2005-05-02 07:43:22 Singular Exp $"; 3 3 category="Symbolic-numerical solving"; 4 4 info=" … … 46 46 parameters. 47 47 RETURN: 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. 51 51 NOTE: If printlevel >0: displays comments ( default = 0 ). 52 52 If s != 0 and if the procedure stops with ERROR, try a higher … … 516 516 517 517 proc 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 520 520 m: precision of output in digits ( 4 <= m) and of the 521 521 generated ring of complex numbers; … … 525 525 l: precision of internal computation in decimal digits ( l >=8 ) 526 526 only if the basering is not complex or complex with smaller 527 precision, 528 ( default: m, n, l = 8, 0, 30 or529 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) ] 530 530 ASSUME: 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; 533 RETURN: (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. 549 NOTE: 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\"}. 547 554 EXAMPLE: example solve; shows an example 548 555 " … … 550 557 // test if basering admissible 551 558 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 } 553 562 554 563 // some global settings and control 564 int oldr, nodisp, ii, jj; 565 list LL; 555 566 int outprec = 8; 556 567 int mu = 0; 557 568 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 } 562 607 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"; 564 655 string sord = ordstr(basering); 565 656 int nv = nvars(basering); … … 578 669 if (sb){if (dim(G)!=0){ERROR("ideal not zero-dimensional");}} 579 670 580 // the trivial homog case671 // the trivial homogeneous case (unique solution: (0,...0)) 581 672 if (homog(G)) 582 673 { … … 587 678 ideal G = std(imap(rin,G)); 588 679 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 } 597 711 } 598 712 599 713 // 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;"); 606 717 ideal G = imap(rin,G); 607 718 G = std(G); 608 719 if (dim(G)!=0){ERROR("ideal not zero-dimensional");} 609 720 } 610 else 611 { 721 else { 612 722 def dphilb = basering; 613 723 } 614 execute("ring lexhilb=("+charstr(rin)+"),("+ 615 varstr(rin)+"),lp;"); 724 execute("ring lexhilb=("+charstr(rin)+"),("+ varstr(rin)+"),lp;"); 616 725 option(redTail); 617 726 ideal H = fglm(dphilb,G); … … 619 728 H = simplify(H,2); 620 729 if (lp){setring rin;} 621 else 622 { 730 else { 623 731 execute("ring lplex=("+charstr(rin)+"),("+ 624 732 varstr(rin)+"),lp;"); … … 631 739 // only 1 variable 632 740 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 637 743 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 { 649 773 execute("ring internC=(complex,"+string(prec)+ 650 774 "),("+varstr(basering)+"),lp;"); 651 652 775 ideal H = imap(hr,H); 653 776 list sp = splittolist(splitsqrfree(H[1],var(1))); 654 intjj = size(sp);777 jj = size(sp); 655 778 while(jj>0) 656 779 { … … 659 782 } 660 783 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 } 674 830 } 675 831 } … … 695 851 else 696 852 { 697 changering(rinC,prec); 853 execute("ring rinC =(complex,"+string(outprec)+ 854 "),("+varstr(basering)+"),lp;"); 698 855 } 699 856 list triC = imap(hr,sp); … … 724 881 // final computations 725 882 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 } 734 931 } 735 932 example … … 737 934 "EXAMPLE:";echo=2; 738 935 // 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 ; 742 937 int i; 743 ring A=0, (x(1..d)),dp;938 ring A=0,x(1..d),dp; 744 939 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; } 748 943 I; 749 // the mu tiplicity is944 // the multiplicity is 750 945 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 754 951 // you must start with char. 0 755 952 setring A; 756 list l2=solve(I,6,1);757 // the number of different solutions is758 size( l1);759 // this is equal to760 size(l2[1][1])+size(l2[2][1]);761 // the number of solutions with multiplicity is762 size(l2[1][1])*l2[1][2]+size(l2[2][1])*l2[2][2];763 // the solutions with multiplicity764 l2[2][2];765 // are766 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]; 767 964 } 768 965 ////////////////////////////////////////////////////////////////////////////// 769 966 // subprocedures for solve 770 967 771 /* ----------------------- support ----------------------- */772 /*773 * the complex ring with precision outprec774 * has the well defined name: rinC775 * 1. if such a ring exists with the precision outprec,776 * this will be the current ring777 * 2. otherwise such a ring will be created778 */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 else793 {794 execute("kill "+rinC+";");795 execute(rinDC);796 execute("export "+rinC+";");797 "// name of new current ring: "+rinC;798 }799 }800 else801 {802 execute(rinDC);803 execute("export "+rinC+";");804 "// name of new current ring: "+rinC;805 }806 keepring basering;807 }808 968 809 969 /* … … 1335 1495 interpolate( 3, v, 4 ); 1336 1496 } 1497 1337 1498 /////////////////////////////////////////////////////////////////////////////// 1338 1499 // changed for Singular 3 1500 // Return value is now a list: (rlist, rn@) 1339 1501 static 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) 1341 1503 { 1342 1504 // nv: number of ring variables (fixed value) … … 1349 1511 // d: actual variable 1350 1512 1513 list LL; 1514 int pdebug; 1351 1515 int olddd=dd; 1352 1516 1353 if ( pdebug>=1 ) 1354 {"// 0 step "+string(dd)+" of "+string(elem);} 1517 dbprint(printlevel-voice+2, "// 0 step "+string(dd)+" of "+string(elem) ); 1355 1518 1356 1519 if ( dd <= elem ) … … 1362 1525 int thedd; 1363 1526 1364 if ( pdebug>=1 ) 1365 {"// 1 dd = "+string(dd);} 1527 dbprint( printlevel-voice+1,"// 1 dd = "+string(dd) ); 1366 1528 1367 1529 thedd=0; … … 1372 1534 if ( n-1 > 0 ) 1373 1535 { 1374 if ( pdebug>=2 ) 1375 { 1536 dbprint( printlevel-voice, 1376 1537 "// 2 ps=fi["+string(dd+1)+"]"+" size=" 1377 1538 +string(size(coeffs(ps,var(n-1)))) 1378 +" leadexp(ps)="+string(leadexp(ps)) ;1379 } 1539 +" leadexp(ps)="+string(leadexp(ps)) ); 1540 1380 1541 if ( size(coeffs(ps,var(n-1))) == 1 ) 1381 1542 { … … 1392 1553 else 1393 1554 { 1394 if ( pdebug>=2 ) 1395 { 1555 dbprint( printlevel-voice, 1396 1556 "// 2 ps=fi["+string(dd+1)+"]"+" leadexp(ps)=" 1397 +string(leadexp(ps)); 1398 } 1557 +string(leadexp(ps)) ); 1399 1558 dd++; 1400 1559 } … … 1403 1562 ps= fi[thedd]; 1404 1563 1405 if ( pdebug>=1 ) 1406 { 1564 dbprint( printlevel-voice+1, 1407 1565 "// 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, 1409 1568 "// 3 ps=fi["+string(thedd)+"]"+" leadexp(ps)=" 1410 +string(leadexp(ps)); 1411 } 1569 +string(leadexp(ps)) ); 1412 1570 1413 1571 for ( k= nv; k > nv-d; k-- ) 1414 1572 { 1415 if ( pdebug>=2 ) 1416 { 1573 dbprint( printlevel-voice, 1417 1574 "// 4 subst(fi["+string(thedd)+"]," 1418 +string(var(k))+","+string(resl[k])+");"; 1419 } 1575 +string(var(k))+","+string(resl[k])+");" ); 1420 1576 ps = subst(ps,var(k),resl[k]); 1421 1577 } 1422 1578 1423 if ( pdebug>=2 ) 1424 { "// 5 substituted ps="+string(ps); } 1579 dbprint( printlevel-voice, "// 5 substituted ps="+string(ps) ); 1425 1580 1426 1581 if ( ps != 0 ) … … 1430 1585 else 1431 1586 { 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)); 1435 1589 } 1436 1590 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))+"]" ); 1439 1593 1440 1594 if ( size(lsr) > 1 ) 1441 1595 { 1442 if ( pdebug>=1 ) 1443 { 1596 dbprint( printlevel-voice+1, 1444 1597 "// 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) ); 1448 1601 1449 1602 int i,j,l; … … 1525 1678 "Numerical problem: No root found..."; 1526 1679 "Output may be incorrect!"; 1527 nares= @ln;1680 nares=list(number(0)); 1528 1681 } 1529 1682 … … 1541 1694 rn@++; 1542 1695 } 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]; 1544 1700 } 1545 1701 else 1546 1702 { 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; 1553 1708 } 1554 1709 } … … 1562 1717 if ( dd < elem ) 1563 1718 { 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]; 1565 1723 } 1566 1724 else … … 1574 1732 } 1575 1733 } 1734 return(list(rlist,rn@)); 1576 1735 } 1577 1736 … … 1581 1740 "USAGE: fglm_solve(i [, p] ); i ideal, p integer 1582 1741 ASSUME: 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). 1742 RETURN: 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]. 1586 1747 NOTE: The procedure uses a standard basis of i to determine all complex 1587 1748 roots of i. 1588 It creates a ring rC with the same number of variables but with1589 complex coefficients (and precision p).1590 1749 EXAMPLE: example fglm_solve; shows an example 1591 1750 " … … 1598 1757 } 1599 1758 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); 1602 1767 } 1603 1768 example … … 1606 1771 ring r = 0,(x,y),lp; 1607 1772 // 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; 1611 1776 } 1612 1777 … … 1618 1783 ASSUME: i is a reduced lexicographical Groebner bases of a zero-dimensional 1619 1784 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. 1785 RETURN: 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. 1625 1788 EXAMPLE: example lex_solve; shows an example 1626 1789 " 1627 1790 { 1628 1791 int prec=30; 1792 list LL; 1629 1793 1630 1794 if ( size(#)>=1 && typeof(#[1])=="int") … … 1633 1797 } 1634 1798 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; } 1643 1800 def oring= basering; 1644 1801 1645 1802 // change the ground field to complex numbers 1646 string nrings= "ring "+orings+"C=(complex,"+string(prec)1803 string nrings= "ring RC =(complex,"+string(prec) 1647 1804 +"),("+varstr(basering)+"),lp;"; 1648 1805 execute(nrings); 1649 1806 1650 if ( pdebug>=0 )1651 { "// name of new ring: "+string(nameof(basering));}1652 1653 1807 // map fi from old to new ring 1654 1808 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;1664 1809 1665 1810 int idelem= size(fi); … … 1674 1819 } 1675 1820 1676 if ( !defined(rn@) )1677 {1678 int rn@;1679 export rn@;1680 }1681 rn@=0;1682 1683 1821 li= laguerre_solve(fi[1],prec,prec,0); 1684 1822 lis= size(li); 1685 1823 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@; 1688 1826 1689 1827 for ( j= 1; j <= lis; j++ ) 1690 1828 { 1691 if ( pdebug>=1 ) 1692 {"// root "+string(j);} 1829 dbprint(printlevel-voice+1,"// root "+string(j) ); 1693 1830 rn@++; 1694 1831 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); 1703 1845 } 1704 1846 example … … 1707 1849 ring r = 0,(x,y),lp; 1708 1850 // 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; 1712 1854 } 1713 1855 … … 1718 1860 p>0: gives precision of complex numbers in digits (default: p=30). 1719 1861 ASSUME: 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. 1862 RETURN: 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. 1865 NOTE: 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. 1728 1869 EXAMPLE: example triangLf_solve; shows an example 1729 1870 " … … 1736 1877 } 1737 1878 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); 1740 1887 } 1741 1888 example … … 1744 1891 ring r = 0,(x,y),lp; 1745 1892 // 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; 1749 1896 } 1750 1897 … … 1756 1903 ASSUME: the ground field has char 0;@* 1757 1904 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 1905 RETURN: 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. 1908 NOTE: The proc uses a triangular system (Moellers Algorithm) computed from a 1764 1909 standard basis to determine recursively all complex roots with 1765 1910 Laguerre's algorithm of input ideal i. … … 1774 1919 } 1775 1920 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); 1778 1929 } 1779 1930 example … … 1782 1933 ring r = 0,(x,y),lp; 1783 1934 // 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; 1787 1938 } 1788 1939 … … 1793 1944 p>0: gives precision of complex numbers in digits (default: p=30). 1794 1945 ASSUME: 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 1946 RETURN: 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. 1949 NOTE: The proc uses a triangular system (Lazard's Algorithm) computed from 1801 1950 a standard basis to determine recursively all complex roots with 1802 1951 Laguerre's algorithm of input ideal i. … … 1811 1960 } 1812 1961 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); 1815 1970 } 1816 1971 example … … 1819 1974 ring r = 0,(x,y),lp; 1820 1975 // 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; 1824 1979 } 1825 1980 … … 1828 1983 1829 1984 proc 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@* 1831 1986 l a list of finitely many triangular systems, such that the union of 1832 1987 their varieties equals the variety of the initial ideal.@* … … 1837 1992 l was computed using Algorithm of Lazard or Algorithm of Moeller 1838 1993 (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.@* 1994 RETURN: 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.@* 1844 1997 EXAMPLE: example triang_solve; shows an example 1845 1998 " 1846 1999 { 1847 if ( !defined(pdebug) )1848 {1849 int pdebug;1850 export pdebug;1851 }1852 pdebug=0;1853 1854 string orings= nameof(basering);1855 2000 def oring= basering; 2001 list LL; 1856 2002 1857 2003 // change the ground field to complex numbers 1858 string nrings= "ring "+orings+"C=(real,"+string(prec)2004 string nrings= "ring RC =(complex,"+string(prec) 1859 2005 +",I),("+varstr(basering)+"),lp;"; 1860 2006 execute(nrings); 1861 2007 1862 if ( pdebug>=0 )1863 { "// name of new ring: "+string(nameof(basering));}1864 1865 2008 // list with entry 0 (number) 1866 2009 number nn=0; 1867 if ( !defined(@ln) )1868 {1869 list @ln;1870 export @ln;1871 }1872 @ln=nn;1873 2010 1874 2011 // set number of digits for zero-comparison of roots … … 1876 2013 { 1877 2014 int myCompDigits; 1878 export myCompDigits;1879 2015 } 1880 2016 if ( size(#)>=1 && typeof(#[1])=="int" ) … … 1887 2023 } 1888 2024 1889 if ( pdebug>=1 ) 1890 {"// myCompDigits="+string(myCompDigits);} 2025 dbprint( printlevel-voice+2,"// myCompDigits="+string(myCompDigits) ); 1891 2026 1892 2027 int idelem; 1893 2028 int nv= nvars(basering); 1894 int i,j, k,lis;2029 int i,j,lis; 1895 2030 list resu,li; 1896 2031 … … 1901 2036 } 1902 2037 1903 if ( !defined(rn@) ) 1904 { 1905 int rn@; 1906 export rn@; 1907 } 1908 rn@=0; 2038 int rn@=0; 1909 2039 1910 2040 // map the list 1911 2041 list lfi= imap(oring,lfi); 1912 1913 2042 int slfi= size(lfi); 2043 1914 2044 ideal fi; 1915 1916 2045 for ( i= 1; i <= slfi; i++ ) 1917 2046 { … … 1925 2054 lis= size(li); 1926 2055 1927 if ( pdebug>=1 ) 1928 {"// laguerre found roots: "+string(size(li));} 2056 dbprint( printlevel-voice+2,"// laguerre found roots: "+string(lis) ); 1929 2057 1930 2058 for ( j= 1; j <= lis; j++ ) 1931 2059 { 1932 if ( pdebug>=1 ) 1933 {"// root "+string(j);} 2060 dbprint( printlevel-voice+2,"// root "+string(j) ); 1934 2061 rn@++; 1935 2062 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]; 1937 2067 } 1938 2068 } 1939 2069 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); 1944 2078 } 1945 2079 example … … 1949 2083 // compute the intersection points of two curves 1950 2084 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; 1953 2087 } 1954 2088 -
Tst/Long/solve_l.res.gz.uu
rd1a54b r6ed15c 1 1 begin 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`` 2 M'XL("$/8=4(``W-O;'9E7VPN<F5S`.U=6V_;2-)]SZ\@@@'6BDBY[Y<$]L-> 3 M'@+L?@\[BWT9S`2>1$Z$]26PG(R27_^=IKJKFQ1M49X(`V08!+%,%JNK3M]. 4 ME=B5'__S]]?_5U45/Z].3Y_]&'\3"_Q6K6^O/B_?K!?WZ_NJJ=8?;N_NJ_OE 5 M^GY=7=[>520L%_FS6E3_?/W7ZCD>65RM?GW^BN[H\PH7WZQN5O<GLU?/PL_J 6 M_#RV<;6X6?ZV6-]?W).\B?+O;V[OEB?/__;?'ZO7?Z]^>/WN)3V#^_7GBB]$ 7 MQ;WWIYR?<E=Q\U*ZEU)7M[]>O/UP?7%3_6/SL?KA.=J$2UGER^KWJB13[7D& 8 MP$4`6H4]"'R6XRP@_/`?DN,97(Y>*2"IGM^M;MY7=VM>G56L/MG47^JOL_KJ 9 MXZOGU:ZS#\F2<GG>D_E0#TBIP@6]J#[>7GVI+ME9M9E_F7^=\RR([MO>Y+CY 10 MBZCFE7FQP;_RQ9?V\U>,*)7%;1(79]675EQ`O+&MM&Y__9JE79*62?GVF:_X 11 MMZD**X#XZMWRXJI:G5WR^E+4EY)N"D8WK\\N6;TKP+.S`MA_NENNW[3]>O+A 12 M]OKV_<FJ_C"K.;#^B?_\\ADZ./W$GX8MN+=6,BT$MUIXSK5P7C(NO%:<R59> 13 MD#Q;..>L=9H;)962QDHKE&?2"VN8XZVX+,05E\ISRQ33C@NFC=%*8-"B22?L 14 MLZ2Z,"D\8Q6SGDOGM)::"^.=$9[!-L7=@$6X;KUAVFK%I#:20]8J[YE5NF<1 15 M'!8P0TNEM3#.*R^\#'^UX%(*YIXEX<*DD\8LX+/D&GXR9@"-<0P0"*F]AO=J 16 M_OJ%62@@)SA7+#A@C3#*6.>D-U(9(68]PT]@"FQF@%#H`"K'LU+"=<:=U5X( 17 M*)4+#J^T<MP!2*.YQ2>C%#0+YH6>]=P[,0MO`(6PDEL)M+037$@OE<0E*5L[ 18 MM41_2W2!8$9Z[]!SS&@68+&*SY[]I)Z`0',,!)IOCT`S"@$]@(!>*"N<\O"; 19 M6_S!*)..&\P;A:9<Z"ZW$!K-8(`[J5RPV3!C/&>X(F'$#@)V89PS&OY)3#88 20 M#3G)#<?\LL;!5K7`K++.LF`_H#;.!%SQ6<%';7;<=PNH\T(Y`\^]T9XK]`GS 21 MN`0LC&JM=*J=L,!<6<8DM&-&&/@&Z#3ZZ2?S!/^;;^[__`C^-Z/\M[O^8Z54 22 M3F)(AV&#`:8TA"40@)M8;GCL+"D#2AC'K+55\[``:HPPH_2.^V;!)(>M6BEA 23 MO368,T#."24Q'"WST,D6L%UZ[A17'(K@D;!`EZ,9'3IA!P&L<-;!*X'U'$LC 24 MC`3V0-1CJF&U,RVJ,-.'":'A/4>#QJ`K/=;UL$1;(.`.1V!^!`3FQT"@&8-` 25 MVE+!.*X_O@F;ZO7%?=I2K].>^@8`G7UX\7YY<\)G3?N#S>:ZO>!FC6H_P.TW 26 M<#K*B=E\TWG`I`>X2D]P/IN+J&1NLA*9E,C9_$M'B2<EEI2(&:A)5"*S$I64 27 MJ-G\:ZE$D.F<;.=RV!+]\]DFNK-]EKP0Y(4@+^!9?#AXEF`B92999!(VY%]2 28 M3_X)\@\[2E)ODZ=%0R(YC2;1ADUMV-0&N1_;D.2^(/<%N0](=IV1A5MHP_U\ 29 M]B6:O]4HDT;)R4)+=HDN%"ZH\,E,GQ`@,Y-214H%F:E)O2M`20W)`I0P9-G/ 30 M9U^C[JU*77J9?8O6A4<PS$7JWB@A4E>:^+/%@(LT,DQ2*JA[BH>I>TB-CS^W 31 M-LJDQI(:<JU0(_O6B(@F[`]J5.H2LB9WA2"$A.BYHMJ'-<UMG08-=8M-W9(5 32 MTWPK++5DGZ;&9`%":,:D[NBXFAV,E@51C.+8ANS#9EL!&H(^&2-%X7DR0??` 33 M:L<>]\D07_A4V!_;"ZL9AE!4$'[C\;<(GVA'@A#Q:K1PZZV0VZLR-BW:?A(J 34 M7HWNDJ:V(P2M-CQ:$29!M"K<-_%I34^'J[;7?HN0((1(5[*D!4$0".F^:#V6 35 MC.P.O_&NO;+U6$:/DW6R]5C*KG6R]5@JD@V_:9*AG:>(8H4>#JK%`4'UCBPI 36 M-^?[98KL@7#]D#J+^8,":LD.":@E'QE02_%(0"WEGH!:%KA+W0FH5U,4/471 37 M4Q0]1=%3%#U%T5,4/3Z*EJ831:^N4^A<DE`7Z5&,:&/0+#IAHTNLEB(603%K 38 M#)!%)[@B&IQI.D5Y,1@NHQV[_:%BB%LVG=A@#%AS+!BCI!QKB]2@SO%RY**) 39 M4_K4W#9J+%5%&$R,!LO8QB?K&K*$)R+>"R;M5D:GX*U#X2V%2$TW<(N0,I(K 40 MPNJ,JRY"7DZ(4QQ'?<1S6$F@Q^A.=;N>8!0I[A+=N,R7X;,@[90WB6%4)V)R 41 M_<BIHS%AH%/8%,.-;E!%<5$9E-!=$_%3O9"HR'6DO$N*HBBOTHF;^&[6PJ1+ 42 MDH+\3E!%@5G`3G8S-*:;>9(9&$/0R13HF1AZQD=,&8[E0+O()I!_/CWC4I`F 43 MNM&EHH"88M#@JDZCK`C=A-G-#'!;&)QP4WE1*6(2B9CDW?(RQ#%_.[M\?W6= 44 M&'N->.W5LQ`2_25?_DOU]FYY<;]\5UVTD4]=K6ZJWSZLWG[`A:O5^KZZ:_^] 45 MO:QN/EW_NKQ;5R?W'Y9!R]O;ZX]7RTWX*O;3_>KV9CVK5NMJ?8](Z]VB"A+_ 46 MN:TNWKY=KM<5'JF2GIWGZNK^R\=E=;*Z;.5N+JZ7U;^KWR[6U<5ZC=`-QK6! 47 MW&U[^VYY_^GNIOI\<?5I.7M9Q36ZJM;+^S9T^_>KK<FO,B((Q=+=@`K%-PI! 48 MUU9V*);YMH&#.3QPV(UEOG%X=7!T-1#*[*4QJR/0F-4Q:,QJ#(T9"&7VTI@C 49 M(#`_!@+-*`2&0IG'@SD%:Q^/Y:1]0C2[^O;1[&I,+#<4R^P!H#D&`,VW!Z`9 50 M!<!`,+,OF'.`]O%@+B0_JX."V=41@MG5F&!N()39ZW_SS?V?'\'_9HS_:?,L 51 MWK918I%WV+7(&ZP\K_ZWNKKJ;;OJ/#,4/'1Q\_Z?`R2E<^?/P%.4[O&4B9P< 52 MFYQ\7SF6IY"3[RK'\B1RLB_1_"1R\D>EVI]"3HX!P!^6:7\2.=F7:3Z<G/QA 53 MF?8GD9-O[O\?EFE/6ZDIR(E]@)RX07+B=\G)Y</LY/+/0T\TF^C)1$\F>C+1 54 MDXF>3/1DHB>_@Y[H(G>B'\B=Z,'<B=[-G?SK07;RKS\1.9ER)Q,YF<C)1$XF 55 M<C*1DXF<_"YR8@:)1_&*B7;C#L-KGP_#&S;\WKZ,[]GS>B/JC=SWZOZ0.#7! 56 MS_MBK!Z6%-D9(\MW^/E\(^8;69R,-ZIXD;_AV_?X>?N>O<*'%QO1OM2_$>TE 57 MUUZ2N,09KL6/N"U_R=3.Z.)E_P9"'$^*K=9YM1';W\0O43.GIN3VDZ!/':VF 58 M/!00'M+)T$T\3]!:6RAWI)6L;7:MM8^<(3!NSQD"4Q11L&SP4/Z&/7@J_Z0E 59 M1@Q<30IL5<Z&684MRSDE/$A2N_ZPA>4&G$Q;'_91#'PG!-93PZ77-KPFU9M_ 60 M?!$V7\PE3";),06=D`RB2KIV4H_6*3N&RK`16,VPL&(F@QMB$<":BT4=JX#8 61 M<AO,8^S3F-<*4EB*000D=F&L+MCIL5(,<,/]'P&"TSD,PF(_#8.C$!#!@ 62 M@659'ZBZP1+F/,P)I!<K'].M:I!:!6BP/ALG''S")F>Q!TM0*[9+QJ`4VZE3 63 M&NNXX5A7L64[!M(NL8B&97FTT@X9"YLK>@K/.700@@`&1B##J0:-1[<8:!'B 64 M#XU>!<8<J')LQ0X<`RZZ!_CH7@R:8V`P6ND!C,!ABI.$Y[(V>8T_$7P=+ 65 MC0<?"ZS6AN"LQ1?D!Z&:!P4'*T-\!^J.Z`J!DL23N\<&^`+X81AN&\?#P1XC 66 MA,/,`"!BM,[N9#!AMEIT$9@^PC^FO=(A=$"LAMBP52H%Z$7@_@C\C`H4$[`9 67 M;-P6CND'2.E>#)HC8#!:YR$8-*,P&#P]@9`6@T]X"RX-MJ,#>Y9A88)M?CO" 68 M..(PA,4A>O,2,T9`""L2!AZ"(3<T%00#Q<9B!(\]0OM`X.$^%MR0(/"CE7:F 69 M`D//*,1D%A!@$F$IU,P"8BRHH'A;"#B#S3JLKH`;#N%?R"+0<.C4ATY//([` 70 M_!@(C%9Z"`+S$0@D!L&':Q`D"M&>I-BP^%YY?N]?T-50<X"7]_O'\%T\/!'E 71 M)>1%1U[DZ@8DKTA>05YVY&4J$L#+(_8[1\;5K-'IK?)FJ,Z`H38,^9"M2VI% 72 M[\5\FTLK](XOL,ZK\9:T6]*>?4G:TYGD?%AZ[GK:W*QQ6:V#VG38I.D;)G;] 73 M+8HS>++(DY?9HJ@N'/?O6=1PMF/2/%[3Z:!(U`+0N1R0+LS@_1/=N:,,N:"Z 74 MU0_:D_\\]57[5#YYW3R@S9.V?+##%*<A<D&,5!2`I_YJ`<EGMQLZ5I`TYGXR 75 MQ?&!7-\@=EG4K:C3#)W33F>[FYXWR=)L?8E*KK_1J4`1CK6D6:IIN.5NMM3- 76 MR8!\C+SI.3O/)W4<F:(2D#082K]S08_DMZ`1$@TT-$02O#KI%S12VL$F!_0[ 77 M.NK#.VZ'F@5]/'?P*ZMBQ`,Y$1:?RUXD,,AY<M07G9YQ*.I?)$&1#O1L9$>[ 78 M)EVM6MD'M:,V*2M<%>D(4'JV`QB)R73L)XU6&C>=NAKQH$\2(N_RT.N<E\GU 79 M5N)QG_B@I+D@:"X(ZK-.%8W8>U&%RBID4B&IFDMA3VE^499%ELKR+A".\42U 80 MBM3F\A0TF`7A+O)@+CS6A0NY4$MR(0_K:(#)WM!XEM0](H_G#C9)7>[DJ,ZF 81 M<TX9FVX/44V16&XB;:5T'"Z,94<J5(*W(1S(9U]T8`$)57TI2HJD1T2J8I%V 82 MY-QL]IYP"],I/BGSP"\ZH-.NHW93:P4Z(I7)<*FUI*X#-LG+5$BCZ<.9JVDT 83 M!!A9*8N1D['+A4UBQ8U&9"M85B+[L'>4)*]TJM!!SQ;.E-B1,SI5\2"Q7,G# 84 M%HDW*X<S@NJPC."0.#6ASD>)Z<(J,Y`.S)+VFR<#K3M&,M#ZXR0#'7LD&>CX 85 MGF2@*[K?R3$%1:8$X)0`G!*`4P)P2@!."<`I`3@E`)UZH'R*Z8<MC,+P3KT& 86 M3DDNWDDDI2(K*<C(9192YDPGMDT1@4GE4,JR%)EP9V.HQ(8IDUXJ6;+5E:AT 87 MS"?F**H(GJ.RI(07.:NMKOA[IVJ+[E1MX3&76/J6DE$Q$=A0?=&B5(5[Q(@( 88 MJMM":2E`4#$%6,2&N1YJZB6JBU)4?.U"E,J!-E23--DEBJ0,E4>A\BQE)C!V 89 M'$])G;)@#*,&<RD:SKL%9W+9G9C?*T+47"`U&K6;`$N56`;2>#FUD;R2Y-4@ 90 M3#E3E1+1R2V7TG<YZU'4"76/F)GS.)3DYOV,73)4%TF_G%;<G20\9:MC'IY" 91 MZI1ARYF?W23>X(RAR=M$Q32'4W8M%S95I#O-9QHS>8F@,4/S-&;<=@)K8:F@ 92 M9D/=-#":::Z6U7)RP="B#@]5R3'T=%&^5'2S`8K&2)P!N\FFHE\[2;!4)L?1 93 M_=1<61$G:4Y:!K)?0\FI`7-R/B1](]'P?A:LH5K`19E7]TB/%1G)U&5I?-I^ 94 M9DL4V;FD=+#W<FXL?8=`2EW*;Q5IEYSJ2&-L9PDH`*%A$U-?YD7OCJ`D$BOK 95 M(.<U:TZ+5?%%EB=-ONCYG+,<2/1RTN32Q(GI*=.WOY/KDVEU&,KR\K2DQLR5 96 MZ4\\^AXH=&BN+9P[<IX[L(EK1TQUF?[<\Z3+#N7YLH/<T===,?EE>E-($B\( 97 MG25I<1S(XN6"XBD%1AG;.<W,E$8<'!5%[C)ADI3GBG"NR#XY,Q5OZK[8[^SX 98 M%_O'!(>K(P2'8W4>%!RNQ@1&P\FB?<'A$3`8K?.@X'`4!@\DBQY/F*V.D#`; 99 MJ_.@A-EJ5,+L@631XXG3(V`P6N=!B=-Q&`PDB_:&R*MCA,ACE1X4(J]&)`D& 100 M4D5[TR3'0&"TTH/2)&,0&#K!L#=INCI&TG2LTD.2IJM12=.A4PQ[D^?'P&"T 101 MTD.2YZ,P2-S!%<S*E\<L<^%]SX9..W@^E:@:8F->]-C8[R-CWU>F_FED[/O* 102 MU#^)C'UGWUX^B8Q]9]]B/X6,?5??5SR)C'U?WUD]B8Q]9]]@/XF,?5]O,B3J 103 M(#,9\^H!,J8'R9B92G(]0,?ZR;&)CDUT;*)C$QV;Z-A$QR8Z-M&Q1^A8D1OS 104 MP[DQSH9R8]B!IA)D`V0,@V@B8Q,9F\C81,8F,C:1L8F,361L+!G#\G2>:80: 105 M55P-@VJ1GS'#1RE-^C_,]QVB[`J26GN^1X#.+E9G%=>;\/^4MX<<VY.%G&5! 106 M?UY=7;S_M+R[6T:N>%D<^&,+K+ZA6*(FIM#VFMQ6OMQ^D2QUJ&C)\T9:BC0] 107 MD;C/A-*87C*%GFDEL,](QH3*JW`A,>]*1-,YRWW#^6+'C9JS(4^4]4.^2"=+ 108 M;YAU@_Y`K-D1V_5)J=(KZ<V@7TK-^U+)'U'X]L!QW+=GU0FX^U4M6/UZ5F_V 109 MC*0A<6HB'\=]5$P7H^J$ZT4HWZAG+S:_A/%U(O2"+9NPT8APK1AN+UYG'>;1 110 M`1>@QM2UTH*:"8ZEWV*,JBTM`.:A>&N@(J&X*P=55+-.9X)7@`=H+/U8/QQ6 111 M*:Y4N^@9"U(9*BR"3V"1`?:^.,_8[AW:M=4D)?8:C!0?*C&VK?I0'=@;'M@( 112 MV&FH(-GM]%"X585RO<[IP)/!.[8KK0.-9EBY0NU7;;3$VJ([`P$N*FRI6,G0 113 M^\%3K*4Q%L!(!5N1N`U&BT^F&!RV&!SC*CYB9\V+DF"+U-LV'K[N+!Z"3@M_ 114 M/N.F9C6&H#683@H`LMK!(&!BLCP&Z^KF?GF'L8%0\J22=?6YKE08BV*C&B$V 115 M8BX-B1=KJE!DBJOR2O:N,$8G8SY"0-0RWS'9S(K7N%6K6M>FMK6K/<R%W347 116 M-9<U5S77-2],3L?%5Q_/NK9_K#_7,EB>)$,=19C#3Q5V"H50!.31A1*N3+&- 117 M_"+G8*W8-OPIQB:B"JV#`,BM<[@K&AN*C9YR92QZ4X?JUMB0//I@(\*SB*TP 118 MQ,%;3D/E88TX"+]S@4?GFEL#!H/!=(J!CWL.'$4BO#'A6=%@3]08%O94&VM9 119 MX+]H`0.';8)B@2Z3F`S\%*P9`\@P!W/1#;@A,`TT#,8V@<&I0VE4:&S*>QP, 120 MJR7D2F/-W:"Y0B.HE;0,U`P+!V=HC4QIZQL'^YK"^E`J%Y$?]NX-&LD>RU!. 121 M&9LUAS?SB!,:8YLF02JQAWOUI>$2"ZUCH!D<L9ZRI]"(SH"QP-0;1IV5:UKB 122 AD7$S0_(\,Z38+K7K^XO[3^L3/GOUP[/_!]4`6N?8E0`` 119 123 ` 120 124 end -
Tst/Long/solve_l.stat
rd1a54b r6ed15c 1 1 >> tst_memory_0 :: 1 088445996:2004062311:2-1-2:ix86-Linux:nepomuck:8955402 1 >> tst_memory_1 :: 1 088445996:2004062311:2-1-2:ix86-Linux:nepomuck:13723523 1 >> tst_memory_2 :: 1 088445996:2004062311:2-1-2:ix86-Linux:nepomuck:13723524 1 >> tst_timer_1 :: 1 088445996:2004062311:2-1-2:ix86-Linux:nepomuck:3121 1 >> tst_memory_0 :: 1115019332:2005043019:3-0-0:ix86-Linux:nepomuck:668828 2 1 >> tst_memory_1 :: 1115019332:2005043019:3-0-0:ix86-Linux:nepomuck:1355220 3 1 >> tst_memory_2 :: 1115019332:2005043019:3-0-0:ix86-Linux:nepomuck:1355220 4 1 >> tst_timer_1 :: 1115019332:2005043019:3-0-0:ix86-Linux:nepomuck:338 -
Tst/Long/solve_l.tst
rd1a54b r6ed15c 4 4 LIB "tst.lib"; 5 5 tst_init(); 6 tst_ignore("CVS ID $Id: solve_l.tst,v 1. 2 1999-11-18 16:38:35 obachmanExp $");6 tst_ignore("CVS ID $Id: solve_l.tst,v 1.3 2005-05-02 07:42:46 Singular Exp $"); 7 7 8 8 LIB "solve.lib"; … … 36 36 mp_res_mat(im); 37 37 38 fglm_solve(i,30); 38 def rinC=fglm_solve(i,30); 39 setring rinC; 39 40 rlist; 40 41 41 42 setring rs2; 42 triangL_solve(i,30); 43 rlist; 43 kill rinC; 44 def rinC=triangL_solve(i,30); 45 setring rinC; rlist; 44 46 45 47 setring rs2; 46 triangLf_solve(i,30); 47 rlist; 48 kill rinC; 49 def rinC=triangLf_solve(i,30); 50 setring rinC; rlist; 48 51 49 52 setring rs2; 50 triangM_solve(i,30); 51 rlist; 53 kill rinC; 54 def rinC=triangM_solve(i,30); 55 setring rinC; rlist; 56 kill rinC; 52 57 53 58 //////////////////////////// … … 79 84 mp_res_mat(im); 80 85 81 fglm_solve(i,30);82 rlist;86 def rinC=fglm_solve(i,30); 87 setring rinC; rlist; 83 88 84 89 setring rs4; 85 triangL_solve(i,30); 86 rlist; 90 kill rinC; 91 def rinC=triangL_solve(i,30); 92 setring rinC;rlist; 87 93 88 94 setring rs4; 89 triangLf_solve(i,30); 90 rlist; 95 kill rinC; 96 def rinC=triangLf_solve(i,30); 97 setring rinC;rlist; 91 98 92 99 setring rs4; 93 triangM_solve(i,30); 94 rlist; 100 kill rinC; 101 def rinC=triangM_solve(i,30); 102 setring rinC;rlist; 95 103 96 104 //////////////////////////// -
Tst/Short/solve_s.res.gz.uu
rd1a54b r6ed15c 1 1 begin 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``` 2 M'XL(".;7=4(``W-O;'9E7W,N<F5S`.U<:V\;-Q;][E]!!`4J13-CDI=/9VU@ 3 M=]L/`=K=15,L%BC20$GD>+"2;4AR(OO7[^%HR*&D<?Q8&P%:"8$>,Y>7]QY> 4 MDN<PDM_\^L/K?S#&Q`D[/#QXTWZ2%3ZQQ<7T\^3=HEHNEJQDB[.+^9(M)XOE 5 M@IU>S%DRIJI[KRKVT^N_L1=H4DWK]R]>I3OZA.'BN_J\7@Z&KP["*SLY27V< 6 M3[Y4B^5XF>Q-:__I_&(^&;SX^[_?L-<_L.]>?SS*XRH^,U$I)CE7AUP>"LF$ 7 M.I+\2#KVIC[_=#4=S]F/JTOVW0OTB90ZET?L_W690K4G'0"N!:!QN`6![^P$ 8 M#PC?_DAVH@-78%0R2-B+.<)A\X5@QXP7@U5Q7=P,B^GEJQ=L-]G;;)-S.MFR 9 M.2MZK%26@J[8Y<7TFIWR8[8:78]N1J(SQ/"M;PK<_%VR$3,O5WBFE]?-^QM4 10 ME.K,;327Q^RZ,9<P+VUCK9N/-YVUB]84G:_;W."Y9%D40+S^.!E/67U\*HI3 11 M69Q2NBEYNCD[/N7%KH'HDI7`_FH^6;QKQG5P=C&[^#2HB[-A(8#U;^+MT0$& 12 M.+[B4?)*>&N):RF%U=(+H:7SQ(7T6@E.C;U,]KQRSEGKM#"*E")CR4KE.7EI 13 M#7>B,:?,7`E27EBNN'9"<FV,5E)XCRZ=M`?1=192:&,5MUZ0<UJ3%M)X9Z3G 14 MB$T)UQ,1KEMON+9:<=*&!&RM\IY;I;<B0L(286A26DOCO/+24_BGI2"2W!U$ 15 MXRRD06DJY$Q"(T_.#:`QC@,"2=IK9*]&KU^:2@$Y*83B(0%KI%'&.D?>D#)2 16 M#K<"'R`4Q,P!H=0!5(&V1$B="V>UEQ).J1+(2BLG'(`T6EB\,TK!L^1>ZN%6 17 M>@-3>0,HI"5A"6AI)X4D3XIPB:B)4Q/&FS`$DAORWF'DN-$\P&*5&![\IAZ! 18 M0/D<")1/CT!Y+P1T#P*Z4E8ZY9&WL'B@RL@)@WFCT)4+P^4JJ=$-"MR1<B%F 19 MPXWQ@N,*(8@=!&QEG#,:^1$F&X*&'0DC,+^L<8A559A5UED>X@?4QIF`*]XK 20 MY*C-3OJN@CLOE3/(W!OMA<*8<(]+P,*H)DJGF@D+S)7EG.`=,\(@-T"G,4Z_ 21 MF4?D7SYY_J-GR+^\5_YV-W^LE,H12CJ4#0I,:1@3$$":6&Y$.UA$`274,6]B 22 MU2(L@!H59I3>2=]4G`1BU4I)ZZW!G`%R3BI".5KNX9-7B)V\<$HH`4?(2%J@ 23 M*]"-#H.P@P!6..N0E<1ZCJ4100)[(.HQU;#:F095A.G#A-#(7J!#8S"4'NMZ 24 M6*(M$'`/1V#T#`B,G@.!\CX(Q"T5C&-V^2YLJK/Q,FZIL[BGO@-`QV<O/TW. 25 M!V)8-B]\.-+-!3<L5?,&:;]#TJV='(Y6&PU,;"!4;"'$<"1;)R/3.:'HA(:C 26 MZPTG/CFQR8D<@IJT3JASHJ(3-1S=Y$YD"EVDV`7U1Z+?'J_:=-9M4Q8R92%3 27 M%LBL;1PRBS`E9R9&9"(V*;_H/N4G4W[84:)[&S/-.I(Q:72)/FSLP\8^4OIM 28 M'Y32ERE]F=(')+O)4)86^G!OCZ_;\-<>*7HDD2*T*2ZY"84++GP,TT<$4IC1 29 MJ4I.90I3)_<N`R5V1!DHH63YV^.;UO?:I<ZS[')KHPM-4.8R#F]K(>-0FO:U 30 MP4#(6!DF.I5I>++&:7B2&]^^KF.DZ,8F-RFUS`UM1R-;-!%_<*/BD*1HNJ&0 31 M"2$IMU)136.=YK:.19.&Q<9AZ1RG^99%:E-\.G5&&0BA&Q.'8R/5+L$VLF"* 32 M*F[[H&W8;&.02M#'8$AFF<<0]!983>T)'P/Q64Y9_&U_835#";4.PB?1?FKA 33 MDTTE2-E>;2-<9RMI?97:KF4S3E*U5]MTDZ=F(&1:;40;19@$;53AOFE;Z]0Z 34 M7+5;_3<(R810\A4C:4"0"81X7S89$T]QAT]B,UYJ,J8VXQ@=-1D3;49'3<:D 35 MDFWXI)--VGDR%2MUOZB6#Q#5.[;)N3FYVR8[/9!N6U)W9OY!@IKX0P0UB7L* 36 M:I)?$=1$=PAJRG`GO2&HZ[V*WJOHO8K>J^B]BMZKZ+V*OK^*)K.AHNM9E,XY 37 M"74M/6H5;2N:Y89L=)'5)L4BDV9M!;+<$%>)!G<T/:F\5@SG:L>N7U0K<?.N 38 M(QML!6NG!5N5U&EM&3O4G5YNN6CDE#YVMU:-N:L6!M.JP5S;^!A=F2(1D8AO 39 MB4F[MM%1O&U0>)LD4KDIW%I(>;++9'6'J\XDKTB()QV7QDATLC*!WJH[M3GT 40 M"489=9?<U&4^E\\R>4_G)JV,VE!,;ELY;7B,&.@HFUJYL2FJDB[*14FZ:UK\ 41 MU)8DRLXZXKE+5%'I7&5#-XG=4PL3+U$2^1NB*@FS@!UMGM"8S9,GZH`Q"3J* 42 M0L^TTK-M8G(YU@GM[#0AY>=C&Q=%FMQ4ERH)XJ1!0ZHZ5EDFW:39/1D0-@LX 43 MXJ:Z1273)`1-\G%R&G3,WZ%A3C]-9Y&S%U!LKPZ"*/J^N_P]^S"?C)>3CVS< 44 M:)^"U>?LRUG]X0P7IO5BR>;-\\4I.[^:O9_,%VRP/)L$+Q\N9I?3R2K\9^S5 45 MLKXX7PQ9O6"+);36QXH%BU\OV/C#A\EBP="$13\[[0JVO+Z<L$%]VMB=CV<3 46 M]@O[,EZP\6(!\8;@&BEWT=R>3Y97\W/V>3R]F@R/6+M*,[:8+!OQ]LNK=<BO 47 M.DP@QN+=@$M2.`JR:VW;IV:>5CJ8ATN'737SQ`+KP?JJ1\S<263J9R`R]7,0 48 MF?H^1*9'S-Q)9)X!@=%S(%#>"X$^,?-U.:<0[=?5'-E'Z-GZZ?5L?1\UUZ=F 49 M[@"@?`X`RJ<'H+P7`#URYBXYYP#MU^5<./YD#Y*S]3/(V?H^<JY'S-R9?_GD 50 M^8^>(?_R/OG'S3/[OHV25;?#+F2WP=()^V\]G6YMN^HDYRAH-C[_]%,/3=FX 51 M\V=@*DK?QE3,GJD\.U/Y8QVY/(:I_*&.7![%5.XZ=WX44_E6)^^/82K/`<`W 52 M.WA_%%.YZ^#YX4SEFQV\/XJI/'G^W^S@/6Z>V?F(<K<P%=_'5#3O8RJGMU.5 53 MTS\/5]'B%JZBY9ZK[+G*GJOLN<J>J^RYRIZK/(BK:.JXBE;]7$7K7JYB>KC* 54 MS[=2E9__1$S%WL94W)ZI[)G*GJGLF<J>J>R9RIZI/(RI])Z8&-[Q%R/N]ZMY 55 M([M?S1OJ_X*_B=_'O^O;_9N&R:TZN<-`Q^_4@SL)O0K?N5]1>&J^4L\[0]"L 56 MZ?C3U60^G[3DZC3[-CQV7(")^:S3_AUFLJ7UXMS\OSVH1%ATPU2B79-RRZ3= 57 M<<+JC8U>8=5H+#R&AO/PLY"X(F<6HTV+&'IV#F9<M9-&(7A?)J`T?;F0HSP; 58 M;EUO/C`K=\QV<U(JSPJ+8F]>2HVVK6(^V5]KL+R_ACX<LP'([K20O'@]+%9W 59 M5%*?>>I"G-S+3&95-1!8)#!K]?#EZO=07P.I*SXIPTXFP[6LW%Z^[GS05PLN 60 M0`UV"F*'.0WJ*+T5W"O7,`1@'O@%-@P?^`<HHPH%DPTF5@IL2QH\Q'.)Y0/T 61 M037TRH#(FK`(@/H9<L#>4S;`8!\*VU)8\+!]A$KQ8;%H>O6!P'HC+*Z":X1% 62 M;G/0`[=0@5&"5QNOL"R2;3IUX)U<@W:`GFBCL8*&KR5FA8`4%1>*M,7HATRQ 63 M*35]2H%*-1Q)<J$]EC\R77'8[)<L5M]O4;*F6Y2LK>)HV_:'01N+AW7QIS2? 64 MCX4I>(&=VAI,)]``QPN'@(")Z>S#'[HX7T[FJ`UHKP&C@GTNF`JU*%>JE'(E 65 M1V2BN<O65"=2*(YU*]G'+AB7?O1S"0-9=#_H<=2%R42!6X4J=&$*6[C"(US$ 66 M70A9""J$*H0N1!>R4VTEUY?'F[%?%I\+"I%'2ZRD-<(1A\J*P$4(#,(%E@%9 67 ML:)K&F%#Y-SY0]0FMD!L+H$$H_H<[LK2AOWP4(#"8#1U$QYJ9"5#6R>A 68 MP"R8U6$@QZ#:X;.0:#H"_0&O#L5TB,+'/6RR1%YI$]K*4FH0-)#80VTL-`[J 69 M'CV@</@J.)88,L)D$(>"0@%!'R%<#`-N2$P#C8`%]EN'W16.X;',[X%_83H@ 70 M-06JI%;H+O,(!H=]%-(+]$]P])9":2AXB*_,H@]L#I1;(@!TTF5,@?&#DPED 71 M,VIQ0F=\549("7K-J^L2*@.3BX/9@XUX90_A$8.!8($I"&`:+).5EKW?S'"N 72 MFQG.5VRR&@=!SQ9UH^O_>;5L5M3+^<6'[!H[G5_,V+1^S]+?VCGX\3]__?E? 73 M/_T8)O>ZIEE<2[$3I4F&N\UIP_D"Q3MOS@!FXU45.G@_G<R.FOMK(SQPJY[5 74 M-Q/&5@,Q#"OJ0`Z;']ZM!C3$XHKE!V_5,&_VI5Z>-3TLYV,4]^*(I>;I(=<. 75 MTN,OQUA7>.KWUD=H)[-V);--_\$!=MF[';!U"F7SAH;KWP8&!R>-@TI_Q45* 76 MHD4AN0AOX((%%SY",1LOY_6*+698<<.W_H/[`BM%^$=%V"V*@YY.`$-1P@3/ 77 M,CSWV32>H@&SO3;!/UN[$L&RWX\/!O%?4QT8,7:.3-2K!HCU.=7ZI"F-:&LV 78 MZS/[/)[78Y12,A)8-[>-,%H][B06TFW+DUY+ZK$\WK2$:7-&A@ERW$Z<P6)6 79 ML/."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``` 77 81 ` 78 82 end -
Tst/Short/solve_s.stat
rd1a54b r6ed15c 1 1 >> tst_memory_0 :: 1 088426295:2004062311:2-1-2:ix86-Linux:nepomuck:5774162 1 >> tst_memory_1 :: 1 088426295:2004062311:2-1-2:ix86-Linux:nepomuck:8275843 1 >> tst_memory_2 :: 1 088426295:2004062311:2-1-2:ix86-Linux:nepomuck:8275844 1 >> tst_timer_1 :: 1 088426295:2004062311:2-1-2:ix86-Linux:nepomuck:1681 1 >> tst_memory_0 :: 1115019239:2005043019:3-0-0:ix86-Linux:nepomuck:450864 2 1 >> tst_memory_1 :: 1115019239:2005043019:3-0-0:ix86-Linux:nepomuck:830932 3 1 >> tst_memory_2 :: 1115019239:2005043019:3-0-0:ix86-Linux:nepomuck:830932 4 1 >> tst_timer_1 :: 1115019239:2005043019:3-0-0:ix86-Linux:nepomuck:157 -
Tst/Short/solve_s.tst
rd1a54b r6ed15c 4 4 LIB "tst.lib"; 5 5 tst_init(); 6 tst_ignore("CVS ID $Id: solve_s.tst,v 1. 4 2004-02-12 14:20:28Singular Exp $");6 tst_ignore("CVS ID $Id: solve_s.tst,v 1.5 2005-05-02 07:42:56 Singular Exp $"); 7 7 8 8 LIB "solve.lib"; … … 36 36 mp_res_mat(im); 37 37 38 fglm_solve(i,30); 38 def rinC = fglm_solve(i,30); 39 setring rinC; 39 40 rlist; 40 41 41 42 setring rs2; 42 triangL_solve(i,30); 43 kill rinC; 44 def rinC = triangL_solve(i,30); 45 setring rinC; 43 46 rlist; 44 47 45 48 setring rs2; 46 triangLf_solve(i,30); 49 kill rinC; 50 def rinC = triangLf_solve(i,30); 51 setring rinC; 47 52 rlist; 48 53 49 54 setring rs2; 50 triangM_solve(i,30); 55 kill rinC; 56 def rinC = triangM_solve(i,30); 57 setring rinC; 51 58 rlist; 59 kill rinC; 52 60 53 61 ////////////////////////////
Note: See TracChangeset
for help on using the changeset viewer.