Ideas of things to Implement in SAGE

* Finite fields. Fix it so this isn't needed: {{{sage: from sage.rings.finite_field import FiniteField_ext_pari sage: k = FiniteField_ext_pari(9,modulus=x^2+x+2) sage: (k.0).charpoly() x^2 + x + 2}}}

* Make it so 2d scenes described by SAGE's ploting functions, e.g., line, polygon, point, etc., can be rendered using tachyon somehow. I.e., all the objects would have 3d analogues and lie in a plane.

* "Port" Helena Verrill's http://www.math.lsu.edu/~verrill/fundomain/ to SAGE. It's currently written in Java and also MAGMA. It will be incredibly pretty if built on top of SAGE/matplotlib's plotting functionality, and SAGE's tachyon ray tracer (!). (In progress at the MSRI workshop 06 coding sprints...)

* Make it so all matrices can be coerced to MAGMA matrices (this is pretty good now). Add a flag to the matrix.py file, so echelon forms can be done by MAGMA by default instead of SAGE. This will speed some things up for applications that build on SAGE's linear algebra, so that these apps can be built. These apps will provide good benchmarking coding, etc., to make developing good linear algebra in SAGE easier.

* (Didier Deshommes:) I would love to see an option where while re-building 1 or more modules with sage -br, you can also verify that your modifications still pass unit tests for pyx, pyxe and py files.

Currently I have a hack in my setup.py ( and a patch here: http://sage.math.washington.edu/home/dfdeshom/sage/devel/sage/setup-hack.patch.txt ) that makes this possible for pyx files (and therefore for pyxe files?), but this seems more complicated for native .py files. Does anyone know how to hijack the build_py process to run doctests on modified .py files?

* See the more structured project list (somebody should move that list here):

* todo:

* todo:

* feature request: make an upgrade_packages() funtion that upgrades

* todo: sage build *still* doesn't check that you have flex/bison installed. Argh! Why?

* It would be nice to be able to do this. Need to implement more general division algorithm?? iterated poly rings:

   1 # Worksheet '_scratch_' (2006-07-28 at 12:14)
   2 R.<x> = PolynomialRing(QQ)
   3 S.<y> = PolynomialRing(R)
   4 T.<z> = S.quotient(y^3-3)
   5 z*z*z
   6 Traceback (most recent call last):
   7 TypeError: unable to find a common parent for 1 (parent: Fraction Field of Univariate Polynomial Ring in x over Rational Field) and 1 (parent: Univariate Polynomial Ring in y over Univariate Polynomial Ring in x over Rati...

* feature request: paste into notebook should resize box.

* possible change: sage_eval -- should it only take strings as input?!

* feature request: showing sourcecode of functions in pyrex files. (!!)

* feature request: add imshow functionality to plot

* in online simple sage calculator "? help" doesn't work.

* e^(I*pi) is perhaps lame.

* Macaulay2 source package:

     -- it still doesn't detect the SAGE readline,
       so you have to have readline installed system-wide.
          apt-get install libreadline-dev
     -- it depends on etags
         apt-get install exuberant-ctags

* question: is this good or bad? maybe I don't understand the rigor

   1 sage: R = RealField(10, rnd='RNDD')
   2 sage: p = R(pi)
   3 sage: p
   4 3.1406
   5 sage: p.str(2)
   6 '11.00100100'
   7 sage: q = p.sin()
   8 sage: q.str(2)
   9 '0.00000000001111110110'

* (reported by Justin Walker -- 2006-06-07)

> The install worked, but a bunch of the "per-user" stuff got dropped
> into his home directory, presumably as expected, but owned by root,
> so he can't modify the files.
I'm a little puzzled about how that happened.  Was he installing SAGE
as user root but with his HOME environment variable set to
his home directory?  If you install SAGE as root, then
there is no knowledge of any user's home directory in the
environment.   At worst, "per-user" stuff will be copied to
the root user's /root directory.
Probably the user wasn't logged in as root, but used sudo:
was@sha:~$ sudo echo $HOME
/home/was
This is a tricky problem, because some small part of the install
process requires starting SAGE, but starting SAGE requires having
some startup files in $HOME.  But this is definitely a bug, and
I'll add it to the list.
(from justin) Thanks!  It's easy to recover from, modulo figuring
out what to change, but it would be good to fix, if possible.  One
possible fix is to force $HOME to a known value (/dev/null?  :-}) and
not set up the HOME files in this case.
> Does SAGE do this automatically when it starts up and discovers that
> the environment it expects (the ~/.sage stuff) is either out of date
> or non-existent?
That seems like a very reasonable idea.
> I suppose there are some that run as root by default, but that
> strikes me as wrong-headed, and unsupported :-}
SAGE could print a message on any startup as root warning the user
that running SAGE as root is different.  I like this idea.

