[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     ! 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>