=================================================================== RCS file: /home/cvs/OpenXM_contrib/pari-2.2/Attic/TODO,v retrieving revision 1.1 retrieving revision 1.2 diff -u -p -r1.1 -r1.2 --- OpenXM_contrib/pari-2.2/Attic/TODO 2001/10/02 11:16:55 1.1 +++ OpenXM_contrib/pari-2.2/Attic/TODO 2002/09/11 07:26:37 1.2 @@ -9,14 +9,25 @@ Priority classification (first column): [subjective an 3 nice to have 2 maybe not 1 probably not +0 no - unclassified *************************** BUGS (general) **************************** Unless specified otherwise, examples assume 32bit machine and default precision -5 setrand(5);thueinit(x^3 + x^2 - 43690*x - 3529208) - *** non positive argument in mplog. \\ precision problem +5 bnfinit sometimes gives wrong answers because we cheat on the value of +Bach's bound, using 0.3 log^2 D by default, where 0.3 should really be 12 +(under GRH). If it's not enough, we compute a subquotient of the classgroup, +i.e junk. Ex: + * setrand(3); bnfinit(y^4 + 1190*y^2 + 1416100).cyc --> [8,2,2,2]. + Wrong. The correct structure is [8,4,2]. + * setrand(1414185642); bnf = bnfinit(y^4 + 635*y^2 + 403225).reg is twice +the correct value. + +5 polgalois(x^8-1864259299553450972214799899167226732549697977945716*x^6+331143259018657601105207922631212331088735421305543663274125986698777318014979969*x^4-2225286541902342283500014249183311190477390*x^2+5); + *** degree too large in tschirn. + 4 precision problems in polgalois: setrand(7); polgalois(x^8+162644002617632464507038884216211529274267271168000002) @@ -30,11 +41,8 @@ Unless specified otherwise, examples assume 32bit mach 4 qfbclassno(x < 0) may give a wrong result [e.g x = -2878367] -4 t_SER computations much too slow when number of terms increase, even - when applying a trivial formula, e.g cos(x) at \ps 10000 - 3 many functions assume MAXVARN is a free variable, yielding bogus - results if the input involve it (only affect library programming). + results if the input involves it (only affects library programming). 3 quadclassunit not reliable when fed non fundamental discriminants (infinite loop [e.g quadclassunit(-352)], wrong result) @@ -49,13 +57,12 @@ Unless specified otherwise, examples assume 32bit mach *************************** BUGS (GP specific) **************************** -5 life of GP variables too short in pathological cases: - v = concat(v, [v=1,v=2]); concat(v, [v=1,v=2]) --> SEGV +5 readline: assume a file 'foo' exists, \rf --> \foo [\r f is OK] 4 changing primelimit from within forprime loop yields unpredictable results 3 after allocatemem() / default(parisize, ...), the rest of the command is -discarded (ends by a longjmp). + discarded (ends by a longjmp). 2 under GP after an error, memory is only recovered from "entire variables". Individual components of lists/vectors/matrices are left alone if the @@ -77,12 +84,14 @@ discarded (ends by a longjmp). 2 HTML version (pod ? SGML ? yodl ???) -*************************** DEVELOPMENT **************************** +*************************** MISCELLANEOUS **************************** 5 write decent (specialized) benches 3 switch to autoconf +3 use stat() instead of opendir() to check if a file is a directory. + *************************** ALGORITHMS **************************** Kernel: @@ -95,45 +104,30 @@ Kernel: 4 inline level0 routines should operate on _limbs_, not on words. -3 inline more assembler kernels, alpha in particular (ix86 and sparc are - already inline). - 3 FFT for basic types and polynomials (say in A[X], for A = Z, F_q, ...) 2 add support for different multiprecision kernels (a la LiDIA) Misc: ===== -5 don't assume that nf.zk is HNF. Allow using LLL-T2-reduced bases (with - first element 1) --> huge improvement to all idealred computations (esp. - bnfisprincipal, bnfinit) - -4 graphics: allow FIG output (besides PostScript) [easier to edit!] - 4 decent finite field package (remove all the nfxxxmodpr functions) -4 rnfkummer (doesn't work) +4 rnfkummer (very slow) 4 nfsubfields [use known subfields to discard blocs right away] (current uses far too much memory) -4 LLL over R (not stable). Clean up bibli1.c (remove duplicate code) +3 zetak is very inefficient and unable to handle most fields of degree > 8 -4 rethink the element_mul type of functions: multiplication table is O(n^3), - polynomial multiplication + remainder is O(n^2) [+ can use Karatsuba/FFT] - -3 \ and % (euclidean division) could accept more arguments (e.g t_REAL) - x \ y := floor(x/y) if y > 0 and floor(x/y) + 1 if y < 0 - x % y := x - y(x\y) [ hence 0 <= x%y < |y| ] - -3 zetak is very inefficient and unable to handle most fields of degree > 6 - 3 have quadclassunit return bnf structure 3 2-adic initell 3 p-adic ellztopoint +0 graphics: allow FIG output (besides PostScript) [easier to edit!] + [ No: use pstoedit ] + *************************** LIBRARY DESIGN **************************** 4 a system of DEBUGLEVEL classes [e.g \g 5 "LLL" ] (such that the user can @@ -143,9 +137,6 @@ Misc: 4 remove all dependences on types ordering [if (typ(x) < t_POL) ...] -3 integrate Ilya's code for yet bigger prime tables (pari-dev-435). Unify - functions using diffptr (if possible correcting the forprime bug above) - 3 remove global variables gpi, geuler: their precision is unpredictable (at least as much as requested in last const[pi|euler](), possibly much more). Explicit call to mp[pi|euler] should be required. Will break @@ -174,21 +165,16 @@ Misc: before all exported functions to prevent name conflicts. Build alias files for debuggers -2 should use vsnprintf instead of vsprintf in pariputsf. Requires GNU libio. - [paripusf uses static buffer which should be ok for "most" purposes] - *************************** GP DESIGN **************************** 5 remove limitation to 8 arguments for static functions (argvec[9]) 4 use divide & conquer approach in string / integer conversions -4 let forprime(n=a, b, ...) work even if a,b above primelimit - (maybe with a Warning), via simple sieve + pseudo primality test +4 extend forprime(n=a,b,...) so that b can go over primelimit [cut [a,b] + in large intervals, sieve out multiple of small primes there, then use + isprime() on the rest] -3 split matrix_block in 2 parts: exploration + assignment. Would allow - Math::Pari to use complicated x[][][][] constructs - 3 changevar with explicit (incomplete) permutation. E.g changevar(p, [x,y], [a,b]) for x -> a, y -> b add a flag to substitute in succession or in parallel (e.g if a involves y) @@ -208,13 +194,9 @@ Misc: 3 a script to translate "legacy" GP code into something using GP2 function names -3 write a gp-to-C compiler (adding #defines in anal.c + modifying the - table of functions in init.c, etc, to include the explicit function name). - Should be easy: the code is mostly there. - 3 write an analog of the 'echo' default which would print code as it is executed, not as it is read -2 write a GP scripts debugger (cf above) +2 write a GP scripts debugger -2 write a GP scripts profiler (cf above) +2 write a GP scripts profiler