[BACK]Return to TODO CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / pari-2.2

Annotation of OpenXM_contrib/pari-2.2/TODO, Revision 1.2

1.1       noro        1: This file lists the things that ought to be implemented / fixed. It is
                      2: hopelessly incomplete right now, but it's a start. Most items require major
                      3: work, and may not be that desireable after all. If you intend to work on
                      4: any of these things, have a look at CVS.txt and drop an email to pari-dev.
                      5:
                      6: Priority classification (first column): [subjective and debatable!]
                      7: 5    as soon as possible
                      8: 4    should be done
                      9: 3    nice to have
                     10: 2    maybe not
                     11: 1    probably not
1.2     ! noro       12: 0    no
1.1       noro       13: -    unclassified
                     14:
                     15: ***************************   BUGS (general)     ****************************
                     16: Unless specified otherwise, examples assume 32bit machine and default precision
                     17:
1.2     ! noro       18: 5  bnfinit sometimes gives wrong answers because we cheat on the value of
        !            19: Bach's bound, using 0.3 log^2 D by default, where 0.3 should really be 12
        !            20: (under GRH). If it's not enough, we compute a subquotient of the classgroup,
        !            21: i.e junk. Ex:
        !            22:  * setrand(3); bnfinit(y^4 + 1190*y^2 + 1416100).cyc --> [8,2,2,2].
        !            23:    Wrong. The correct structure is [8,4,2].
        !            24:
        !            25:  * setrand(1414185642); bnf = bnfinit(y^4 + 635*y^2 + 403225).reg is twice
        !            26: the correct value.
        !            27:
        !            28: 5  polgalois(x^8-1864259299553450972214799899167226732549697977945716*x^6+331143259018657601105207922631212331088735421305543663274125986698777318014979969*x^4-2225286541902342283500014249183311190477390*x^2+5);
        !            29:   ***   degree too large in tschirn.
1.1       noro       30:
                     31: 4  precision problems in polgalois:
                     32:    setrand(7);
                     33:    polgalois(x^8+162644002617632464507038884216211529274267271168000002)
                     34:    gives wrong result at \p28 [32,-1,17], correct at \p38 [32,-1,15]
                     35:
                     36: 4  gcmp/gegal not transitive: [] == 0, [0] == 0, but [0] != []
                     37:
                     38: 4  rnfpolred is numerically unstable:
                     39:    ? rnfpolred(nfinit(quadpoly(904,y)),quadray(904,1))
                     40:      ***   division by zero in gdiv, gdivgs or ginv
                     41:
                     42: 4  qfbclassno(x < 0) may give a wrong result [e.g x = -2878367]
                     43:
                     44: 3  many functions assume MAXVARN is a free variable, yielding bogus
1.2     ! noro       45:    results if the input involves it (only affects library programming).
1.1       noro       46:
                     47: 3  quadclassunit not reliable when fed non fundamental discriminants
                     48:    (infinite loop [e.g quadclassunit(-352)], wrong result)
                     49:
                     50: 3  ellinit over Q_2 doesn't work (AGM loses too much precision)
                     51:
                     52: 3  ellpointtoz over Q_p makes no difference between P and -P (corrected over
                     53:    C by a cheap trick)
                     54:
                     55: 3  recursive plot easily fooled. One could split intervals in 3 + make sure
                     56:    size of neighbouring intervals don't differ too much.
                     57:
                     58: ***************************   BUGS (GP specific) ****************************
                     59:
1.2     ! noro       60: 5  readline: assume a file 'foo' exists, \rf<TAB> --> \foo [\r f<TAB> is OK]
1.1       noro       61:
                     62: 4  changing primelimit from within forprime loop yields unpredictable results
                     63:
                     64: 3  after allocatemem() / default(parisize, ...), the rest of the command is
1.2     ! noro       65:    discarded (ends by a longjmp).
1.1       noro       66:
                     67: 2  under GP after an error, memory is only recovered from "entire variables".
                     68:    Individual components of lists/vectors/matrices are left alone if the
                     69:    GLOBAL object wasn't modified during the last cycle (i.e only v[x] = ...
                     70:    occured)
                     71:
                     72: 1  sum(i=1,3000, exp(-i^2)) --> overflow in R*R
                     73:    The "negligible" terms should be neglegted, not overflow because of the
                     74:    way the computation is done. [ Tough to correct! ]
                     75:
                     76: ***************************  DOCUMENTATION    ****************************
                     77:
                     78: 5  complete/update the tutorial (esp. section 11 and 12)
                     79:
                     80: 4  add examples for all functions in Chapter 3
                     81:
                     82: 4  separate chapter 4 and 5 and document the innards of PARI (entree,
                     83:    pariFILE, bloc ...)
                     84:
                     85: 2  HTML version (pod ? SGML ? yodl ???)
                     86:
1.2     ! noro       87: ***************************  MISCELLANEOUS    ****************************
1.1       noro       88:
                     89: 5  write decent (specialized) benches
                     90:
                     91: 3  switch to autoconf
                     92:
