Contents

- Descent on Cyclic Covers of the Projective Line
- Finite Fields
- sage-4.5
- ABC at home
- Models for elliptic curves
- Function Fields
- Hyperbolic geometry
- Ticket #4000 on rational polynomials... QQ[x] via FLINT
- Sage on GPU's
- ZZ[x] factoring in FLINT, plus LLL
- MPIR projects
- Ticket #4260 - Sage + Linbox
- Sage Notebook in the classroom
- General framework for the factor(n) command
- Solving Conics
- Sums of Squares
- Porting ECHIDNA code from MAGMA

## 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 covariants.m, and for minimization and reduction of genus one models g1minimisation-2008.m g1reduction-2008.m minred-demo1.m 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 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: Create a class for basic function_field arithmetic for Sage

Trac 9069: Weak Popov Form (reduction algorithm)

Trac 9094: is_square and sqrt for polynomials and fraction fields

Trac 9095: Heights of points on elliptic curves over function fields

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

Related tickets

Trac 7424: Inconsistency of SL and PSL

Trac 9076: plot arc of circle

Created tickets:

Trac 9437: detected bug for special linear group over finite rings

Trac 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 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

- how to setup a server
- Make site much prettier -- I think it is ugly.

- Improved information on the site:
- 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
- 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?

## 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