Revision bbe40b13d991c64a14264461f12da82379484841 (click the page title to view the current version)

New features

Changes from bbe40b13d991c64a14264461f12da82379484841 to 13b90c61676d47f723f375371f73f22be185f8c2

Recall: pari-2.9-stable was released in 2016, pari-2.10-testing is
scheduled after Atelier 2017 .

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

New mathematical features for PARI-2.10 (testing) -> PARI-2.11 (stable)

## Elliptic curves / Arithmetic geometry
    - include ratpoint ?
    - include Denis Simon's ellQ.gp
    - descent
    - S-integral points
    - fields generated by torsion points under Galois action.
    - canonical height of points on elliptic curves over number fields
    - improve the interface for complex periods of elliptic curves
    - Falting height of elliptic curves
    - 2-descent on elliptic curves
    - isogeny matrix [ done over Q; not as easy as expected over K ]
    - Frobenius matrix via Kedlaya's algorithm for p=2
    - Genus 2 curves; in particular complex periods, Tamagawa numbers and endomorphism rings
    - 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)
    - ellbsd to check the BSD hypothesis over number fields or p-adically

## Modular symbols
    - proper normalisation of new symbols, integrality conditions
    - 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...)
    - 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)
      generators, implicit descriptions in terms of linear algebra should be
      enough.
    - regulator/units and class number/class group for special cases of high degree fields
      (abelian fields, say), using different methods from bnfinit
    - nfinit for abelian fields using adapted bases
    - rnfidealprimedec for infinite places
    - rewrite lowerboundforregulator [#1572]
    - rnfkummer for composite degrees
    - rnfkummer for prime power degrees (needed for CSA Aurel)
        Challenges:
          nf = nfinit(y);
          p2 = idealprimedec(nf,2)[1];
          p3 = idealprimedec(nf,3)[1];
          al = alginit(nf,[4,[[p2,p3],[1/4,3/4]],[0]],0);
          al = alginit(nf,[9,[[p2,p3],[1/9,8/9]],[0]],0);
          nf = nfinit(y^2+3);
          p3 = idealprimedec(nf,3)[1];
          p7 = idealprimedec(nf,7)[1];
          al = alginit(nf,[4,[[p3,p7],[1/4,3/4]],[]],0);
          nf = nfinit(y^2+1);
          p2 = idealprimedec(nf,2)[1];
          p5 = idealprimedec(nf,5)[1];
          al = alginit(nf,[9,[[p2,p5],[1/9,8/9]],[]],0);
    - abstract / generalize ad hoc abelian groups constructions (short exact
      sequences)
    - 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
    - rnfsplitting
    - unify and make accessible the Finke-Pohst implementations

    - more central simple algebras (Aurel)
        - localisation (local splitting, localisation of an element, compute local invariants in general, additive strong approx)
        - lattices (inter,add,left/right mul,conj,index,subset,left/right order,norm,twoelt,inv,primedec,factor)
        - orders (pmaximal, connecting ideal)
        - advanced (class sets, multiplicative strong approx, generators of ideals, units)
        - algsimpledec: return simple algebras in alginit format
        - T2 norm and LLL-reduce the basis
        - global splitting and isomorphism
    - Fieker-Klueners polgalois algorithm, GAP module using PARI ?
    - van Hoeij-Klueners (maximal) subfields algorithm
    - nfprimes for the primes in a nf whose norm lie in an interval

## 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 ]
     - use truncated polynomials for power series instead of re-implementing the wheel

## Parallelisation, use parallel interface internally:
     - CRT
     - factorint
     - SEA
     - bnfinit
     - ...

## GP
    -  forprimestep(p = a, {b}, Mod(c,d), ...)
    -  forfactored

## Elementary and analytic number theory
     - ECPP (Jared)
     - prime counting function primepi for large arguments
     - primorial

## Misc
     - Factorisation of bivariate polynomials (bifactor script)
     - Baker-Davenport
     - Generic Newton method
     - Abel-Jacobi map
     - merge K2.gp
     - Brew recipe for OSX

## 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
    - separate valuation for t_SER / t_PADIC (servalp / valp)
    - rename all gerepile* functions -> gc_*


# LEFTOVERS FROM ATELIER 2013 

## Short hacks
     - Lambert W [ for x >= -1/e ! ]
     - 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