Differences between revisions 19 and 50 (spanning 31 versions)
Revision 19 as of 2010-07-06 14:55:26
Size: 4394
Editor: was
Comment:
Revision 50 as of 2010-08-31 23:54:42
Size: 8432
Editor: was
Comment:
Deletions are marked like this. Additions are marked like this.
Line 4: Line 4:

== 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
Line 17: Line 33:
 * People: Bart de Smit, Willem Jan Palenstijn, Demeyer, Mak Trifkovic, Thijs van Dijk, Alyssa Milburn, Dan Bernstein, Sebastian Pancratz  * People: Bart de Smit, Willem Jan Palenstijn, Jeroen Demeyer, Mak Trifkovic, Thijs van Dijk, Alyssa Milburn, Dan Bernstein, Sebastian Pancratz
Line 31: Line 47:
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. 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]].

Line 36: Line 54:
 * Trac 9069: [[http://trac.sagemath.org/sage_trac/ticket/9069|Weak Popov Form (reduction algorithm)]]
Line 38: Line 57:
  Make sure to see [[daysff/curves|this page for more links]].
Line 42: Line 63:

 * plotting, actions, fundamental domains
 * Java
 * port Verrill's fund.dom. program
 * People: Vincent Delecroix, Maite Arianes, Thijs van Dijk
 * 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
Line 65: Line 100:

=== 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
}}}
Line 75: Line 163:

 * unify for matrices over GF(p)
 * C++ wizardry, etc
 * 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]].
Line 109: Line 198:
 * People: Hendrik Lenstra, Dan Bernstein, Tanja Lange, Christiane Peters, Peng Tian, Julio Brau, Mak Trifkovic
 * 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
Line 116: Line 209:
 * a Conic class using Denis Simon's pari code, possibly mwrank, finding points over number fields, other fields?
 * see sage trac #727 (and also #6881)
Line 119: Line 210:
 * 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
Line 124: Line 217:
 * People: Japp Spies, Dung Duong  * People: Japp Spies, Dung Duong, Peter Bruin, Michiel Kosters
Line 128: Line 221:

 * People: Lloyd Kilford
 * 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]]

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

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 Hess's papers and talks.

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

Make sure to see 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

cool hyperbolic picture 1 cool hyperbolic picture 2

Related tickets

Created tickets:

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 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!): 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 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 trac 8757; This might also totally deal with the above "users and basic configuration" info.

  • Worksheet labels
    • linking between worksheets: 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
  • 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

days23/CodingProjects (last edited 2010-08-31 23:54:42 by was)