* It should be very easy to change properties of a graphics object, e.g.,

* 2006-05-21: Error when doing "sage -i " with abs path; Workaround: Just go to the correct directory and type "sage -i gap_packages-4.4.7_2.spkg" to test it out.

* 2006-05-16:

* 2006-05-15:

* 2006-05-08: sajax: prompt doesn't change when change mode.

* 2006-05-02: maxout.gnuplot randomly appears in my home directory

* in some cases echelon forms with big entries -- totally dominated

   1     sage: set_verbose(2)
   2     sage: victor_miller_basis(200,50)

* 2006-04: Should get better error message and caching, etc:

   1 sage: ... what is F???
   2 sage: time F.tropical_basis(check = False)
   3 /bin/sh: line 1:  3699 Aborted                 gfan_tropicalbasis 2>/dev/null
   4 CPU times: user 0.00 s, sys: 0.00 s, total: 0.00 s
   5 Wall time: 3.03
   6 _30 = []
   7 sage: time F.tropical_basis()
   8 CPU times: user 0.00 s, sys: 0.00 s, total: 0.00 s
   9 Wall time: 0.00
  10 _31 = []

* This is a good example to put in the docs.

   1 The toric ideal of the twisted cubic in projective 3 space:
   2 sage: R.<a,b,c,d> = PolynomialRing(QQ, 4)
   3 sage: I = ideal(b^2-a*c, c^2-b*d, a*d-b*c)
   4 sage: F = I.groebner_fan(); F
   5 Groebner fan of the ideal:
   6 Ideal (c^2 - b*d, -1*b*c + a*d, b^2 - a*c) of Polynomial Ring in a, b, c, d over Rational Field
   7 sage: F.reduced_groebner_bases ()
   8 [[-1*c^2 + b*d, -1*b*c + a*d, -1*b^2 + a*c],
   9  [c^2 - b*d, -1*b*c + a*d, -1*b^2 + a*c],
  10  [c^2 - b*d, b*c - a*d, -1*b^2 + a*c, -1*b^3 + a^2*d],
  11  [c^2 - b*d, b*c - a*d, b^3 - a^2*d, -1*b^2 + a*c],
  12  [c^2 - b*d, b*c - a*d, b^2 - a*c],
  13  [-1*c^2 + b*d, b^2 - a*c, -1*b*c + a*d],
  14  [-1*c^2 + b*d, b*c - a*d, b^2 - a*c, -1*c^3 + a*d^2],
  15  [c^3 - a*d^2, -1*c^2 + b*d, b*c - a*d, b^2 - a*c]]
  16 sage: F.fvector()
  17 (1, 8, 8)

* (["MartinAlbrecht"]) Reference Manual -> Wiki -> Refernce Manual conversion to allow contribution to the docs via the Wiki interface.

* (["MartinAlbrecht"]) Adding a "Open a notebook with these examples" button could be added to every Wiki page automatically if it has code blocks marked as #!sage (which would inherit from #!python). So viewers can play with/test examples directly.