Skip to content

Releases: sagemath/sage

3.2

17 Aug 00:05
Compare
Choose a tag to compare
3.2

Release Tour

Sage 3.2 was released on November 20th, 2008 (changelog); 183 tickets (PRs) merged, 39 contributors. For the official, comprehensive release notes, see the HISTORY.txt file that comes with the release.

Subspace generation

Robert Miller: generate all subspaces of a vector space/projective space

New Symbolics

William Stein, Burcin Erocal: high level integration of pynac into Sage

General group algebras class

David Loeffler: general group algebras class

Elliptic Curve Doctesting

Paul Zimmermann: much improved elliptic curve doctests and some bug fixes

Modular Forms

Craig Citro: huge number of small fixes to modular forms code. David Loeffler: eta product modular functions. Craig Citro: massively speed up Victor Miller basis code.

Magma Interface

William Stein: much improved Magma interface with 100% doctests

Generalized Bernoulli Numbers

William Stein: massively optimized generalized Bernoulli numbers

Modular Composition

Martin Albrecht, Paul Zimmermann: improve modular composition in GF(2)[x]

Polyhedral Improvements

Marshall Hampton: Schlegel diagrams, standard polytopes, multiplication, polars

Notebook

Timothy Clemans: notebook templatization work

Sage Build

William Stein: make it so "sage -br" does the cythonization in parallel using pyprocessing. Robert Bradshaw, Gonzalo Tonaria, Craig Citro: massively cleaned up and faster setup.py. Robert Bradshaw: update to Cython 0.10.

libSingular

Simon King, Martin Albrecht: fix memory leaks in libsingular's reduce()

Numerical Linear Algebra

Jason Grout: make numpy the backend for matrices over CDF and RDF

Graph Theory

Jason Grout: much more robust planarity testing code for graphs

Full Changelog: 3.1.2...3.2

3.1.4

17 Aug 00:03
Compare
Choose a tag to compare

Release Tour

Sage 3.1.4 was released on October 20th, 2008 (changelog), 6 tickets (PRs) merged, 5 contributors. For the official, comprehensive release notes, see the HISTORY.txt file that comes with the release.

IPython vs. init.sage startup issue

Besides some small fixes the main problem was that due to IPython changes in 3.1.3, Sage no longer started when a user had an init.sage.

Full Changelog: 3.1.3...3.1.4

3.1.3

17 Aug 00:02
Compare
Choose a tag to compare

Release Tour

Sage 3.1.3 was released on October 14th, 2008 (changelog), 125 tickets (PRs) merged, 41 contributors. For the official, comprehensive release notes, see the HISTORY.txt file that comes with the release.

ReST Documentation Preparation

Mike Hansen: inclusion of Sphinx, Docutils, Jinja, and Pygments as a step toward ReST documentation

coercion improvements

Robert Bradshaw: Move over more rings to the new coercion model.

Sage-combinat Integration

Nicolas Thiery, Mike Hansen: tighter integration with sage-combinat, i.e. the 2144 server is now installable with vanilla Sage

libSingular Improvements

Martin Albrecht: MPolynomial_libsingular improvements for number fields and ZZ

Gröbner bases over Z and Z/nZ

Martin Albrecht: Add a toy implementation for Gröbner bases over Z and Z/nZ as well as optional binding to M2's Gröbner base engine.

New Symbolics

William Stein, Burcin Erocal: add initial pynac-0.1.p0 package

Modular Symbols

William Stein, Craig Citro: optimize fast computation of hecke eigenvalues on weight 2 modular symbols for gamma0

Build Improvements

Michael Abshoff: numerous Solaris build fixes

Full Changelog: 3.1.2...3.1.3

3.1.2

17 Aug 00:02
Compare
Choose a tag to compare

Release Tour

Sage 3.1.2 was released on September 19th, 2008 (changelog), 251 tickets (PRs) merged, 42 contributors. For the official, comprehensive release notes, see the HISTORY.txt file that comes with the release.

