Size: 5790
Comment:
|
Size: 5382
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 87: | Line 87: |
Here is how long Sage currently takes to compute the reduced row echelon form over GF(2^4) on a Macbook Pro (2nd generation): | Implement fast-ish linear algebra over GF(2^n) for n small. Here are some preliminary benchmarks. |
Line 94: | Line 94: |
Note that over GF(2^8) this code is already faster than Magma {{{ > K<a> := GF(2^8); > for i := 1000 to 10001 by 1000 do for> A:=RandomMatrix(K,i,i); for> t:=Cputime(); for> E:=EchelonForm(A); for> print i, Cputime(t); for> end for; 1000 1.290 2000 9.870 3000 33.560 }}} {{{ gf(2^8), 1000 x 1000: wall time: 0.865 gf(2^8), 2000 x 2000: wall time: 4.306 gf(2^8), 3000 x 3000: wall time: 14.029 }}} |
[[days24/projects/gf2e|project page]] |
Sage Days 24 Coding Sprint Projects
This is a list of projects suitable for Sage Days 24. Feel free to add your favourite ideas/wishes, and to put your name down for something you're interested in (you'll need to get an account on the wiki to do this).
Contents
-
Sage Days 24 Coding Sprint Projects
- GIAC Factoring
- Kovacic's Algorithm
- Hypergeometric Functions
- Dynamic attributes for classes derived from Function
- Plural support
- Parallel Integration
- Function Fields
- Fast linear algebra over small extensions of GF(2)
- Generating Stuff
- Fix sage.functions
- Easy ripping apart of symbolic expression trees
- (done) Matrix group actions on polynomials
GIAC Factoring
People: Thomas, Burcin, Richard, William Stein (total anarchy, no leader!)
Kovacic's Algorithm
People: Burcin, Erocal, Felix
Implement Kovacic's algorithm in Sage.
Hypergeometric Functions
People: Flavia Stan, Karen Kohl, Fredrik Johansson, Zaf
Add a hypergeometric function class + simplifications
Dynamic attributes for classes derived from Function
People: Simon, Burcin
Let f be an instance of a subclass of BuiltinFunction, and let t be obtained by calling f(a,b,c). According to Burcin, for implementing hypergeometric functions it would be useful to be able to access the methods (say, 'foo') of f that are not methods of BuiltinFunction, so that calling t.foo() is the same as f.foo(a,b,c).
Of course, it would be nice to have 'foo' show up in tab completion and in dir(t). The code we wrote seems to solve it, and should be posted to trac after adding some doctests. Here is an example. Let ExampleBuiltin(BuiltinFunction) be a class that defines a method
def some_function_name(self, *args): print self print args return len(args)
Then, one can do
sage: ex_func = ExampleBuiltin() sage: t = ex_func(x,x+1, x+2) # introspection: sage: 'some_function_name' in dir(t) True # tab completion sage: import sagenb.misc.support as s sage: s.completions('t.some', globals(), system='python') ['t.some_function_name'] # intended usage sage: t.some_function_name() ex_func (x, x + 1, x + 2) 3
Plural support
People: Burcin Erocal, Simon King, Oleksandr, Alex D., Burkhard (total anarchy!)
Add support for Singular's noncommutative component Plural, finish #4539.
Parallel Integration
People: Stefan Boethner, Ralf, Burkhard, Burcin Erocal
Integrate Stefan Boettner's parallel integration code in Sage. There are several prerequisites for this, such as
algebraic function fields (transcendence degree > 1)
- differential rings/fields
- proper to_polynomial(), to_rational() functions for symbolic expressions
Function Fields
The goal of this project is to get the basic infrastructure for function fields into Sage. See Hess's papers and talks.
People: William Stein, Sebastian P.
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.
Fast linear algebra over small extensions of GF(2)
People: Martin Albrecht, Ciaran Mullan, Robert Miller, Sebastian P., Thomas
Implement fast-ish linear algebra over GF(2^n) for n small. Here are some preliminary benchmarks.
n |
Sage |
NTL *2 |
Magma |
M4RIE |
1000 |
49.49 |
18.84 |
0.090 |
0.097 |
2000 |
429.05 |
149.11 |
0.510 |
0.529 |
3000 |
1494.33 |
526.57 |
1.640 |
2.315 |
Generating Stuff
People: Robert Miller (self-determination!)
For a somewhat recent snapshot of what I'm doing (as recent as the last time I updated it...), look:
Fix sage.functions
People: Frederik, William Stein, Harald
Easy ripping apart of symbolic expression trees
People: Burcin, Thomas, Stefan, Frederik
(done) Matrix group actions on polynomials
People: Simon
(review needed for 4513) So far, a matrix group could act on, e.g., vectors. If it tried to act on something else, it always tried to do a matrix multiplication - which is not what we want for an action on polynomials! The patch in trac allows to do:
sage: M = Matrix(GF(3),[[1,2],[1,1]]) sage: N = Matrix(GF(3),[[2,2],[2,1]]) sage: G = MatrixGroup([M,N]) sage: m = G.0 sage: n = G.1 sage: R.<x,y> = GF(3)[] # left action on polynomial sage: m*x x + y # right action on polynomial sage: x*m x - y # it really is left/right action! sage: (n*m)*x == n*(m*x) True sage: x*(n*m) == (x*n)*m True # Action on vectors and matrices still works as it used to do sage: x = vector([1,1]) sage: x*m (2, 0) sage: m*x (0, 2) # again, verify left/right action sage: (n*m)*x == n*(m*x) True sage: x*(n*m) == (x*n)*m True sage: x = matrix([[1,2],[1,1]]) sage: x*m [0 1] [2 0] sage: m*x [0 1] [2 0] sage: (n*m)*x == n*(m*x) True sage: x*(n*m) == (x*n)*m True