version 1.1, 2001/10/02 11:16:55 |
version 1.2, 2002/09/11 07:26:37 |
Line 9 Priority classification (first column): [subjective an |
|
Line 9 Priority classification (first column): [subjective an |
|
3 nice to have |
3 nice to have |
2 maybe not |
2 maybe not |
1 probably not |
1 probably not |
|
0 no |
- unclassified |
- unclassified |
|
|
*************************** BUGS (general) **************************** |
*************************** BUGS (general) **************************** |
Unless specified otherwise, examples assume 32bit machine and default precision |
Unless specified otherwise, examples assume 32bit machine and default precision |
|
|
5 setrand(5);thueinit(x^3 + x^2 - 43690*x - 3529208) |
5 bnfinit sometimes gives wrong answers because we cheat on the value of |
*** non positive argument in mplog. \\ precision problem |
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: |
4 precision problems in polgalois: |
setrand(7); |
setrand(7); |
polgalois(x^8+162644002617632464507038884216211529274267271168000002) |
polgalois(x^8+162644002617632464507038884216211529274267271168000002) |
Line 30 Unless specified otherwise, examples assume 32bit mach |
|
Line 41 Unless specified otherwise, examples assume 32bit mach |
|
|
|
4 qfbclassno(x < 0) may give a wrong result [e.g x = -2878367] |
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 |
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 |
3 quadclassunit not reliable when fed non fundamental discriminants |
(infinite loop [e.g quadclassunit(-352)], wrong result) |
(infinite loop [e.g quadclassunit(-352)], wrong result) |
Line 49 Unless specified otherwise, examples assume 32bit mach |
|
Line 57 Unless specified otherwise, examples assume 32bit mach |
|
|
|
*************************** BUGS (GP specific) **************************** |
*************************** BUGS (GP specific) **************************** |
|
|
5 life of GP variables too short in pathological cases: |
5 readline: assume a file 'foo' exists, \rf<TAB> --> \foo [\r f<TAB> is OK] |
v = concat(v, [v=1,v=2]); concat(v, [v=1,v=2]) --> SEGV |
|
|
|
4 changing primelimit from within forprime loop yields unpredictable results |
4 changing primelimit from within forprime loop yields unpredictable results |
|
|
3 after allocatemem() / default(parisize, ...), the rest of the command is |
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". |
2 under GP after an error, memory is only recovered from "entire variables". |
Individual components of lists/vectors/matrices are left alone if the |
Individual components of lists/vectors/matrices are left alone if the |
Line 77 discarded (ends by a longjmp). |
|
Line 84 discarded (ends by a longjmp). |
|
|
|
2 HTML version (pod ? SGML ? yodl ???) |
2 HTML version (pod ? SGML ? yodl ???) |
|
|
*************************** DEVELOPMENT **************************** |
*************************** MISCELLANEOUS **************************** |
|
|
5 write decent (specialized) benches |
5 write decent (specialized) benches |
|
|
3 switch to autoconf |
3 switch to autoconf |
|
|
|
3 use stat() instead of opendir() to check if a file is a directory. |
|
|
*************************** ALGORITHMS **************************** |
*************************** ALGORITHMS **************************** |
|
|
Kernel: |
Kernel: |
|
|
|
|
4 inline level0 routines should operate on _limbs_, not on words. |
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, ...) |
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) |
2 add support for different multiprecision kernels (a la LiDIA) |
|
|
Misc: |
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 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 |
4 nfsubfields [use known subfields to discard blocs right away] (current uses |
far too much memory) |
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 have quadclassunit return bnf structure |
|
|
3 2-adic initell |
3 2-adic initell |
|
|
3 p-adic ellztopoint |
3 p-adic ellztopoint |
|
|
|
0 graphics: allow FIG output (besides PostScript) [easier to edit!] |
|
[ No: use pstoedit ] |
|
|
*************************** LIBRARY DESIGN **************************** |
*************************** LIBRARY DESIGN **************************** |
|
|
4 a system of DEBUGLEVEL classes [e.g \g 5 "LLL" ] (such that the user can |
4 a system of DEBUGLEVEL classes [e.g \g 5 "LLL" ] (such that the user can |
|
|
|
|
4 remove all dependences on types ordering [if (typ(x) < t_POL) ...] |
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 |
3 remove global variables gpi, geuler: their precision is unpredictable |
(at least as much as requested in last const[pi|euler](), possibly much |
(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 |
more). Explicit call to mp[pi|euler] should be required. Will break |
|
|
before all exported functions to prevent name conflicts. Build alias |
before all exported functions to prevent name conflicts. Build alias |
files for debuggers |
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 **************************** |
*************************** GP DESIGN **************************** |
|
|
5 remove limitation to 8 arguments for static functions (argvec[9]) |
5 remove limitation to 8 arguments for static functions (argvec[9]) |
|
|
4 use divide & conquer approach in string / integer conversions |
4 use divide & conquer approach in string / integer conversions |
|
|
4 let forprime(n=a, b, ...) work even if a,b above primelimit |
4 extend forprime(n=a,b,...) so that b can go over primelimit [cut [a,b] |
(maybe with a Warning), via simple sieve + pseudo primality test |
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 |
3 changevar with explicit (incomplete) permutation. E.g |
changevar(p, [x,y], [a,b]) for x -> a, y -> b |
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) |
add a flag to substitute in succession or in parallel (e.g if a involves y) |
|
|
3 a script to translate "legacy" GP code into something using GP2 function |
3 a script to translate "legacy" GP code into something using GP2 function |
names |
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 |
3 write an analog of the 'echo' default which would print code as it is |
executed, not as it is read |
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 |