## page was renamed from CodingProjects

<<TableOfContents>>

== Descent on Cyclic Covers of the Projective Line ==

 Port 200 lines of Magma code to Sage.

 * People: Michael Mourao, Maite Aranes


== Finite Fields ==

Deal with David Roe's latest patch bomb.

 * People: John Cremona

 * Tickets: #7883, #8333, #8334, #8335


== sage-4.5 ==


 * Robert Miller


== ABC at home ==


 * review code
 * model runtime

 * People: Bart de Smit, Willem Jan Palenstijn, Jeroen Demeyer, Mak Trifkovic, Thijs van Dijk, Alyssa Milburn, Dan Bernstein, Sebastian Pancratz


== Models for elliptic curves ==


 * genus 1 --> Weierstrass
 * People: Dan Bernstein, Tanja Lange, Niels Duif, Johannes van der Horst, Michiel Kosters, Marco Streng, Vince Bush, Julio Brau, Michael Mourao, John Cremona
 * Tom Fisher's Magma code for invariants and covariants of plane cubics [[attachment:covariants.m]], and for minimization and reduction of genus one models [[attachment:g1minimisation-2008.m]] [[attachment:g1reduction-2008.m]] [[attachment:minred-demo1.m]] [[attachment:minred-demo2.m]]
 * Ian Connell's lecture notes contain all the formulas needed to convert plane cubics and hyperelliptic quartics:  see http://www.math.mcgill.ca/connell/public/ECH1/ (first several pages of Chapter 1 (c1.ps)).


== Function Fields ==

The main goal of this project is to get the basic infrastructure for function fields into Sage.   If time permits, we will also implement Hess's algorithms.  See [[daysff/curves|Hess's papers and talks]].