Doctest Coverage Hits 60%

  • Mike Hansen wrote doctests for almost all pexpect interfaces, which will ensure greater stability across the board.

Hidden Markov Models

  • William Stein wrote Cython bindings for the GHMM C library for computing with Hidden Markov Models, which are a statistical tool that is important in machine learning, natural language processing, bioinformatics, and other areas. GHMM is also now included standard in Sage.

Notebook Bugs

  • Many bugs introduced in 3.1.1 were fixed by Mike Hansen and Timothy Clemans.
  • A new testing procedure was implemented, hopefully preventing regressions like in 3.1.1 in the future.

New Structures for Partition Refinement

Robert Miller

  • Hypergraphs (i.e. incidence structures) -- this includes simplicial complexes and block designs
  • Matrices -- the automorphism group of a matrix is the set of column permutations which leave the (unordered) set of rows unchanged

Major polytope improvements

Arnaud Bergeron and Marshall Hampton

  • Triangulation code was improved (could still be better)
  • Built-in polytope class was added with many standard regular polytopes and families (e.g. hypersimplices)
  • New polytope methods such as polars, graphs, and Schlegel projections were added.
  • Support for scalar multiplication and translation by vectors.
  • Here is a demo of just some of the new functionality: https://github.com/user-attachments/assets/42d61b46-827a-450e-b035-1926795a2f4e

