New features / Tasks

Recall: pari-2.7-stable was released in March 2014, pari-2.8-testing is scheduled after Atelier 2015 (february ?).

DISCUSSION FROM ATELIER 2014 & AFTERMATH ([X] = DONE!)

New mathematical features for PARI-2.8 (testing) -> PARI-2.9 (stable)

Elliptic curves / Arithmetic geometry

- [X] over number fields [ general infrastructure ]
- Tate's algorithm over number fields, above 2 and 3 as well ! (Nicolas?)
- global minimal equation, Weierstrass class
- [X] qfsolve [ over Q ]
- include ratpoint ?
- include Denis Simon's ellQ.gp
- descent
- S-integral points
- fields generated by torsion points under Galois action.
- [X] modular equation / class polynomials (Hamish)
- isogeny matrix
- pairings / APIP [ Jerome Milan's package ] : 
       - fix Tate self pairing
       - FpE_FpQXE_* [ 1 pt in base, 1 pt in extension ]
       - various optimized crypto pairings
- [X] Frobenius matrix via Kedlaya's algorithm for p>2
- Frobenius matrix via Kedlaya's algorithm for p=2
- Genus 2 curves
- Export local solvability of hyperelliptic equations (over number fields)
- Arithmetic & pairings on Mumford representation for hyperelliptic
  curves Jacobians
- Khuri-Makdisi's algorithms (Jacobians of (modular) curves) (Peter, Nicolas)

Modular symbols

- [X] modular symbols, merge the kb-modsym2 branch
- support \Gamma_0(1) !
- q-expansions for Eisenstein symbols
- support \Gamma_1(N)
- other coefficient modules F_q[x,y]_{k-2}, p-adic distributions
  (overconvergent symbols), etc.

Algebraic number theory

- dynamic nf (confer 'ell'): add new components dynamically as they are
  computed (integer basis, class group/units...)
- better rnf structures allowing maps between TWO nf [not 1 nf + 1 hack] (useful for CSA Aurel)
- rnfidealprimedec
- rnfinit with list of prime to maximize at, like nfinit([pol,L]) (+rnfcertify ?) (useful for Aurel & Denis)
- compact fundamental units (bnfinit + flag)
- compact S-units (bnfinit + flag)
- rewrite bnfsunit to compute directly S-units without reducing to
  fundamental units ?
- cyclotomic units / subfields to help bnfinit (Jean-Robert)
- get rid of bnrinit(,,1): *no* function should need explicit expanded
  generators, implicit descriptions in terms of linear algebra should be
  enough.
- rewrite lowerboundforregulator [#1572]
- [X] relative polcompositum
- rnfkummer for composite degrees
- rnfkummer for prime power degrees (needed for CSA Aurel)
- [X] fix rnfkummer (fix and merge kb-rnfkummer)
- [X] bnrisgalois
- [X] polsturm -> Uspensky (merge loic-Uspensky)
- abstract / generalize ad hoc abelian groups constructions (short exact
  sequences)
- sign of algebraic number [ proven ] (useful for CSA Aurel, useful for lots of stuff Denis)
- nfpolsturm(nf,pol,i) where 1<=i<=nf.r1 (useful for Aurel & Denis)
- idealispower (Nicolas)
- idealsqrtn (useful for CSA Aurel) (Nicolas)
- nfissquare
- non maximal orders
- cubic / quartic / quintic fields by discriminant
- support idealstar / ideallog with nf = NULL (over Q)

- more central simple algebras: orders, ideals, localizations (Aurel)
- Fieker-Klueners polgalois algorithm, GAP module using PARI ?
- van Hoeij-Klueners (maximal) sufbields algorithm
- primesnf() for the primes in a nf whose norm lie in an interval

L-functions (Pascal / Henri)

- Dirichlet character
- Hecke character
- L(s,\chi), at least for deg <=2
- Artin L-functions

Multiprecision:

 - Change libpari prec variable to be in bits instead of words.
 - merge the new-t_REAL branch
 - go through transcendental functions and include rigorous/faster
   algorithms
 - hooks to optionally link with mpfr / mpc higher lever routines
 - asymptotically fast Flx_resultant [ see Flint ]

Parallelisation, use parallel interface internally:

 - CRT
 - polmodular
 - factorint
 - znlog
 - SEA
 - bnfinit
 - ...

GP

-  0xDEADBEEF  (integers in hexadecimal)
-  expose the iterator associated to forxxx() functions, e.g.
   forprime [ vectorprime(), sumprime(), prodprime(), prime ideals... ]
   partition / forpartion [ ... ]
   certain subsets (e.g. sets with m elements, words of Hamming
   weight k...)

-  forprimestep(p = a, {b}, Mod(c,d), ...)
-  forfactored
- [X] fold
- [X] move "useful" functions from gp.c -> libpari (e.g. handling of
    \[a-z] shortcuts)
-  V[-1] (= V[#V-1]) ?
-  V[a..b] when a > b ? (= [])

[CONTROVERSIAL: cool but marginally useful compared to effort]
- "dictonary arguments" (aka named parameters)
   f( disc := 10, p := 7, len := 18 )

   instead of f(len, disc, p) = ; f(18,10,7)  \\ imagine 42 arguments

Misc

 - Factorisation of bivariate polynomials (bifactor script)
 - Baker-Davenport
 - Generic Newton method
 - Abel-Jacobi map

Technical stuff / internals

- cleanup input/output (don't change global pari_infile, etc.)
- [Configure] let gcc try to find its libraries first [ don't start by
  overriding with /usr/lib, /usr/lib64, etc ]
- properly tune Flx operations wrt p and degree.
- cleanup entree*
        - remove built-in hashtable and use generic one
        - don't overload "value" / remove "useless" struct members
- parser must only create polynomial variables when creating a t_POL/t_SER
- separate valuation for t_SER / t_PADIC (servalp / valp)
- rename all gerepile* functions -> gc_*
- fix DLLDFLAGS on OS/X [#1623]

LEFTOVERS FROM ATELIER 2013

Short hacks

 - Lambert W [ for x >= -1/e ! ]
 - primepi for large arguments
 - inverse gamma / inverse erfc
 - LinearRecurrence [ via Mod(x, T(x))^N ]
 - Hurwitz zeta
 - Bell numbers
 - sumrat \sum F(n),        F rational function
          \sum (-1)^n F(n), F rational function
          \prod F(n))
 - sumeulerrat,  \sum_{p prime} F(p^s)
              \prod_{p prime} F(p^s)
 - tools for p-adic analysis: Newton polygon (slopes, # of zeros), Amice
   transform and interpolation
 - vecprod (= \prod_i v[i]), see vecsum

Long term projects

 -  change t_SER format (-> faster + easier to maintain)
     s[0] = type | lg
     s[1] = valuation 
     s[2] = precp
     s[2] = t_POL + functions operating on t_POL mod X^n [ RgXn_... ]
 -  t_REAL format
 -  stat functions ? -> Gaussian vectors

 - Elliptic curves over finite fields: [proposed by Damien Robert]
    1) Basic
    - geometric points over an extension
    - base change
    - Various models, morphisms between them, e.g. from / to Weierstrass
    2) Isogenies
    - isogeny graphs
    - If $\phi_l(j,j')=0$, compute the isogeny corresponding to E, E'
    - Isogeny class of an elliptic curve
    - Endomorphism ring
    3) Misc
    - Weil restriction
    - Symplectic basis for l-torsion