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

Annotation of OpenXM_contrib/pari/TODO, Revision 1.1.1.1

1.1       maekawa     1: For PARI/GP version 2.0.17
                      2:
                      3: This file lists the things that ought to be implemented / fixed. It is
                      4: hopelessly incomplete right now, but it's a start. Most items require major
                      5: work, and may not be that desireable after all. If you intend to work on
                      6: any of these things, have a look at CVS.DOC and drop an email to pari-dev.
                      7:
                      8: Priority classification (first column): [subjective and debatable!]
                      9: 5    as soon as possible
                     10: 4    should be done
                     11: 3    nice to have
                     12: 2    maybe not
                     13: 1    probably not
                     14: -    unclassified
                     15:
                     16: ***************************  DOCUMENTATION    ****************************
                     17:
                     18: 5  complete/update the tutorial (esp. section 11 and 12)
                     19:
                     20: 4  add examples for all functions in Chapter 3
                     21:
                     22: 4  separate chapter 4 and 5 and document the innards of PARI (entree,
                     23: pariFILE, bloc ...)
                     24:
                     25: 3  clean up gphelp / TeX macros
                     26:
                     27: 2  HTML version (pod ? SGML ? yodl ???)
                     28:
                     29: ***************************   BUGS            ****************************
                     30:
                     31: -  sum(i=1,3000, exp(-i^2)) --> overflow in R*R
                     32:    The "negligible" terms should be neglegted, not overflow because of the
                     33:    way the computation is done. Tough to correct, even with a way to trap
                     34:    exceptions
                     35:
                     36: 5  nfgaloisconj still misses some conjugates. Symptom: try it on
                     37:    polcompositum(quadpoly(11321), x^15-3*x^14-46*x^13+69*x^12+794*x^11-50*x^10-5226*x^9-4559*x^8+9682*x^7+15656*x^6+3342*x^5-5950*x^4-4386*x^3-1136*x^2-100*x+1)
                     38: [Hilbert class field extension]
                     39:
                     40: 5  silent overflows in codeword-handling macros: O(2^50000) --> O(2^-15535)
                     41:
                     42: 5  some doubles can overflow in rootpol.c, should use t_REAL everywhere
                     43:   ?  polroots(x^3 + 2^1024*x + 1)
                     44:     ***   underflow or overflow in a R->dbl conversion
                     45:
                     46: 4  gcmp is not transitive: [] == 0, [0] == 0, but [0] != []
                     47:
                     48: 4  mateigen([1,1;1,2]) won't succeed at default precision (28 digits).
                     49: Should use iterative methods.
                     50:
                     51: 3  polgalois should handle precision problems. Symptom: applied to
                     52: polzagier(11,0)/polzagier(1,0), gives wrong result with 38 digits
                     53:
                     54: 3  after allocatemem() / default(parisize, ...), the rest of the command is
                     55: discarded (ends by a longjmp).
                     56:
                     57: 3  recursive plot easily fooled. One could split intervals in 3 + make sure
                     58: size of neighbouring intervals don't differ too much.
                     59:
                     60: ***************************   DEVELOPMENT     ****************************
                     61:
                     62: 5  write decent (specialized) benches
                     63:
                     64: 3  switch to autoconf
                     65:
                     66: ***************************   ALGORITHMS      ****************************
                     67:
                     68: Kernel:
                     69: =======
                     70: 5  check NaN in dbltor and related routines
                     71:
                     72: 4  benchmark / profile basic functions and see what needs to be done
                     73:
                     74: 4  finish t_REAL Karatsuba and diviiexact
                     75:
                     76: 4  inline level0 routines should operate on _limbs_, not on words.
                     77:
                     78: 3  FFT for basic types and polynomials (say in A[X], for A = Z, F_q, ...)
                     79:
                     80: 2  add support for different multiprecision kernels (a la LiDIA)
                     81:
                     82: Misc:
                     83: =====
                     84: 5  (easy) modify invmod to get Jebelean extended gcd
                     85:
                     86: 4  decent finite field package (remove all the nfxxxmodpr functions)
                     87:
                     88: 4  round 4 (too slow, use modular techniques)
                     89:
                     90: 4  rnfkummer (doesn't work)
                     91:
                     92: 4  nfsubfields [use known subfields to discard blocs right away] (current uses
                     93: far too much memory)
                     94:
                     95: 4  LLL over R (not stable). Clean up bibli1.c (remove duplicate code)
                     96:
                     97: 4  rethink the element_mul type of functions: multiplication table is O(n^3),
                     98: polynomial multiplication + remainder is O(n^2) [+ can use Karatsuba/FFT]
                     99:
                    100: 3  have quadclassunit return bnf structure
                    101:
                    102: 3  have quadclassunit treat reliably non fundamental discriminants (at
                    103:    least, make relevant checks before entering infinite loops)
                    104:
                    105: 3  2-adic initell
                    106:
                    107: ***************************   LIBRARY DESIGN   ****************************
                    108:
                    109: 4  a way to trap PARI errors, esp. all kinds of overflows (exponent, degree,
                    110: stack, ...). Something like:
                    111: trap(errpile, &stack_overflow_handler)
                    112:
                    113: 4  allow generic functions to process and produce t_SMALL's
                    114:
                    115: 4  remove all dependences on types ordering [if (typ(x) < t_POL) ...]
                    116:
                    117: 3  integrate Ilya's code for yet bigger prime tables. Unify functions using
                    118: diffptr
                    119:
                    120: 3  remove global variables gpi, geuler: their precision is unpredictable
                    121: (at least as much as requested in last const[pi|euler](), possibly much more).
                    122: Explicit call to mp[pi|euler] should be required. Will break existing code...
                    123:
                    124: 3  rename library functions following GP names
                    125:
                    126: 3  rewrite the generic functions (gadd/gmul/gdiv plus a couple of others) to
                    127: use (two-dimensional) table lookups instead of switches
                    128:
                    129: 3  introduce "special" types for objects which are really containers and
                    130: should be defined by a secondary type (e.g number fields, finite fields,
                    131: p-adic fields, elliptic curves, ...). Would keep list of types small (and fast)
                    132:
                    133: 3  better representations for multivariate polynomials
                    134:
                    135: 3  type "element in" ([number|finite] field...), "point" on elliptic curve
                    136:
                    137: 3  find a way to deal (generically) with "integral object + its content"
                    138: Application (e.g): fractional ideals much more efficient.
                    139:
                    140: 2  "mute" variables for t_POLMOD. Should have Mod(x,x^2+1) == Mod(y,y^2+1).
                    141:
                    142: 2  have some header magic (transparently) prepend some prefix (e.g "pari_")
                    143: before all exported functions to prevent name conflicts. Build alias files
                    144: for debuggers
                    145:
                    146: 2  should use vsnprintf instead of vsprintf in pariputsf. Requires GNU libio.
                    147:    [paripusf uses static buffer which should be ok for "most" purposes]
                    148:
                    149: ***************************   GP DESIGN       ****************************
                    150:
                    151: 5  remove limitation to 8 arguments for static functions (argvec[9])
                    152:
                    153: 4  use divide & conquer approach in string / integer conversions
                    154:
                    155: 4  a way to trap PARI errors (esp. stack overflow). Something like:
                    156: trap(errpile, "GP_command_to_be_executed_when_stack_overflows")
                    157:
                    158: 3  split matrix_block in 2 parts: exploration + assignment. Would allow
                    159: Math::Pari to use complicated x[][][][] constructs
                    160:
                    161: 3  changevar with explicit (incomplete) permutation. E.g
                    162: changevar(p, [x,y], [a,b]) for x -> a, y -> b
                    163: add a flag to substitute in succession or in parallel (e.g if a involves y)
                    164:
                    165: 3  possibility to save and load a session (variables, functions, defaults)
                    166:
                    167: 3  a type t_FILE [current: stream re-opened/flushed/closed after every single
                    168: write(): disaster when one wants to write often to the same file]
                    169:
                    170: ***************************   TOOLS           ****************************
                    171:
                    172: 4  a script converting prototype to parser code (e.g GEN f(GEN,GEN) --> "GG")
                    173:
                    174: 3  a script to translate "legacy" GP code into something using GP2 function
                    175: names
                    176:
                    177: 3  write a gp-to-C compiler (adding #defines in anal.c + modifying the
                    178: table of functions in init.c, etc, to include the explicit function name).
                    179: Should be easy: the code is mostly there.
                    180:
                    181: 2  write a GP scripts debugger (cf above)
                    182:
                    183: 2  write a GP scripts profiler (cf above)

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