* I think you should be able to use "print" to put blank lines the notebook, just like in the python interpreter. It doesn't seem to do this currently. It would make it much easier to read output sometimes. * add gallery to SAGE as a command... * modify the server subprocesses on sage.math so they are limited in time and space!! * random -- suddenly random is not imported as a module in sage.all, which is really annoying * I'll find a good way to make it so packages are skipped in all future builds (I just haven't done that yet). * something to keep people from building on 32-bit then 64-bit then 32-bit. * "make clean" message; or make that automatic. * binary install -- darcs_src_pull totally broken. * maybe adding elements of (Z/nZ)^k is broken if one isn't in there. See line 66 of free_module_element.py * sage-bdist -- darcs_src.pull() doesn't work correctly also README missing, etc. * in sage notebook, if there are prompts, e.g., "sage: 2", then no implicit printing of last result. It should still. * sage notebook restart often leaves "dead Python" process running. This is especially bad on OS X, where there is a 100 process limit. * tab complete on non-identify should give a warning / error * make integer.pyx's LCM the default (similar with GCD). * make sage_eval only take strings as input. * remove all printing of vars in all exceptions in SAGE!! * add docs to eigenvectors function. * Move the function dual_eigenvector in sage/hecke/module.py to the matrix class. * sage: R. = LaurentSeriesRing(QQ) sage: S. = LaurentSeriesRing(pAdicField(11)) sage: S(m^(-2) + 10*m + m^2 + O(m^3)) t^1 + 10*t^3 + t^4 + O(t^5) + 10*t^4 + 10*t^3 + t^4 + O(t^5) + t^5 + 10*t^3 + t^4 + O(t^5) + O(t^6 + 10*t^3 + t^4 + O(t^5)) Huh? * sage: E=EllipticCurve(GF(37),range(5)) sage: len(E) Traceback (most recent call last): ... TypeError: len() of unsized object (also should have trace of frob, charpoly, ap, etc.) * there is currently no easy way for people to implement vectors with left multiplication. In fact, left multiplication doesn't even work right now. * q_eigenform on old factors doesn't work: sage: M = ModularSymbols(63,2,sign=1).cuspidal_subspace() sage: M[2].q_eigenform() Traceback (most recent call last): M[2].q_eigenform() ... AttributeError: 'ModularSymbolsAmbient_wt2_g0' object has no attribute 'subspace_generated_by_images' * R. = PolynomialRing(QQ,2) S = PolynomialRing(GF(7),2) S(x) Boom! * when pasting a *huge* input file into the worksheet, the input text area is not sufficiently large. It stays too small. Weird. We need a good way to literally attach a file to the worksheet, then edit it in the worksheet. * database gap -- when making galois groups, it doesn't were on sage notebook when user is not root! ====================================================== NO LONGER USED... There's a line near the bottom like this DONE DONE DONE DONE DONE DONE DONE DONE DONE DONE The issues that have been resolved are listed after that line in the order they were resolved. *** Please help me fix these / implement these ideas, etc !!!! *** ------------------------------------------------------------------------ CRITICAL BUGS: * bug: iterated poly rings: # Worksheet '_scratch_' (2006-07-28 at 12:14) sage: R. = PolynomialRing(QQ) sage: S. = PolynomialRing(R) sage: T. = S.quotient(y^3-3) sage: z*z*z Traceback (most recent call last): 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... * bug: Relative number field arithmetic broken: K. = NumberField(x^2+3) R. = K['X'] L. = K.extension(X^2-(22 + a)) b^2 --> b^2 (should be linear combination of 1 and b.) * 2006-02-04: In some cases Singular multi-variate polynomial factorization is slow in SAGE. This not a fault of Singular but of how the SAGE NTL is built. If you download and install a Singular binary from the Singular website it will not have this problem (you can use it with SAGE by putting it in local/bin/). Likewise, some groebner basis calculations crash on 64-bit opteron with SAGE's singular build, but work fine with an official binary. * SAGE notebook freeze's firefox windows client when jsmath enabled: possible fix -- use noncompressed version?? ANNOYING NON-CRITICAL BUGS: * SAGE notebook load doesn't deal with dos format files correctly, but python import does. * Bug in display2d: sage: maxima.de_solve('diff(w,x,2) + 2*diff(w,x)+2*w = 0', ['x','w'], [0,1,2]) w = %e^-x*(3*sin(x) + cos(x)) sage: maxima.de_solve('diff(w,x,2) + 2*diff(w,x)+2*w = 0', ['x','w'], [0,1,2]).display2d() * sage: 0x5 ------------------------------------------------------------ File "", line 1 ZZ(0)x5 ^ SyntaxError: invalid syntax * bug in notebook: sage: sys.stdout.write('hi there') sage: sys.stdout.flush() hi ther ^^^^ ----- where's the e!! * sage: R. = PolynomialRing(ZZ, 2) sage: S = R/(x^2 + y^2); S sage: S. = R/(x^2 + y^2) sage: a^2 + b^2 == 0 << -- *should* be true or give an error -- will require macaulay2... >> * To: "Kyle Schalm" , sage-devel@lists.sourceforge.net Subject: Re: [SAGEdev] long string parsing bug in 1.3.2.2 The SAGE pre-parser currently works on single lines only -- it doesn't take into account multi-line blocks. This is more a not-implemented-error than a bug. Many thanks for sending this email though, since it's an excellent test case: mm.sage: --------------------- """ load with sage: load "/Users/kyle/Documents/math/scripts/mm.sage" """ --------------------- TODO/IDEA: * todo: Jones database -- added Richards (?) as co-author in documentation, etc. * todo: dvipng -- better error about dependency -- don't build if already have. * idea ?? notebook: when user closes web browser (e.g., doesn't ping at least once in 60 seconds), the relevant SAGe worksheet should be interrruped. After an hour the Python process should be killed. ??? * feature request: make an upgrade_packages() funtion that upgrades all installed optional packages to the latest versions. This would, in fact, be very easy to write with just a little Python code using the install_package and optional_packages() functions. * todo: sage build *still* doesn't check that you have flex/bison installed. Argh! Why? * open could load or attach (???) .sage files if you asked to "open" them?? * possible notebook bug: new empty cells at bottom are always created but sometimes not shown (have to refresh). * 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) * 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 of MPFR well. 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. *Paisa Seeluangsawat > There are typos in the docs. They tend to get functions' > optional arguments mixed up. For an example, compare > > > http://modular.math.washington.edu/sage/doc/html/ref/module-sage.rings.multi-polynomial-ring.html > > MPolynomialRing(base_ring, [n=False], [names=degrevlex], > [order=None], [macaulay2=1]) > > with > > $SAGE_ROOT/local/lib/python2.4/site-packages/sage/rings/ > > def MPolynomialRing(base_ring, n=1, names=None, > order='degrevlex', macaulay2=False): > > > There goes my first SAGE bug report :-), That's really weird. Many thanks for pointing out the problem. That documentation is generated from the source code, so I'll investigate the script that does the generation. Again, thanks for the bug report. * it should be very easy to change properties of a graphics object, e.g., change the rgbcolor without recomputing all the points! * From Dan Grayson: emacs, run after running sage-env, gives this message > modular% emacs& > [1] 28514 > modular% emacs: /home/dan/sage-1.3.2/local/lib/libpng12.so.0: no version information available (required by emacs) > but then it starts up anyway. I know. SAGE builds its own libpng. I don't know how to get rid of that error message. It's on my todo list. (I find it very annoying.) * 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: The error message for "sage -bf" sucks. * 2006-05-15: tracebacks include path of place where file was built?? this is hard coded? how to fix??? * 2006-05-08: sajax: prompt doesn't change * 2006-05-02: maxout.gnuplot randomly appears in my home directory after running "make test". Very annoying. * in some cases echelon forms with big entries -- totally dominated by rational reconstruction; this should be "easy" to fix by doing something much better (e.g., using GMP). Good example: sage: set_verbose(2) sage: victor_miller_basis(200,50) ------------------------------ * 2006-04: Should get better error message and caching, etc: 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. = 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) -------- done * Ask Anders J. (gfan author) for a command to output the graph associated to the 1-skeleton of the state polytope, i.e., the thing you move in via "interactive". he doesn't have it... ============ * add LIE: According to the URL, http://young.sp2mi.univ-poitiers.fr/~marc/LiE/ Lie is publically available for free in source code. ---------------------------------------------------------- * denoms in rational number _init_ funcs possibly non-optimal and slow: sage: a = 5/1 sage: a._pari_init_() _2 = '5/1' sage: E = EllipticCurve('37a') sage: E._pari_init_() _4 = 'ellinit([0/1,0/1,1/1,-1/1,0/1])' -- it's done this way so, e.g., magma(a) is a rational. But for PARI it's pointless: sage: gp(a).type() _5 = t_INT * > But the most lightweight/straight-forward option I found would be: > http://users.auriga.wearlab.de/~alb/darcsweb/ * I = sqrt(-1) -- should be symbolic!! * (Z/nZ)[x,y,z,...] can be done using M2 with the right "conversion". * Bad error message: sage: k=-75512937817147150 sage: E = EC([0,-k]) sage: E.analytic_rank(algorithm='rubinstein') ------------------------------------------------------------ Traceback (most recent call last): File "", line 1, in ? File "/home/was/s/local/lib/python2.4/site-packages/sage/schemes/elliptic_curves/ell_rational_field.py", line 569, in analytic_rank return lcalc.analytic_rank(L=self) File "/home/was/s/local/lib/python2.4/site-packages/sage/interfaces/lcalc.py", line 299, in analytic_rank return Z(s[i+6:]) File "integer.pyx", line 176, in integer.Integer.__init__ TypeError: unable to convert x (= 3.28447e+34 and is too large) to an integer * vmware machine -- should not beep! * vmware machine -- readline not compiled in for GP (but it should be!) * > That's my point: I did NOT pass the -long option. I just ran: > $ sage -t sage > which I understand should skip the long tests, but this particular > test wasn't skipped. OK, that's a *bug*. * gp(E).elllseries way faster than pari(E).elllseries ???? * make darcs repo for examples directory. * sympow -- cite paper mark wrote: Special cases: When a curve has CM, Hecke power can be used instead sympow('-sp 7p12d1 -hecke -curve "[0,0,1,-16758,835805]"') add this somehow. * conductor of symmetric power reps without computing special value: sympow -local parse the output * sympow: -rootno # compute the root number of the #th symmetric power * statifier -- make a binary link in dynamic libraries... * preparser should (?) work for multiple input lines * I think I only implemented the # tags for doctests for testing of .py and .tex files; I didn't for .sage files. * Joe Weening: The spkg-install script for the sage_scripts package creates $HOME/.ipython and puts an ipythonrc file there. Therefore building SAGE changes the filesystem outside of the SAGE source tree. Perhaps this should instead be done when a user first runs SAGE. ignored * sage: attach "cmupto.sage" File 'cmupto.sage' does not exist. (!! should give a WRITE ERROR ) (I can't raise an exception inside ipython preparse loop) * GSL: The GNU Scientific Library (GSL) is a numerical library written in C which provides a wide range of mathematical routines, like Monte Carlo integration. * idea: call gap binary directly instead of running the gap script (which is the only thing in gap that by default is not relocatable). * view(function) -- docs on that function * ZODB compressed storage -- Some improvements and bugfixes from From: Sascha Ottolski (Gallileus GmbH) Date: 2005-09-20 2:31 am He also says that zlib is twice as fast as bz2 ! * pyrex functions: pyrex2c should embed info in the docstring about source code location *and* the input arguments. This will then be parsed by SAGE when display documentation! * weirdness with tabs in constants.py documentation (html) * singular lib files should be in own subdirectory * polynomials print relative to term order and with degrees right! (since so many examples will have to be changed once this is implemented) * faster less random numbers: use the mersenne twister * fix pari c-library interface so out of memory on stack error does *not* occur unless really out of memory, and then it fails gracefully. * write version of cremona database that uses bzip2'd versions of his files directly with *no* change at all. ???? * move ec out of the sage core and make it a build .so library or .a file that I link against. (or just wait to remove ec!) * check for gcc v >= 3.x (????) -- check compiler version using sh * Need instructions for how to install your favoriate Python packages into the SAGE environment, with a list of good choices... * SAGE should check that gcc is version >= 3.0 * bug report command: - sends the input history and takes string input as argument. - how to send result?? * make slave processes of sage have the name "sage-name", e.g., sage-gp sage-singular sage-gap etc. * Need to make Python docs included with sage so help works right. ??? * some use of "assert" in SAGE source code should be replaced by raise. Use "hunt assert" to find the 83 current instances, most of which should be fixed. * BAD: sage: quit = 5 sage: quit Exiting SAGE. (Seems to be caused by autocall! But autocall is so useful...) * defaults: "sane" command from sage.all import * * Here's a clip of a bug in some code using modules -- O is a quaternion order, and M is the underlying module, an attribute. sage: M = O.module() sage: x = M.0 sage: x.parent() is M _18 = False sage: x.parent() _19 = Ambient free module of rank 4 over the principal ideal domain Integer Ring sage: M _20 = Free module of degree 4 and rank 4 over Integer Ring Echelon basis matrix: [0 0 0 1] [0 0 1 0] [0 1 0 0] [1 0 0 0] sage: type(M) _21 = sage: type(x.parent()) _22 = sage: M(M.0).parent() is M _23 = True So it looks like .gen is returning something in the wrong parent. * fix HNF for integer matrices somehow! * HNF for any Euclidean domain ---------------------------------------------- * SAGE: database of papers (in pdf?) relevant to SAGE algorithms included with SAGE. * add poly factor over Q_p * sage: F = GF(3) sage: a = F.gen() sage: L=[a,a^2,a,0*a,a^2,a,a^2,a] sage: berlekamp_massey(L) ------------------------------------------------------------ Traceback (most recent call last): File "", line 1, in ? NameError: name 'berlekamp_massey' is not defined --> FIXED, but now quo_rem not defined even for poly rings over a field! * make sure that FreeModule superclasses VectorSpace * it might make sense to use in-memory compression for various objects (e.g., hecke operators) that come up when running SAGE if memory constraints are a problem. Make an easy way to do this for user. * l-series for bound >> 0 (stupid that it doesn't compute big a_p!!) * make SAGE quickly compute L-series of any CM elliptic curve (twist and use explicit formulas). * fact that one can customize int and float literals in interpreter by redefining ZZ or RR (even the precision is customizable) * copy documentation for ntl, pari, pyrex etc into one directory during build * make berlekamp really fast ?? or only use it over finite fields? * watkins_data (/ec) crashes on 64-bit linux machines. * do one start of SAGE at end of build process so that one doesn't get that annoying ipython thing if its a new install * build process: just print what is being built each time, but don't show all the output? * in linear algebra better treatment of 32-bit vs 64-bit int's. * control print mode of things, e.g., elliptic curves. * make all build programs use a local bin directory, so one can control which compiler is used. Set the path to that directory and put symlinks there. Find with ./configure * Put a ./configure in top level of SAGE (??) * acknowledge McGuinness for code in mwrank that is in SAGE. * make sage website have the latest documentation and the last final version of documentation. * change poly div to be the same as for other types * run "make bench" for pari and "make check" for GMP and summarize negative results after build completes * fix that there is no sage-doc included (the current build system does a recursive thing that makes MASSIVE tarballs!!!) * installing pari with no doc: cd config/objdir then do make install-lib-dyn install-include install-bin install-man install-misc install-cfg install-data * R = PariRing(); x = R('x'); y=R('y'); z=R('z'); a = MatrixSpace(R,3)([1,x,x^2, 1,y,y^2, 1,z,z^2]); determinant that get out is wrong for some reason * define pari_ring arithmetic on both side * write script that checks for having defined everything you define when you define an arithmetic type * have a SAGEPATH that sets PYTHONPATH during sage startup * analog of startup file. * ellinit(curve, 1) -- much faster for ellglobalred. * fedora core 4 bad compiler options for CVS PARI; seg faults all over the place -fno-gcse-after-reload (see bug site for PARI) * get somebody to nominate me for a Packard. * qfrep in pari gives theta series, but see manual -- may fail. * too complicated!; sage: float(n)^(float(2/11.0)) _5 = 47.332758484253731 * put michael rubinstein's incomplete gamma C++ code * something in devel guide / tutorial about indenting one too many and making a local function * modular degree -- precision increase, etc. * factor for more general polynomials * make install: - local// - spurious error message about remove ? - make install should check if bdist result has been manually removed, and if so put it back. - chmod a+r on the sage /usr/local install. * add back make webupdate * make checking that things compile far more robust * make version that compiles just SAGE ... * Windows build ! Problems -- no ZODB install, since no socket module (possible solution -- no databases for windows?) make sure all code can work ok without databases; e.g., gives reasonable alternative, e.g., finite fields. just make databases act empty. * hanke doesn't build on 64-bit machines * make verbatim blue * cremona.py: regulator and other "db_extra" should be stuck in curve when it is taken from the database! * Make PARI gen class heirarchy and define only elliptic curves functions for a derived class that is implemented in another file. This will help clarify things a lot, make the types more rigorous, faster, and will make compilation a lot faster. ?? HOWEVER, think carefully before actually doing this. * output only primitive short vectors from LLL (stoll asks about magma) * make distribution check that all permissions are right somehow? tool to decompress archive, chmod a+r recursive, then rencode. * mwrank bug -- solution requires using PARI c-lib factoring: sage: e=EC([0,3920909284039840832498234809328409324]) sage: f=e.mwrank_curve() sage: f.gens() ***No prime factor found for composite 435849462634654542384364644876718932878817830186241946201 using trial division 435849462634654542384364644876718932878817830186241946201fails primality test ***Fatal situation, aborting! ACTUALLY, lots of problems any time coefficients at all large. ! Other problems too... * sparse echelon form: minimize the number (r-2)*(c-2)-2 Markowitz count; Pomerance and Smith: Reduction of huge, sparse matrices over finite fields via created catastrophes, Exp Math 1 (1992), no. 2, 89-94. * mwrank: * cremona has written tons of little scripts. * elliptic curve discrete log -- no user access; burried in point counting. * no structure over finite fields. * torsion over number field (ell_divpol.gp) * ell_zp.gp -- elliptic curves over Z/pZ * * point elliptic_curve_from_ainvs(N, ainvs) * "THERE IS NO WAY OF GIVING THAT CURVE A POINT!" * E.gens -- use database when possible! * proposal for new labeling. lower case position; a, b, ., z, aa, ab, ac, ... * ONLY thing to hash is special symbols!! (also put this in the book) (and put in book to use dual operators trick) manin symbols list time improvement -- do not store the symbols (1,c) or (c,1). Then creation of the p1list will be vastly faster. - Also see symb.cc. in the g0 space. - N 20000 -- 0.054 50000 -- 0.156 100000 -- 0.359 200000 -- 0.823 300000 -- * constructor for elliptic curves using c4, c6. * E.certain() -- does not determine saturation; it only says whether full rank or not. !!! (I should check bsdalg again?) * MordellWeil_mwrank.saturation 1 1 1 [0,2429469980725060,0,275130703388172136833647756388,0] 14 [172656371022254:11183605599461162465976:1] [59018983696173167486925:9046770248558568185070809755805:2803221] [-127897562256303:-1568465432141985518043:1] [179104002703038:11530632350958995292984:1] [20351620436417161937099238:15630342741658265676253387896555759:34645976] [6310504541502:1353961721252033023032:1] [-61804347285637731061518:-1206451034261670590274867000456:32461759] [3183756031646993484900:-1445688913020859355673024573444:15625] [109129972974418179597312:-23118208949065563006261517438272:2571353] [7266977526271761:-716978870073714829212603:1] [140613088567692:33055815750694859233124:27] [679895213412287772:-58522059114298646792700636:12167] [11456459729211596549772:983394088087157723809198920329:203297472] [122207436525982205089872:8219252385969460300109469047112:62570773] 0 0 Gens are *not* 3-saturated. Have to set appropriate precision. * ffmod -- construct function on curve over finite field with divisor m*P - m*O * independent implementation of Tate's algorithm * root number is ported from pari * divpoly * point counting and structure of curves mod p. * cperiods.h -- independent implementation of AGM periods * heights -- better in PARI; * sieve_search.h -- searches for points up to some on a quadric or ??? * NO L-series, etc., ... -- * real roots of a polynomial (used in CPS bound) -- not in NTL; and only degree <= 4. * legendre.h -- diagonal conics a*x^2 + b*y^2 = c*z^2: This is related to the paper Cremona, Rusin, "Efficient solution to conics..." or something like that. Only thing wrong in algorithm in paper is what to do when conic not diagonal. Test program is "tleg". sage: next_prime(10^20) 100000000000000000039 sage: next_prime(next_prime(10^20)) 100000000000000000129 third prime varying and with a negative so real solution. * mlocsol -- local soluability of y^2 = quartic: Original BSD method for small primes For large primes uses a Siksek method that involves factoring the poly mod p, which is in Merriman-Siksek-Smart, and in Siksek's thesis. DONE DONE DONE DONE DONE DONE DONE DONE DONE DONE done * code from Joyner: permutation action on polynomials done * put .ipythonrc in home directory if not already there as part of sage install, since startup message is really weird. done * NTL --> make into a single module; use to fix osx ntl problem (not the problem?) done * PARI : no readline on OSX and Windows: solution -- my hack to get PARI to work with osx10.3 broke readline support, maybe. done * objects from old/other singular, etc. sessions shouldn't be valid! done * get PARI standalone to build with READLINE done * weirdness with NTL again; maybe now totally broken (!) done * Online interface to: I'd be very interested in an analogous interface to http://www.win.tue.nl/~aeb/voorlincod.html Can your code be adapted to do that? If so, can you give me any pointers? done * Singular --> doesn't compile for Windows ?? DONE * EOF in slave: e.g., on OSX crashing singular causes EOF, which then puts SAGE in an infinite loop --- should gracefully restart Singular. done * bug in permutation group: sage: S = SymmetricGroup(3) sage: S.ngens() _6 = 0 sage: S.gens() _7 = ((1,2,3), (1,2)) done * Singular "genus" note: LIB "normal.lib"; ring r=0,(x,y),dp; ideal i=y^9 - x^2*(x - 1)^9; genus(i); ==> 0 On my 32-bit laptop it runs fine with no problems, both from within SAGE or from the Singular console. When I run exactly the same thing on 64-bit Linux, it does not work. More precisely, from the singular console it works but it PAUSES during the calculation and gives information about different singularities types -- I have to interactively press return to get through all of these. Yuck! I'll have to figure out how to turn off / program around that Singular "goes interactive" on some random commands on random platforms. Weird. DONE * the mwrank extension .so's seem WAY too big ----------------- done * build db-gap every time for no reason done? * build mysteriously fails looking for bin/build? onde * source code is sorted all wrong!! done * sage-textest --> sage-testtex; set path correctly. done * sage: R = PolynomialRing(RationalField()) sage: gen(R) /home/was/local/bin/sage: line 17: 30788 Segmentation fault $INTERPRETER -nobanner -rcfile=$SAGE_HOME/conf/ipythonrc -c "import sage.misc.interpreter; from sage.all import *; import os; os.chdir('$CUR')" was@form:~/sage/src/sage/rings$ sage-dev DONE * NTL precision is settable: Look in the mwrank main(); check out the set_precision command in mwrank main(). DONE * command called fmt, cut DONE * make dims available by default. DONE * move the C++ code package into install directory. DONE * no pdb by default in SAGE !!! DONE * manin constant known to be 1 ?? Or very very very likely to be 1 given all computations, but not rigorously proven. This might be relevant to my bsdalg paper? Cavalier approach to precision... DONE * add ec into SAGE: - interface to all the ec functionality, which is much more - analytic rank. DONE * allgens -- fill in for curves of rank 0. DONE * Does your curve know about up to 70000. Make conductor range 1, 70000 instead of 11, 69996. Make it give error outside of the range. DONE * ?comd? gives the code -- put in tutorial DONE * allgens 60000-70000. DONE * bugs in multipolynomial code -- see Joyner email DONE ---> * integer -> str bug sage: a=2^1000000000 sage: s=str(a) DONE * Make it so pyrexc is used during the install of SAGE, not just before distribution. Then any user can edit pyrex code and compile the result into their install. DONE * embarrasing bug!! sage: e=EC('37a') No handlers could be found for logger "ZODB.FileStorage" Answer: sage: import logging sage: s=logging.getLogger("ZODB.FileStorage") sage: s.setLevel(100000) DONE * make version be read from environment variable; maybe no more version numbers, but don't have to make that decision. DONE * leading >>> allowed DONE * Get SAGE to compile with my spanking new GCC 4.0.1!: Problems: * pyrexc -- installed patch version; integrated with distro. * mwrank -- added some class forward declarations * gmpy is broken: fix: change three externs to statics around line 102 of gmpy.h done * name of running process should be SAGE, not ipython. done * Add Mark Watkin's EC to SAGE. done * doctest the tutorial and the reference manual again -- except ignore certain things that involve IPython. DONE * implement sigint handling for my C++ extensions, as illustrated in ntl wrapper. DONE * python says no interrupt but WHAT really happens in Python C?! try infinite loop and using PyErr_CheckSignals this is very illustrate -- speed reduction by factor of 10, but can interrupt, when otherwise I couldn't. what does PARI do? -- not interesting --> Now try investing installing my own handler for sigint, but *not* via the Python signal module. Instead I'll do it directly in C. It seems that one using C library calls, Python one doesn't handle the signal until it's too late to be useful. DONE * make pari allocate big chunk of memory read the pari source code and figure out how to reset the sigint interrupt prob around line 5536 (not a good idea) DONE * Make a "make install" script that does "make bdist", then copies it to /usr/local/, then adjusts the startup script to reflect it being in that location, and puts a copy in /usr/local/bin/! DONE * SERIOUS BUG: was@form:~/.ipython$ sage SAGE Version 0.4.alpha, Export Date: 2005-07-09-0115 Copyright (C) 2005 William Stein Distributed under the terms of the GNU General Public License (GPL) sage: %magic *** broken pipe. *** segmentation fault: bug in PARI or calling program. Fix -- add emtpy signal handler to py_pari.pyx. DONE * maybe use /bin/tar instead of "tar" if it exists. On SUSE the default tar is broken!! DONE * log of build: include total time it took to build machine information DONE * I wonder if I should make SAGE try to finish compiling even if one component doesn't build correctly. It could then just give a list of failed components at the end, with instructions what to do. DONE * make it so instead of checking for files and creating if not there, it checks for directory, and if there but not directory it removes and puts a directory there. On suse, the bzip2 install fails since it finds a local/bin file! DONE * hack PARI distro so tex documentation is not built by default; do *not* want to require tex on part of our users! DONE * integrate the C++ build packages into the other stuff. separating them is just really confusing, and it confuses the top level make. This will require moving the devel code, and changing a bunch of the install_* scripts to assume they're in the correct directory. done * doctest: needs to test *everything*... For this, could CD to the site-packages directory and run the usual doctest. DONE * fix sigseg not being detected.: get rid of python print statement -- just do the exit(0) which should be a C-library call. Maybe use printf to stderr instead. Make sure my reseting of sigsegv is to blame. I just set back to python default, which is to terminate with no error message. DONE * track down mwrank two_descent del bug: import mwrank.interface as m; e=m.EllipticCurve_mwrank(range(5)); e.selmer_rank_bound(); e=m.EllipticCurve_mwrank(range(5)); --> could be a bug in SWIG/GCC 4 interaction ?? Trying to build on Knoppix -- GCC 3.3... SOLUTION: quit using SWIG and using Pyrex exclusively! DONE * ADD forall and there exists ? DONE * redo mwrank using Pyrex DONE * redo hanke using pyrex DONE * hi, need some more help. is this supposed to happen? works ok over rationals. thanks. -kyle sage: R=PolynomialRing(C) sage: x=R.0 sage: 1+x 1.0*x + 1.0 sage: 1*x sage: x*1 ------------ DONE * This is because the integer 2 is not a perfect square. "sqrt(4)" would work fine, and also sqrt(2.0) or sqrt(RR(2)) work. That said, I'll change the integer and rational class to return the a floating point square root in all cases. To get the integer sqrt, the new command will be "isqrt". DONE * make a "make bench" target that runs a bunch of SAGE benchmarks and records the results in a table. or better have a "benchmark" command as part of sage. DONE * why is SAGE suddenly too big (25MB)? DONE * freebsd -- Cremona Makefile doesn't work there. DONE * number field 1 bug DONE * flag -- do all implementations and compare them DONE * put python editing mode on SAGE website DONE * my number of isogeny classes doesn't match yours DONE * add getconductor from curve.h of mwrank DONE * quadratic twist calls minimal_model in drivered done * online interactive calculator (need chroot!) done sage: e.conductor() _22 = 2149761228 sage: e.conductor("mwrank") _23 = 2149761228L done * load crashes when file not found done * polyroot finding in sieves symbol clash -- tell cremona done * patch pyrex to get rid of the warnings; maybe release on my website done * iload -- shouldn't preparse when loading .py files DONE * PARI: need the galois group thing sage: f = x^8 - 2 sage: f.polgalois() *** galois files not available [missing /home/was/local/share/pari/galdata/COS8_50_47]. ------------------------------------------------------------ Traceback (most recent call last): File "", line 1, in ? File "_py_pari.pyx", line 5220, in _py_pari.gen.polgalois File "_py_pari.pyx", line 5783, in _py_pari._error RuntimeError: PARI error 8: error in polgalois DONE * pickling of multivariate polynomials done * make install -- CremonaDatabase gives the large database and permission denied errors on Cohen's laptop. finite fields might not work right either? (conway database) done * ec crashes on 64-bit machine done * make factorization of polys like in MAGMA; over integers, make sure leading coefficient is positive. done * sage: m = factorial(100)^939394 /home/was/sage-dist/sage-bdist/local/bin/sage-sage: line 105: 16678 Segmentation fault sage-ipython $LOGOPT -rcfile="$IPYTHONRC" -c "$SAGE_STARTUP_COMMAND;" ^----- THIS WAS fixed by upgrading to GMP V4.2.0 * sage: E = EC('37b'); E.point_search(10) sage: ctrl-c [boom] but if I do sage: E = EC('37b'); E.point_search(10) sage: get_sigs() sage: ctrl-c [no problem!] so something in E.heegner_index(-7) is not resetting the sig handler. done * implemenent wiedemann (in my book, right?) done * it would be much better if segfaults didn't just exit, but exited with a nice error message done * only include functions with documentation?? done * docstrings for extension classes special methods not right. change update.py to directly extract from code, and only include those with nontrivial docs. done * implement sqrt! done * developer's guide done * incomplete gamma via PARI. done * trying to get windows version of SAGE: - building -- OK, at least on my local install; not on Tish's. (problem with pari.decl on hers, maybe default DOS text mode?) - done * version of sage "make test" that doesn't test databases and code that requires gap, etc., to be installed. done/don't * write my own mpf interface!!! done * interface to really good hnf bad idea * new PARI interface: - very modular object-oriented implementation - a single python file that implements a functional interface that is very very similar to GP. done * running sage with a file code.py in the current directory crashes sage! done * sage: a=MatrixSpace(Q,12)([4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, -1/2, -1/2, 0, 1/2, -1, 0, 1/2, 5/2, 1, 1, 5/2, 2, 1/2, 1/2, 0, -1/2, 1, 0, 1/2, -3/2, 3, 3, 3/2, 2, 1, 1, 0, -1, 1, -1, 2, 1, 1, 1, 1, 2, -1/2, -1/2, 0, -3/2, 0, 1, -3/2, -3/2, 0, -1, 1/2, 0, 0, 1, 1, 0, 1, -2, 3, 3, 3, 1, 1, 3, -1/2, -3/2, -1, -3/2, -2, 2, -7/2, -5/2, -3, 0, -3/2, -4]) sage: a.charpoly()(a) not zero!! DONE * BUG: sage: E = EC('11A').quadratic_twist(-47) sage: E.regulator() [hit ctrl-C] /home/was/local/bin/sage: line 16: 9170 Segmentation fault $INTERPRETER -nobanner -rcfile=$SAGE_HOME/conf/ipythonrc -c "import sage.misc.interpreter; from sage.all import *" was@form:~/papers/padic_height/e2heights$ done * need fast C routines to move between integer and number reps! [[thanks to Gonzalo Tornario]] done * [0,0,0, -10873,0] [[no longer true...] There seems to be a difference in the results of mwrank and sage:E.gens(). For the elliptic curve [0,0,0, -10873,0] the former computes a generator, whereas the latter returns a RuntimeError saying: Unable to compute the rank ... This could be because Sha[2] is nontrivial even though E.rank() returns 1. Though SAGE calls mwrank, it uses different parameters than the defaults for a particular version of mwrank. In this particular case it's not using as good of parameters (or Cremona changed mwrank from the version you were using to the one in SAGE, which is possible!). I'll look into this further and see if I can make adjusting the relevant parameters automatic, or at least an option from SAGE. * BUG: sage: m=MS(Gamma1(8),11) sage: m.decomposition() /home/was/sage/local/lib/python2.4/site-packages/sage/modular/hecke.py in decomposition(self, anemic, compute_dual, bound) 432 Xdual = t.transpose().decomposition_of_subspace(Udual[i], is_diagonalizable=(self.level()%p != 0)) 433 if len(X) != len(Xdual): --> 434 raise RuntimeError, "Unable to compute compatible dual decomposition." 435 for i in range(len(X)): 436 W, is_irred = X[i] RuntimeError: Unable to compute compatible dual decomposition. done * Nick Ramsey bug in mwrank from SAGE (reported online) * all.py in each package? * problem with EC on OSX? (comes up in "make test") /Users/was/sage/sage-v0.7.0-2005-09-21/source/../local/../local/bin/python __test_ec.py Traceback (most recent call last): File "__test_ec.py", line 1, in ? from sage.libs._ec.ec import * ImportError: Failure linking new module: /Users/was/sage/sage-v0.7.0-2005-09-21/local/lib/python2.4/site-packages/sage/libs/_ec/ec.so: Symbol not found: ___gmpn_tdiv_qr Referenced from: /Users/was/sage/sage-v0.7.0-2005-09-21/local/lib/python2.4/site-packages/sage/libs/_ec/ec.so Expected in: dynamic lookup -=------------------------- * ARGH!! abort()'s in mwrank crash SAGE why???? it's a problem in two_descent, at least. Why? [[fixed]] ------------------------------ DONE * Bug in modular symbols found by automatic testing: after doing tons of calculations using automated testing the following fails. It doesn't fail before doing them though. it must have to do with the cache. sage: m=MS(DirichletGroup(18)([1,-1]),3,sign=-1) sage: m _13 = Full Modular Symbols space of level 18, weight 3, character [1,-1], sign -1, and dimension 6 over Rational Field sage: m.modular_symbols_of_level(6) _14 = Full Modular Symbols space of level 6, weight 3, character [1,-1], sign -1, and dimension 2 over Cyclotomic Field of order 2 and degree 1 done * inconsistent basis computation for modsym -- tuple or list DONE * sqrt(int) done sage: E.regulator(use_database=True) verbose 1 (ell_rational_field.py:database_curve) Looking up Elliptic Curve defined by y^2 = x^3 - x^2 + 12*x + 72 over Rational Field in the database. verbose 1 (ell_rational_field.py:gens) Trying to compute rank. verbose 1 (ell_rational_field.py:rank) rank 1 because L'(E,1)=1.3840260496899999 verbose 1 (ell_rational_field.py:gens) Got r = 1. verbose 1 (ell_rational_field.py:gens) Rank = 1, so using direct search. verbose 1 (ell_rational_field.py:gens) Trying direct search up to height 6 verbose 1 (ell_rational_field.py:gens) Direct search succeeded. verbose 1 (ell_rational_field.py:gens) Computed saturation. _35 = 0.24236786365499999 sage: E.regulator?? done * add cm elliptic curves table to SAGE. Maybe a database with j's over MANY fields!? good student project!; david kohel has such tables probably done * iload? -- HARD DONE * Bug in L-ratio!! sage: E.ainvs() _45 = [1, 0, 0, 1/24624, 1/886464] sage: E.L_ratio() _46 = 7/200 sage: E.minimal_model().L_ratio() _47 = 2 done * better printing for 0 element of group. done * make latex a dynamic table that people can add to. done * subscripts correct done * ZEN Plan: xx (1) install scripts (2) finite fields (3) polynomial rings (4) document (5) test suite (6) release done * CYGWIN_NT-5.1 everywhere -- looks fragile!! done * matrix immutability done * sage-dev: build sage done * Should give a type error below... sage: E = EllipticCurve(Integers(500), [0,1]) sage: E _11 = Elliptic Curve defined by y^2 = x^3 +1 over Ring of integers modulo 500 sage: P = E([-1,0]) sage: P _13 = (499, 0) sage: 2+P *** Mod: incorrect type in Rg_to_Fl. ------------------------------------------------------------ done * make clean should not affect sage-src done * write developer's guide done * write doctest system for source code that is more flexible. done * singular: current main problem: -- need to be able to specify location of GMP or more generally an alternative include path Ideas: Make a symlink done * Numeric done * matplotlib (?) FOR FUTURE: matplotlib and numarray (!) DONE Matplotlib: * Numarray seems to be the easiest to install and best of the THREE numerical array packages currently available * need libpng on OSX -- get the "config" version -- had to add this to the setup.py to get it ot compile include_dirs=['/Users/was/sage/sage-0.8.0-2005-10-21/local/include/'] -- had to change matplotlibrc to list numarray instead of Numeric -- this is what gets used, versus what gets built by default. * make result of "make bdist" a devel environment !! * upgrade system * Command called "upgrade": FOR SOURCE VERSION -- checks modular for new version of SAGE. -- if there downloads the diffs -- does a make FOR BINARY VERSION: -- checks mdoular for new binary version of SAGE for that architecture -- if there is one, does an rsync (?) to change the SAGE_HOME to match the new binary version. * plugin install * Make a command "database_install": -- takes name of db as argument -- if db sitting in SAGE_HOME, installs it -- if not, downloads it with wget from modular and installs it. * naming -- go through entire codebase and derive all sage objects from SageObject, and change __repr__ to _repr_. * consistency: change all instances of _mul, _add, etc. to _mul_, _add_, etc. * solution to "too many variable names" problem in MAGMA, etc., use a list structure!!!! (Mark Watkins's idea) done * sage: E.heegner_index(-31) ------------------------------------------------------------ Traceback (most recent call last): File "", line 1, in ? File "/home/was/sage/local/lib/python2.4/site-packages/sage/schemes/hypersurfaces/plane_curves/elliptic/ell_rational_field.py", line 2153, in heegner_index raise RuntimeError, "The rank must be 0." RuntimeError: The rank must be 0. * NTL finite fields don't work right on OS X!! sage: PolynomialRing(GF(3)) ZZ_p constructor called while modulus undefined ------------------------------------------------------------ Traceback (most recent call last): ... sage: ntl.set_modulus(ntl.ZZ(7)) sage: PolynomialRing(GF(3)) ZZ_p constructor called while modulus undefined ------------------------------------------------------------ Traceback (most recent call last): done * upgrade system: * rsync the package directory (without delete) * rsync the Makefile * execute a make done * modify spkg so it records a log of what happens to a file using tee. done * make sdist for SAGE done * make sure *I* can do everything I need for SAGE devel in the standard SAGE environment. done * documentation -- need to make update.py work more generally done * get build to complete on "packages" done * create the following scripts for the new SAGE distro: sage -- run SAGE as usual sage-test -- test documentation or files (unified) (should use SAGE's Python, not system Python) sage-build -- build SAGE then startup as normal sage-dev -- build then start with auto debugging on. Put these in a SAGE package just like everything else. done * put sage-sdist into bin package *ipython -- path dependent -- fix!! * sage-bdist: "sage -b" fails still done * Automatic updates done * in prereq check for flex and bison done * in MAPLE: interface(prompt="hello> ") done * NTL on OSX -- copy in the special libntl.dylib makefile info from sage-bdist on zippo. done * when installing sage code, move all sage and docs to an "old" subdirectory. done * OSX -- PARI readline doesn't work... done ---> possible solution? -- trap sigsegv for GMP only? done >>> Z(2003)**Z(1000000000) Program received signal SIGSEGV, Segmentation fault. [Switching to Thread -1210664736 (LWP 25697)] __gmpn_copyi () at tmp-copyi.s:98 98 tmp-copyi.s: No such file or directory. in tmp-copyi.s Current language: auto; currently asm (gdb) bt #0 __gmpn_copyi () at tmp-copyi.s:98 #1 0xb7a6fcf3 in __gmpn_mul_fft_full (op=0xa15cf008, n=0xa2008008, nl=1338861, m=0xa2008008, ml=1338861) ... ------- (fixed by upgrading GMP!) done *OSX -- * binary doesn't work -- wants an NTL or gmp library or something -- way to test: build on zippo and move to gateway bad idea * SAGE -- should only build changed things, not everything. How to do this though? could do this is rsync present and not otherwise. Solution -- use darcs! done * alarm completely broken! done * create a "sage_eval" command that preparses then calls eval. done * gap package install should run sage once and reset the workspace done * bdist should be upgradeable -- just need to put echo "">xx versions of all the files in the spkg/standard directory. done * comparisons for all fields and rings that make sense relative to natural inclusions and quotients. done * First use of attach or load yields a syntax error; afterwards it works fine. E.g., was@form:~/papers/ecdb_ranks$ sage ------------------------------------------------------------------- | SAGE Version 0.9.14a, Build Date: 2005-12-03-0328 | | Distributed under the terms of the GNU General Public License | | For help type ?, ??, %magic, or help | ------------------------------------------------------------------- sage: attach "ecdb.sage" ------------------------------------------------------------ File ".attach.sage.py", line 761 attach "ecdb.sage" ^ SyntaxError: invalid syntax WARNING: Failure executing file: <.attach.sage.py> * -mimpure-text (a solaris thing) ?? * osx -- maxima doesn't work yet. ?? done * > Individual morphisms types should go to the directories where > the categories of objects are defined: > > homspaces.py -> ../modules/homomorphisms.py (or homspace.py) > matrix_morphisms.py -> ../modules/matrix_morphism.py done * gnuplot hardcodes build location of gnuplot_x11 into itself!! (unfixable; don't use gnuplot) done * zlib -- if not included with SAGE might not be built into Python; result is that SAGE won't work!! SO -- either include zlib or don't use it. For now not use it. (zlib now included) done * maxima should save files to current directory. done * > The inheritance from module_element worries me: > class Morphism(sage.modules.module_element.ModuleElement): Yep, that has to be fixed and is wrong, since hom spaces need not be modules. done * > In line with class Category being defined in category.py, > the following would be consistent: > > categories.py -> category.py > functors.py -> functor.py > morphisms.py -> morphism.py done * rename ext stuff with no stupid _'s Those were only because i was using symlinks before. done-ish * on cygwin should start x-windows (?) done * way to fix problem with line numbers in output of doctest -- just put the line numbers in comments at end of every input line. done * next thing to do: done * multivariate polynomial ring maps and done * multi quotient poly ring maps done * number field maps done * sparse matrix arithmetic is *slow* -- why? done * make gp, etc shells by using the preparser, changing prompt; get the output history by saving the "%n"'s. See code in preparser.py. (!!!!) But leave in MAGIC commands and have one to "get out". done * make a latex_session() function that outputs a latex done * making pdf file broken now !! not possible * add "lksdlfjsdjfs"^ZZ(5) (and also **). done * maple.py: change to use from IPython.genutils import page and use the page command on a string. done * delete mpfr directory from gmp-*.spkg. done * rm tmp directory in sage startup script. (made as an option "sage -cleantmp") DONE > 19) truncation of power series: > sage: x=PowerSeriesRing(ZZ).gen() > sage: x^4 + O(x^3) > x^4 + O(x^3) > > indeed: > > sage: f=x^4 + O(x^5) > sage: g=x^2 + O(x^3) > sage: f > x^4 + O(x^5) > sage: g > x^2 + O(x^3) > sage: f+g > x^2 + x^4 + O(x^3) > done *On Friday 17 February 2006 01:57, you wrote: > Yes, attach is great. However, I noticed that it doesn't automatically > reload if you > > attach "/myfile.sage" > done * finish matrix.py!!! (spiess stuff) done * sage: I = IntervalRing() sage: a=I(1.6,2.7) sage: ZZ(a) * boom * * Joe Weening > It would be nice if all .spkg files unpacked into directories where > everything is world-readable. Currently the following do not: > done (probably) > doc-1.0.4 > examples-1.0.4 done > mwrank-2006-02-15 done > ntl-5.4.1 done > pari-2.2.11.4 > sage-1.0.4 # python makes this -- and I guess it chooses not world-readable; this is not easy to change > sage_scripts-1.0.4 done > zlib-1.2.3 * > gap: ## Typed "^D" > --> Exiting back to SAGE <-- > sage: G.interact() > --> Switching to Gap <-- > gap: G3; > ------------------------------------------------------------ > Traceback (most recent call last): OK, you're right, this doesn't work right. It works fine if you use "%gap" only, which goes in and out of the default gap session. It's a bug that it doesn't work for the non-default sessions, which I'll fix right now (for sage 1.0.5). FIXED (2006-03-05) * Serious bug in modular symbols!! sage: M = ModularSymbols(37) sage: D = M.decomposition() sage: D[1].q_eigenform(20) q + q^3 - 2*q^4 - q^7 - 2*q^9 + 3*q^11 - 2*q^12 - 4*q^13 + 4*q^16 + 6*q^17 + 2*q^19 + O(q^20) sage: D[2].q_eigenform(20) q + q^3 - 2*q^4 - q^7 - 2*q^9 + 3*q^11 - 2*q^12 - 4*q^13 + 4*q^16 + 6*q^17 + 2*q^19 + O(q^20) (problem was missing __cmp__ function not thwarted by fact that D[1] and D[2] printed the same so their hashe functions also the same.) -------- done * gen.pyx -- should derive from SageObject. done * gap online calculator BROKEN -- it segfaults on running gap in the chroot environment; no clue why?! maybe try moving whole thing to sage.ucsd.edu anyways, which is running a much better os. done * find a way to modify ipython so the "sage: " prompt appears instantly...? done * bet multiply function that uses associativity done * free module dimensions should be SAGE integers. done * immutability -- add for polynomials; cached polys returned should be immutable done * determinant -- matrix; should not cache if not immutable (audit rest of code). done * debug levels for PARI c interface, e.g., make factor very verbose done * change prime_list to use PARI!!! * gap 4.4.7 -- doesn't startup correctly under windows !? done * 2006-05-01: add docs that illustrate EllipticCurve('37a') done (2006-05-22) * NUISANCE: sage: M=MS(389,sign=1) sage: S=M.cuspidal_submodule () sage: for n in range(1,100): print n; a=S.T(n).matrix() ... if I try to ctrl-C out it freezes instead of returning the interpreter. Very annoying!! This probably has to do with matrix multiplication (implemented in Pyrex). done (2006-05-02) * eisenstein_series(4,100)/10 -- looses precision!! done * NumberField(x^2-3).units() bombs on any field, and should be called .unit_group(). done * SEA is in PARI!!! WOW! Where? How? done * when doing doctests (via "sage -t") if sage doesn't load correctly, all doc tests appear to work but DON'T!!! ---------------------- done * 2006-05-10: Under windows -- do not allow the upgrade() command, since in cygwin can't change opened dll's so it breaks (use must exit all SAGE instances...) done * 2006-05-08: using "open" under OSX -- have to unset any library-related environ variables or it crashes; add this to plot. done * 2006-05-08: when building sage's python library move local/lib/python/site-package/sage to the build directory; only restore it if something goes wrong during the build. done *2006-05-13: added sysadmin install_scripts() command (requested by Arthur Gaer) done * 2006-05-08: add test for presence of flex/bison to singular build. done * 2006-05-04: sage: berlekamp_massey([1,2,1,2,1,2]) DivRem: quotient not defined over ZZ e/rings/polynomial_element.py", line 1906, in quo_rem RuntimeError * 2006-05-20: I'm for changing to this: "Multiplicative Abelian Group isomorphic to C2 x C4 x C8 x C13" and "Additive Abelian Group isomorphic to Z/2Z x Z/4Z x Z/8Z x Z/13Z" It's an easy change to _repr_ followed by running "sage -testall" followed by fixing a few dozen docstrings. And no I don't want changing of the docstrins to be automated; avoiding that helps reduce the number of frivolous changes to SAGE. done * I know what the problem is. You probably have a .matplotlib directory from a previous use of matplotlib with Python. That matplotlib setup assumes the existence of the GTK/Matplotlib libraries. However, those aren't built into SAGE by default. So it goes boom. The solution is for me to modify the SAGE-included matplotlib to not use .matplotlib (or whatever). Fernando Perez had the same problem as you, I think. * matplotlibrc -- figure out how to override it to use a version that is in the .sage directory. (From Fernando Perez):> I'm not sure if matplotlib > similarly allows the location of its configuration to be overridden from > ~/.matplotlib/, but I'd be surprised if it weren't. I was being a bit > cautions because I don't know if all your susbsystems allow for this kind of > config redirection: some programs are insanely hard-coded for many of their > defaults. But perhaps you've already checked this, it would certainly be the > ideal solution. Everything in SAGE is GPL-compatible open source, so for the self-contained SAGE I can ship a patched version of any component, so the only problem is figuring out how to modify the program to allow for moving the config file to .sage/config/xx instead of something else. done * tab completion now broken. * 2006-06-13: online sage notebook: http://sage.math.washington.edu:8100/ use of sympow through it is broken with segfault. Why? done (2006-06-19) * todo: implement "sqrt" for p-adic numbers done * Singular -- way to input multiline code with eval and semicolons. done * height of 0 on elliptic curve is broken. done * file upload -- broken done * lisp.run -- maxima's get left running when one quits the notebook sometimes -- this is VERY annoying. I think the fix is to some "kill -9 -$$" the SAGE "kernels"... done * init.sage -- gets loaded every time if it exists done * need to finish implementing precision for root finding over RR, CC done * notebook: init.sage should be run first!! done * generation of the index for the html reference manual is broken. done * The way the signature of a function appears in introspection is confusing. It should be self.lksajfl(...) FIXED in notebook now. done * error reporting in attached files isn't good. done * notebook: maybe completely eliminate moving the screen on evaluation!? done * notebook: history -- should also store output. done * notebook: - ? and ?? eval don't work. done * notebook: when computing cell height count long lines extra since they scroll around. (just added more blank lines) done * notebook: restart/interrupt that restarts -- should change all the colors back to red on border (e.g., by doing a page refresh?) done * factorial(factorial(5000)) --> 1?! done * elliptic curve printing -- need parens: sage: K. = NumberField(x^2+3) sage: E = EllipticCurve(K,[1,(3+a)/2,0,(1+a)/2,0]) sage: E Elliptic Curve defined by y^2 + x*y = x^3 + 1/2*a + 3/2*x^2 + 1/2*a + 1/2*x over Number Field in awith defining polynomial x^2 + 3 done * notebook: - tab completion is broken (it deletes previous stuff) - tab ? needs to be stylized via css. needs a frame; same font, etc. (?) done * notebook: "no completions" should be displayed if there aren't any done * _latex_ method for elements of IntegerModRing(n) done * attach or load file with number in it -- problem! done * clisp -- is not relocatable (even though maxima is). It would be *great* if somebody could make a version of clisp that is relocatable, i.e., such that if you move the SAGE build tree, then local/bin/clisp still works. SOLUTION -- use the "-B" option done * feature request: libpng -- with shouldn't have to use convert (from image magic) to make png from ps. This is an annoying dependency. Maybe use dvipng. done * bug: sage: sage: M=ntl.mat_ZZ(3,3,[1,2,3,4,5,6,7,8,9]) sage: sage: M.LLL() swap case 1: 2 swap case 3: 3 <---- why is this here?! swap case 3: 2 (2, 54) done * sage: latex(GF(9)) \mbox{\rm F}_{3^{2}} <---- should be mathbf!! done * BUG (probably an infinite recursion; reported by Alex Clemesha): sage: f = int(5)*sin sage: f(10.0) /home/was/sage-bdist/local/bin/sage-sage: line 149: 9136 Segmentation fault sage-ipython -c "$SAGE_STARTUP_COMMAND;" $* done * notebook bug: if the entire input cell block is indented, nothing happens! done * darcs in osx (in intel via rosetta) -- broken "too many files", when trying to "darcs pull", since now there are over 600 patches. -- use "darcs get" instead. done * bug in comparison: sage: 2/3 == pari(2/3) _6 = False sage: 1 == pari(1) _7 = True done * > As long as all the subsystems sage uses allow you to do that, you should be > OK. With ipython it's easy, you just start it with the -ipythondir flag set > to ~/.sage/config and it's happy to comply. Cool. It will be very easy for me to do this then for ipythondir, and I'm very much looking forward to it. done * /home/macaulay2/sage/local/lib/python2.4/site-packages/sage/misc/sage_eval.py:15: SyntaxWarning: import * only allowed at module level def sage_eval(_obj_, extra_locals={}): sage: done * continued_fraction(float(1.1)) booms! done * 2006-05-18: sage -server saves the file in SAGE_ROOT. ??? done * 2006-05-12: > On my terminal it gives me a bunch of weird characters that seem to be > color ANSI codes. Also, is there a way to trim the output so you don't > get a ton of "Do you really want to exit" prompts? You can fix both problems by modifying the ipythonrc file in the directory (if it isn't obvious how, let me know). Note that this file might get overwritten when you upgrade. I should really move these customizations to an ipythonrc-sage file that gets put in $HOME/.sage or $HOME/.ipython when one first starts SAGE. It's now on my todo list. done * 2006-05-08: "Welcome to IPython." message should be "Welcome to SAGE!" (now never get.) done * 2006-05-04: sloane.py now broken. (maybe because whole website down / reorganized) done * 2006-05-01: Seg fault if ask to compute pi to 10 million digits. This seems to be a bug in GMP. It occurs on Linux. sage: time s = pi.str(10^7*log(10,2)) Program received signal SIGSEGV, Segmentation fault. done * 2006-04-29: Make "iload" stop-able and restart-able. (this is thing of the past, since notebook much better...) done * 2006-04-29: Currently SAGE only reads the ipythonrc in the . This is because there is special code in there that's very important for getting the prompt right, etc. You could modify that to change the colors. However, it would be better if SAGE were to make an $HOME/.ipython/ipythonrc-sage file and use that on startup. The only reason it doesn't is because I haven't made the small changes to support that, but it's certainly on my todo list. done * idea: make it so latex(..) returns a class that derives from string but somehow prints with single backslashes? done * bug: My name occurs twice in http://modular.math.washington.edu/sage/doc/html/inst ---------------------------------------------------------- done * if darcs is setup "sage -upgrade" should use darcs instead of wiping out the sage package! done * sage-darcs -- don't overwrite ====> PULL!! done * sage: E = EllipticCurve('389a'); L = E.Lseries_dokchitser() sage: p = plot(L,0.5,1.5,plot_points=30) -RealField(max(63,RR.precision()))('1.041247927703274497') E-ZZ(19) SyntaxError: invalid syntax done * Get rid of the "string-rep" line that IPython outputs when say object? since this can take forever!! done * move all the digits in base 2 <--> digits in base 10 stuff to a pyrex function somewhere done * sage: list(gp([1,2,3])) NotImplementedError done * ** majorly annoying BUG ** -- sage: ll = 5 sage: ll directory listing... done * modify ipython so it put .ipython in .sage as .sage/ipython/ done * missing mpz_clear in factorial.spyx use PyMem_free instead of free there and in integer.pyx -- we're not using factorial.spyx except as an example. * fix GMP html error ?? what error?? done * this shouldn't happen: sage: .1 File "", line 1 .ZZ(1) ^ SyntaxError: invalid syntax done * PARI -- location of galois data file hardcoded into PARI?! a nice environment variable is there... ??? * I would be fine would turning all these off, or at least moving them to a config file and commenting them out, but letting people add them back if they want them. To do this, requires changing the __init__ method around line 571 of iplib.py in the IPython distribution. If anybody doesn't like this let me know and I'll leave them in. Otherwise I'll remove them (for SAGE). done * no weird pari messages; e.g., when starting SAGE initially and hit control-c xxx * makeinfo -- needed for SAGE of termcap. (?) xxxx * move gen.pyx code into ext directory. Get rid of the underscores xxx in that directory. Make PARI gen class derive from RingElement. xxx Make PARI instance derive from ring. done * add dimension formulas to SAGE manual done * pari auto-stack double: sage: f=pari('exp(x+O(x^20000))') sage: f 00000000 What happens is that internally the PARI stack is doubled several times, and this causes some serious problem. After the above, so there is enough memory, doing the above again works fine... Doing this works though; of course it is different. sage: f=gp('exp(x+O(x^20000))') Possible SOLUTIONS: (1) be more clever (bad idea, I think... since there's probably a reason gp doesn't do this!) --> (2) raise an exception instead of auto-double stack. <-- done * reuse port --