1.2     ! noro       93: 3  use stat() instead of opendir() to check if a file is a directory.
        !            94:
1.1       noro       95: ***************************   ALGORITHMS      ****************************
                     96:
                     97: Kernel:
                     98: =======
                     99: 5  check NaN in dbltor and related routines
                    100:
                    101: 4  benchmark / profile basic functions and see what needs to be done
                    102:
                    103: 4  finish t_REAL Karatsuba and diviiexact
                    104:
                    105: 4  inline level0 routines should operate on _limbs_, not on words.
                    106:
                    107: 3  FFT for basic types and polynomials (say in A[X], for A = Z, F_q, ...)
                    108:
                    109: 2  add support for different multiprecision kernels (a la LiDIA)
                    110:
                    111: Misc:
                    112: =====
                    113: 4  decent finite field package (remove all the nfxxxmodpr functions)
                    114:
1.2     ! noro      115: 4  rnfkummer (very slow)
1.1       noro      116:
                    117: 4  nfsubfields [use known subfields to discard blocs right away] (current uses
                    118:    far too much memory)
                    119:
1.2     ! noro      120: 3  zetak is very inefficient and unable to handle most fields of degree > 8
1.1       noro      121:
                    122: 3  have quadclassunit return bnf structure
                    123:
                    124: 3  2-adic initell
                    125:
                    126: 3  p-adic ellztopoint
                    127:
1.2     ! noro      128: 0  graphics: allow FIG output (besides PostScript) [easier to edit!]
        !           129:    [ No: use pstoedit ]
        !           130:
1.1       noro      131: ***************************   LIBRARY DESIGN   ****************************
                    132:
                    133: 4  a system of DEBUGLEVEL classes [e.g \g 5 "LLL" ] (such that the user can
                    134:    easily define new ones)
                    135:
                    136: 4  allow generic functions to process and produce t_SMALL's
                    137:
                    138: 4  remove all dependences on types ordering [if (typ(x) < t_POL) ...]
                    139:
                    140: 3  remove global variables gpi, geuler: their precision is unpredictable
                    141:    (at least as much as requested in last const[pi|euler](), possibly much
                    142:    more). Explicit call to mp[pi|euler] should be required. Will break
                    143:    existing code...
                    144:
                    145: 3  rename library functions following GP names
                    146:
                    147: 3  rewrite the generic functions (gadd/gmul/gdiv plus a couple of others) to
                    148:    use (two-dimensional) table lookups instead of switches
                    149:
                    150: 3  introduce "special" types for objects which are really containers and
                    151:    should be defined by a secondary type (e.g number fields, finite fields,
                    152:    p-adic fields, elliptic curves, ...). Would keep list of types small
                    153:    (and fast)
                    154:
                    155: 3  better representations for multivariate polynomials
                    156:
                    157: 3  type "element in" ([number|finite] field...), "point" on elliptic curve
                    158:
                    159: 3  find a way to deal (generically) with "integral object + its content"
                    160:    Application (e.g): fractional ideals much more efficient.
                    161:
                    162: 2  "mute" variables for t_POLMOD. Should have Mod(x,x^2+1) == Mod(y,y^2+1).
                    163:
                    164: 2  have some header magic (transparently) prepend some prefix (e.g "pari_")
                    165:    before all exported functions to prevent name conflicts. Build alias
                    166:    files for debuggers
                    167:
                    168: ***************************   GP DESIGN       ****************************
                    169:
                    170: 5  remove limitation to 8 arguments for static functions (argvec[9])
                    171:
                    172: 4  use divide & conquer approach in string / integer conversions
                    173:
1.2     ! noro      174: 4  extend forprime(n=a,b,...) so that b can go over primelimit [cut [a,b]
        !           175:    in large intervals, sieve out multiple of small primes there, then use
        !           176:    isprime() on the rest]
1.1       noro      177:
                    178: 3  changevar with explicit (incomplete) permutation. E.g
                    179:    changevar(p, [x,y], [a,b]) for x -> a, y -> b
                    180:    add a flag to substitute in succession or in parallel (e.g if a involves y)
                    181:
                    182: 3  possibility to save and load a session (variables, functions, defaults)
                    183:
                    184: 3  a type t_FILE [current: stream re-opened/flushed/closed after every single
                    185:    write(): disaster when one wants to write often to the same file]
                    186:
                    187: 3  add a possibility to increase the maximal recursion depth (need to
                    188:    increase the GP process stack: use setrlimit(RLIMIT_STACK,) + fork)
                    189:
                    190: ***************************   TOOLS           ****************************
                    191:
                    192: 4  a script converting prototype to parser code (e.g GEN f(GEN,GEN) --> "GG")
                    193:
                    194: 3  a script to translate "legacy" GP code into something using GP2 function
                    195:    names
                    196:
                    197: 3  write an analog of the 'echo' default which would print code as it is
                    198:    executed, not as it is read
                    199:
1.2     ! noro      200: 2  write a GP scripts debugger
1.1       noro      201:
1.2     ! noro      202: 2  write a GP scripts profiler

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