Sage 4.3.1 Release Tour

Major features

Algebra

Basic arithmetics

Combinatorics

This was implemented by Nathann Cohen and David Joyner. T.S. Michael helped a great deal with the refereeing process. Here is an example.

sage: from sage.combinat.integer_vector import gale_ryser_theorem 
sage: p1 = [4,2,2] 
sage: p2 = [3,3,1,1] 
sage: gale_ryser_theorem(p1, p2) 
 [1 1 1 1] 
 [1 1 0 0] 
 [1 1 0 0]         
sage: p1 = [4,2,2,0] 
sage: p2 = [3,3,1,1,0,0] 
sage: gale_ryser_theorem(p1, p2) 
 [1 1 1 1 0 0] 
 [1 1 0 0 0 0] 
 [1 1 0 0 0 0] 
 [0 0 0 0 0 0] 

Iwahori Hecke algebras are deformations of the group algebras of Coxeter groups, such as Weyl groups (finite or affine). See: http://wiki.sagemath.org/HeckeAlgebras.

sage: R.<q>=PolynomialRing(QQ)
sage: H = IwahoriHeckeAlgebra("A3",q)
sage: [T1,T2,T3]=H.algebra_generators()
sage: T1*(T2+T3)*T1
T1*T2*T1 + (q-1)*T3*T1 + q*T3

The Bruhat order for Coxeter groups is now fully implemented.

Elliptic curves

Graph theory

Linear algebra

Miscellaneous

# File p.sage
def h(s):
    sleep(1)
    return s*s

def f(n1, n2, cores=24):
    @parallel(cores)
    def g(n):
        return h(n)*h(n)
    return [a for _, a in g([n1..n2])]

#------

sage: load p.sage
sage: time f(1,24)
CPU times: user 0.03 s, sys: 0.22 s, total: 0.25 s
Wall time: 2.28 s
[1, 16, 81, 256, 625, 1296, 2401, 4096, 6561, 10000, 14641, 28561, 20736, 
 38416, 50625, 65536, 83521, 104976, 130321, 160000, 194481, 234256, 279841, 331776]

This rewrite involves replacing the old implementation, which used multiprocessing (or Dsage), by a new one which uses the fork system call (it's about 2 pages of code written using only basic Python).

Packages