Ideas to Implement in SAGE

Some of these are great. Some are probably bad and should not be implemented. Some are easy, and some are very difficult.

* See the more structured project list:

* 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?

* 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

sage: R = RealField(10, rnd='RNDD')
sage: p = R(pi)
sage: p
3.1406
sage: p.str(2)
'11.00100100'
sage: q = p.sin()
sage: q.str(2)
'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

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

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

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

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

The toric ideal of the twisted cubic in projective 3 space:
sage: R.<a,b,c,d> = PolynomialRing(QQ, 4)
sage: I = ideal(b^2-a*c, c^2-b*d, a*d-b*c)
sage: F = I.groebner_fan(); F
Groebner fan of the ideal:
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
sage: F.reduced_groebner_bases ()
[[-1*c^2 + b*d, -1*b*c + a*d, -1*b^2 + a*c],
 [c^2 - b*d, -1*b*c + a*d, -1*b^2 + a*c],
 [c^2 - b*d, b*c - a*d, -1*b^2 + a*c, -1*b^3 + a^2*d],
 [c^2 - b*d, b*c - a*d, b^3 - a^2*d, -1*b^2 + a*c],
 [c^2 - b*d, b*c - a*d, b^2 - a*c],
 [-1*c^2 + b*d, b^2 - a*c, -1*b*c + a*d],
 [-1*c^2 + b*d, b*c - a*d, b^2 - a*c, -1*c^3 + a*d^2],
 [c^3 - a*d^2, -1*c^2 + b*d, b*c - a*d, b^2 - a*c]]
sage: F.fvector()
(1, 8, 8)