People: William Stein, Maarten Derickx, Peter Bruin, Jan Tuitman, Max Flander, Tanja Lange, Michiel Kosters, Christiane Peters, Marco Streng 

 * Trac 9054: [[http://trac.sagemath.org/sage_trac/ticket/9054|Create a class for basic function_field arithmetic for Sage]]
 * Trac 9069: [[http://trac.sagemath.org/sage_trac/ticket/9069|Weak Popov Form (reduction algorithm)]]
 * Trac 9094: [[http://trac.sagemath.org/sage_trac/ticket/9094|is_square and sqrt for polynomials and fraction fields]]
 * Trac 9095: [[http://trac.sagemath.org/sage_trac/ticket/9095|Heights of points on elliptic curves over function fields]]
 
Make sure to see [[daysff/curves|this page for more links]].


== Hyperbolic geometry ==

 * plotting (arc of circle, filling domain bounded with arc of circles, ...)
 * actions (using the coercion model to act on Hyperbolic Plane element by matrices)
 * fundamental domains (port H. Verrill program and implement R. Kulkarni method)
 * People: Vincent Delecroix, Maite Aranes, Thijs van Dijk

{{http://iml.univ-mrs.fr/~delecroi/hyp-pic1.png|cool hyperbolic picture 1}}
{{http://iml.univ-mrs.fr/~delecroi/hyp-pic2.png|cool hyperbolic picture 2}}

Related tickets
 * Trac 3313: [[http://trac.sagemath.org/sage_trac/ticket/3313|Old ticket for lifting of SL_m(Z/nZ) to SL_m(Z)]]
 * Trac 7424: [[http://trac.sagemath.org/sage_trac/ticket/7424|Inconsistency of SL and PSL]]
 * Trac 9076: [[http://trac.sagemath.org/sage_trac/ticket/9076|plot arc of circle]]

Created tickets:
 * Trac 9437: [[http://trac.sagemath.org/sage_trac/ticket/9437|detected bug for special linear group over finite rings]]
 * Trac 9439: [[http://trac.sagemath.org/sage_trac/ticket/9439|hyperbolic geometry]]

Todo:
  * create a class for fundamental domains and make pairings appear on the boundary
  * work on general subgroup of the modular group

== Ticket #4000 on rational polynomials... QQ[x] via FLINT ==


 * People: Sebastian Pancratz, Bill Hart, Jan Tuitman


== Sage on GPU's ==


 * People: Dan Bernstein, Thijs van Dijk, Andy Novocin


== ZZ[x] factoring in FLINT, plus LLL ==


 * People: Andy Novocin, Wieb Bosma, Johannes van der Horst, Bill Hart, Max Flander

=== Swinnerton-Dyer Polynomials ===

See [[http://trac.sagemath.org/sage_trac/ticket/9492|trac 9492]].

 * Some code:
{{{
sage: a = sqrt(2)+sqrt(3)+sqrt(5)+sqrt(7)+sqrt(11)
sage: f = algebraic_dependency(a.numerical_approx(10000),32)
sage: b = a.numerical_approx(100000)
sage: time f(b)
}}}

 * Code by Jeroen Demeyer to compute Swinnerton-Dyer polynomials very quickly using p-adics:
{{{
# Lift a padic `x` to ZZ, but centered around zero.
def centerlift(x):
    modulus = x.parent().prime_pow(x.precision_absolute())
    z = ZZ(x);
    if (2*z > modulus):
        z -= modulus
    return z

# L = list of numbers you want to take the square root of.
# bound = bound on the absolute value of the coefficients of
# the resulting polynomial.
def swinnerton_dyer(L, bound):
    for p in Primes():
        if all([gcd(p,s) == 1 and is_square(Mod(s,p)) for s in L]):
            break
    prec = ceil(log(bound)/log(p))
    print "Using p =", p
    print "Precision:", p, "^", prec
    K = Qp(p, prec, print_mode="terse", print_pos=False)
    
    sqrts = [sqrt(K(s),extend=False) for s in L]
    
    n = len(L)
    padic_roots = []
    for k in range(0, 2^n):
        binary = ZZ(k).digits(base=2,padto=n)
        root = sum([sqrts[i]*(binary[i]*2-1) for i in range(0,n)])
        padic_roots.append(root)
    t = polygen(K)
    pol_padic = prod([t - r for r in padic_roots])
    coeffs_ZZ = [centerlift(c) for c in pol_padic.list()]
    max_coeff = max([abs(c) for c in coeffs_ZZ])
    print "Largest coefficient:", p, "^", ceil(log(max_coeff)/log(p))
    return PolynomialRing(ZZ, names='t')(coeffs_ZZ)

# Example:
time swinnerton_dyer([2,3,5,7,11,13,17,19,23,29], 2^4000)   # bound is heuristic
}}}


== MPIR projects ==

 * fmpz in Sage
 * a very concrete C project
 * People: Frederik Johansson, Bill Hart

== Ticket #4260 - Sage + Linbox ==

 * Polish linbox-sage interface (in LinBox), and release 1.1.7rc1
 * Update Sage interface
 * Rewrite of sage-matrix-modn-dense: continued the work initiated at SD16 with Burcin
 * Mod 2 reduction bug (fixed!): [[http://trac.sagemath.org/sage_trac/ticket/6904|trac 9604]].
 * People: Andy Novocin, Clement Pernet, (Burcin Erocal, remotely)


== Sage Notebook in the classroom ==


 * People: Bart de Smit, William Stein, Eric van der Velden, Willem Jan Palenstijn, Alyssa Milburn

=== Specific Projects ===

  * Greatly improve [[http://nb.sagemath.org/|the Sage Notebook website]]
    * Improved information on the site:
       * how to setup a server
          * standalone server
          * with sage
       * how to develop the sage notebook: give a complete example of how to change something
    * Make site much prettier -- I think it is ugly.

  * Database
    * Users and basic configuration -- get the startup time of sagenb.org down from 20 minutes to 1 second by replacing users.pickle by a sqlite database, and rewriting the notebook server to use this database instead of making a list of *all* users (and other data about them) in memory.
    * worksheets -- see [[http://trac.sagemath.org/sage_trac/ticket/8757|trac 8757]];  This might also totally deal with the above "users and basic configuration" info. 

  * Worksheet labels
    * linking between worksheets: [[http://trac.sagemath.org/sage_trac/ticket/5042|trac 5042]] is relevant
    * support library worksheets, so you can type, e.g., {{{load "library.sws"}}}
   

== General framework for the factor(n) command ==

 * mpfq is LGPL!
 * special support for $p^n \pm 1$.
 * add functionality to factor() and to class Factorization
 * implement addprimes() in the PARI interface (already works for GP interface)
 * People: Hendrik Lenstra, Dan Bernstein, Jeroen Demeyer, Tanja Lange, Christiane Peters, Peng Tian, Julio Brau, Mak Trifkovic
 * [[http://ttic.uchicago.edu/~kalai/papers/old_papers/factorcryptology.pdf|Kalai's paper]]

 * Something actually done: Trac #9450  -- factoring elements of number fields

== Solving Conics ==



 * People: Marco Streng, Mak Trifkovic, Peter Bruin, John Cremona
 * Write a Conic class using Denis Simon's pari code, possibly mwrank, finding points over number fields, other fields?
 * http://wiki.sagemath.org/days23/conics


== Sums of Squares ==


 * People: Japp Spies, Dung Duong, Peter Bruin, Michiel Kosters

== Porting ECHIDNA code from MAGMA ==

 * People: Lloyd Kilford, William Stein

 * Code: http://sage.math.washington.edu/home/ljpk/atkin_lehner_decomposition_dimensions.sage

 * [[http://trac.sagemath.org/sage_trac/ticket/9455|trac ticket number 9455]]