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

File: [local] / OpenXM_contrib / pari / Attic / TODO (download)

Revision 1.1.1.1 (vendor branch), Sun Jan 9 17:35:29 2000 UTC (24 years, 4 months ago) by maekawa
Branch: PARI_GP
CVS Tags: maekawa-ipv6, VERSION_2_0_17_BETA, RELEASE_20000124, RELEASE_1_2_3, RELEASE_1_2_2_KNOPPIX_b, RELEASE_1_2_2_KNOPPIX, RELEASE_1_2_2, RELEASE_1_2_1, RELEASE_1_1_3, RELEASE_1_1_2
Changes since 1.1: +0 -0 lines

Import PARI/GP 2.0.17 beta.

For PARI/GP version 2.0.17

This file lists the things that ought to be implemented / fixed. It is
hopelessly incomplete right now, but it's a start. Most items require major
work, and may not be that desireable after all. If you intend to work on
any of these things, have a look at CVS.DOC and drop an email to pari-dev.

Priority classification (first column): [subjective and debatable!]
5    as soon as possible
4    should be done
3    nice to have
2    maybe not
1    probably not
-    unclassified

***************************  DOCUMENTATION    ****************************

5  complete/update the tutorial (esp. section 11 and 12)

4  add examples for all functions in Chapter 3

4  separate chapter 4 and 5 and document the innards of PARI (entree,
pariFILE, bloc ...)

3  clean up gphelp / TeX macros

2  HTML version (pod ? SGML ? yodl ???)

***************************   BUGS            ****************************

-  sum(i=1,3000, exp(-i^2)) --> overflow in R*R
   The "negligible" terms should be neglegted, not overflow because of the
   way the computation is done. Tough to correct, even with a way to trap
   exceptions

5  nfgaloisconj still misses some conjugates. Symptom: try it on
   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)
[Hilbert class field extension]

5  silent overflows in codeword-handling macros: O(2^50000) --> O(2^-15535)

5  some doubles can overflow in rootpol.c, should use t_REAL everywhere
  ?  polroots(x^3 + 2^1024*x + 1)
    ***   underflow or overflow in a R->dbl conversion

4  gcmp is not transitive: [] == 0, [0] == 0, but [0] != []

4  mateigen([1,1;1,2]) won't succeed at default precision (28 digits).
Should use iterative methods.

3  polgalois should handle precision problems. Symptom: applied to
polzagier(11,0)/polzagier(1,0), gives wrong result with 38 digits

3  after allocatemem() / default(parisize, ...), the rest of the command is
discarded (ends by a longjmp).

3  recursive plot easily fooled. One could split intervals in 3 + make sure
size of neighbouring intervals don't differ too much.

***************************   DEVELOPMENT     ****************************

5  write decent (specialized) benches

3  switch to autoconf

***************************   ALGORITHMS      ****************************

Kernel:
=======
5  check NaN in dbltor and related routines

4  benchmark / profile basic functions and see what needs to be done

4  finish t_REAL Karatsuba and diviiexact

4  inline level0 routines should operate on _limbs_, not on words.

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  (easy) modify invmod to get Jebelean extended gcd

4  decent finite field package (remove all the nfxxxmodpr functions)

4  round 4 (too slow, use modular techniques)

4  rnfkummer (doesn't work)

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)

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  have quadclassunit return bnf structure

3  have quadclassunit treat reliably non fundamental discriminants (at
   least, make relevant checks before entering infinite loops)

3  2-adic initell

***************************   LIBRARY DESIGN   ****************************

4  a way to trap PARI errors, esp. all kinds of overflows (exponent, degree,
stack, ...). Something like:
trap(errpile, &stack_overflow_handler)

4  allow generic functions to process and produce t_SMALL's

4  remove all dependences on types ordering [if (typ(x) < t_POL) ...]

3  integrate Ilya's code for yet bigger prime tables. Unify functions using
diffptr

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 existing code...

3  rename library functions following GP names

3  rewrite the generic functions (gadd/gmul/gdiv plus a couple of others) to
use (two-dimensional) table lookups instead of switches

3  introduce "special" types for objects which are really containers and
should be defined by a secondary type (e.g number fields, finite fields,
p-adic fields, elliptic curves, ...). Would keep list of types small (and fast)

3  better representations for multivariate polynomials

3  type "element in" ([number|finite] field...), "point" on elliptic curve

3  find a way to deal (generically) with "integral object + its content"
Application (e.g): fractional ideals much more efficient.

2  "mute" variables for t_POLMOD. Should have Mod(x,x^2+1) == Mod(y,y^2+1).

2  have some header magic (transparently) prepend some prefix (e.g "pari_")
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  a way to trap PARI errors (esp. stack overflow). Something like:
trap(errpile, "GP_command_to_be_executed_when_stack_overflows")

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)

3  possibility to save and load a session (variables, functions, defaults)

3  a type t_FILE [current: stream re-opened/flushed/closed after every single
write(): disaster when one wants to write often to the same file]

***************************   TOOLS           ****************************

4  a script converting prototype to parser code (e.g GEN f(GEN,GEN) --> "GG")

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.

2  write a GP scripts debugger (cf above)

2  write a GP scripts profiler (cf above)