Differences between revisions 11 and 30 (spanning 19 versions)
Revision 11 as of 2008-09-15 10:21:19
Size: 5519
Comment:
Revision 30 as of 2024-08-19 05:57:14
Size: 0
Editor: mkoeppe
Comment: Moved to https://github.com/sagemath/sage/releases/tag/3.1.2 including attachment
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
= Sage 3.1.2 Release Tour =

Sage 3.1.2 was released on XXX, 2008. For the official, comprehensive release notes, see the HISTORY.txt file that comes with the release. For the latest changes see sage-3.1.2.txt.

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

== 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 [http://m4ri.sagemath.org/performance.html 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 [http://www.gap-system.org/Manuals/doc/htm/ref/CHAP067.htm Meataxe] implementation. This will return decomposition information for a G-module, for any matrix group G over a finite field.

== 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 [http://groups.google.com/group/sage-devel/browse_thread/thread/7aa1bd1e945ff372/ 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
}}}