Improved Dense Linear Algebra over GF(2)

  • M4RI (http://m4ri.sagemath.org) was updated to the newest upstream release which
    • provides much improved performance for multiplication (see M4RI's "performance" page),
    • provides improved performance for elimination,
    • contains several build and bugfixes.
  • hashs and matrix pickling was much improved (Martin Albrecht)

Before

sage: A = random_matrix(GF(2),10000,10000)
sage: A.set_immutable()
sage: %time _ = hash(A)
CPU times: user 3.96 s, sys: 0.62 s, total: 4.58 s
sage: A = random_matrix(GF(2),2000,2000)
sage: %time _ = loads(dumps(A))
CPU times: user 4.00 s, sys: 0.07 s, total: 4.07 s

After

sage: A = random_matrix(GF(2),10000,10000)
sage: A.set_immutable()
sage: %time _ = hash(A)
CPU times: user 0.02 s, sys: 0.00 s, total: 0.02 s
sage: A = random_matrix(GF(2),2000,2000)
sage: %time _ = loads(dumps(A))
CPU times: user 1.35 s, sys: 0.01 s, total: 1.37 s
  • dense matrices over $\mathbb{F}_2$ can now be written to/read from 1-bit PNG images (Martin Albrecht)

New PolyBoRi Version (0.5) and Improved Interface

  • PolyBoRi was upgraded from 0.3 to 0.5rc (Tim Abbott, Michael Abshoff, Martin Albrecht)
  • mq.SR now returns PolyBoRi equation systems if asked to
  • support for boolean polynomial interpolation was added
    Example

First we create a random-ish boolean polynomial.

sage: B.<a,b,c,d,e,f> = BooleanPolynomialRing(6)
sage: f = a*b*c*e + a*d*e + a*f + b + c + e + f + 1
        Now we find interpolation points mapping to zero and to one. 
sage: zeros = set([(1, 0, 1, 0, 0, 0), (1, 0, 0, 0, 1, 0), \
                   (0, 0, 1, 1, 1, 1), (1, 0, 1, 1, 1, 1), \
                   (0, 0, 0, 0, 1, 0), (0, 1, 1, 1, 1, 0), \
                   (1, 1, 0, 0, 0, 1), (1, 1, 0, 1, 0, 1)])
sage: ones = set([(0, 0, 0, 0, 0, 0), (1, 0, 1, 0, 1, 0), \
                  (0, 0, 0, 1, 1, 1), (1, 0, 0, 1, 0, 1), \
                  (0, 0, 0, 0, 1, 1), (0, 1, 1, 0, 1, 1), \
                  (0, 1, 1, 1, 1, 1), (1, 1, 1, 0, 1, 0)])
sage: [f(*p) for p in zeros]
[0, 0, 0, 0, 0, 0, 0, 0]
sage: [f(*p) for p in ones]
[1, 1, 1, 1, 1, 1, 1, 1]

Finally, we find the lexicographically smallest interpolation polynomial using PolyBoRi .

sage: g = B.interpolation_polynomial(zeros, ones); g
b*f + c + d*f + d + e*f + e + 1
sage: [g(*p) for p in zeros]
[0, 0, 0, 0, 0, 0, 0, 0]
sage: [g(*p) for p in ones]
[1, 1, 1, 1, 1, 1, 1, 1]

QEPCAD Interface

Developer's Handbook

  • John H Palmieri rewrote/rearranged large parts of the 'Programming Guide' (now 'Developer's Guide') which should make getting started easier for new developers.

Improved 64-bit OSX Support

Fast Numerical Integration

GAP Meataxe Interface

  • In the module matrix_group, the method module_composition_factors interfaces with GAP's Meataxe implementation. This will return decomposition information for a G-module, for any matrix group G over a finite field (David Joyner and Simon King).

Better SymPy Integration

  • Ondrej Cetrik implemented more conversions from Sage native types to SymPy native types.

Faster Determinants of Dense Matrices over Multivariate Polynomial Rings

  • Martin Albrecht modified Sage to use Singular

Before

sage: P.<x,y> = QQ[]
sage: C = random_matrix(P,8,8)
sage: %time d = C.det()
CPU times: user 2.78 s, sys: 0.02 s, total: 2.80 s

After

sage: P.<x,y> = QQ[]
sage: C = random_matrix(P,8,8)
sage: %time d = C.det()
CPU times: user 0.09 s, sys: 0.00 s, total: 0.09 s
  • a discussion about this issue can be found on sage-devel

Real Number Inputs Improved

  • Robert Bradshaw improved real number input so that the precision is preserved better:

Before

sage: RealField(256)(1.2)
1.199999999999999955591079014993738383054733276367187500000000000000000000000

After

sage: RealField(256)(1.2)
1.200000000000000000000000000000000000000000000000000000000000000000000000000

Arrow drawing improved

  • Jason Grout redid the arrows to look nicer and behave better with graphs:
sage: g = DiGraph({0:[1,2,3],1:[0,3,4], 3:[4,6]})
sage: show(g)

Eigen functions for matrices

  • Jason Grout added a few standard functions to compute eigenvalues and left and right eigenvectors, returning exact results in QQbar.
sage: a = matrix(QQ, 4, range(16)); a
[ 0  1  2  3]
[ 4  5  6  7]
[ 8  9 10 11]
[12 13 14 15]
sage: a.eigenvalues()
[0, 0, -2.464249196572981?, 32.46424919657298?]
sage: a.eigenvectors_right()
[(0, [
(1, 0, -3, 2),
(0, 1, -2, 1)
], 2),
 (-2.464249196572981?,
  [(1, 0.3954107716733585?, -0.2091784566532830?, -0.8137676849799244?)],
  1),
 (32.46424919657298?,
  [(1, 2.890303514040928?, 4.780607028081855?, 6.670910542122782?)],
  1)]
sage: D,P=a.eigenmatrix_right()
sage: P
[                   1                    0                    1                    1]
[                   0                    1  0.3954107716733585?   2.890303514040928?]
[                  -3                   -2 -0.2091784566532830?   4.780607028081855?]
[                   2                    1 -0.8137676849799244?   6.670910542122782?]
sage: D

[                  0                   0                   0                   0]
[                  0                   0                   0                   0]
[                  0                   0 -2.464249196572981?                   0]
[                  0                   0                   0  32.46424919657298?]
sage: a*P==P*D
True

The question marks at the end of the numbers in the previous example mean that Sage is printing out an approximation of an exact value that it uses. In particular, the question mark means that the last digit can vary by plus or minus 1. In other words, 32.46424919657298? means that the exact number is really between 32.46424919657297 and 32.46424919657299. Sage knows what the exact number is and uses the exact number in calculations.

Full Changelog: 3.1.1...3.1.2

3.1.1

17 Aug 00:01
Compare
Choose a tag to compare

Sage 3.1.1 (released Aug 17, 2008; changelog)

See Sage 3.1 for the feature tour. The 3.1.1 release was a bug fix release that fixed one critical bug in Sage 3.1.

Full Changelog: 3.1...3.1.1

3.1

17 Aug 00:00
Compare
Choose a tag to compare
3.1

Release Tour

Sage 3.1.1 was released on August 17th, 2008 (changelog)

114 tickets (PRs) merged, 44 contributors). For the official, comprehensive release notes, see the HISTORY.txt file that comes with the release.

New Coercion Infrastructure

Robert Bradshaw, David Roe: new coercion model

Graph and Plotting Improvements

Arnaud Bergeron, Jason Grout, Robert Miller, Franco Saliola

  • (Robert Miller, Franco Saliola) Automatic plotting of trees and posets.

Major Update to Root Systems

Dan Bump, Nicolas Thiery, Nicolas Borie, Mike Hansen

Steenrod Algebra Calculations

John Palmieri

Notebook improvements

Timothy Clemans

Free Modules Revision

David Kohel

Multimodular Algorithm for Bernoulli Numbers

David Harvey

Partition Refinement

Robert Miller

  • Generalized the existing algorithms for graphs and binary codes, rewrote algorithm to be substantially more legible and maintainable.

Integral Point Finding for Elliptic Curves over Q

Tobias Nagel, Michael Mardaus, John Cremona

  • Integral points on elliptic curves over Q: done, in 3.1.1
  • S-integral points on elliptic curves over Q: in progress

New sage_input Function

Carl Witty

New printing for intervals and QQbar elements

Carl Witty

Sage 3.1.1 introduces a new way to print intervals and QQbar elements:

sage: QQbar(sqrt(2))
1.414213562373095?

The question mark syntax indicates that the real value is within 1.414213562373094 and 1.414213562373096 (that the last digit could vary by up to plus or minus one). For QQbar elements, Sage knows the real value and uses that value in calculations.

Full Changelog: 3.0.5...3.1

3.0.6

16 Aug 23:58
Compare
Choose a tag to compare

Release Tour

Sage 3.0.6 was released on July 30th, 2008 (changelog), 39 tickets (PRs) merged, 22 contributors. For the official, comprehensive release notes, see the HISTORY.txt file that comes with the release.

FIXME

Full Changelog: 3.0.5...3.0.6

3.0.5

16 Aug 23:58
Compare
Choose a tag to compare

Release Tour

Sage 3.0.5 was released on July 11th, 2008 (changelog), 5 tickets (PRs) merged, 3 contributors. For the official, comprehensive release notes, see the HISTORY.txt file that comes with the release.

FIXME

Full Changelog: 3.0.4...3.0.5

3.0.4

16 Aug 23:56
Compare
Choose a tag to compare

Release Tour

Sage 3.0.3 was released on July 9th, 2008 changelog), 131 tickets (PRs) merged, 34 contributors. For the official, comprehensive release notes, see the HISTORY.txt file that comes with the release.

Integer polynomials now use FLINT (Burcin Erocal, Carl Witty)

The polynomial ring ZZ['x'] is now implemented using FLINT, rather than NTL; this gives huge speedups on many operations (such as multiplication of large polynomials). (The old NTL implementation is still available with PolynomialRing(ZZ, 'x', implementation='NTL').)

Sage startup time improvements

Notebook updates

@parallel and pyprocessing

Full Changelog: 3.0.3...3.0.4

3.0.3

16 Aug 23:56
Compare
Choose a tag to compare

Release Tour

Sage 3.0.3 was released on June 23rd, 2008 (changelog), 85 tickets (PRs) merged, 23 contributors. For the official, comprehensive release notes, see the HISTORY.txt file that comes with the release.

FIXME

Cyclotomic Linear Algebra

#3042

Build fixes for 64-bit OS X

Full Changelog: 3.0.2...3.0.3