12923
Comment:
|
13132
|
Deletions are marked like this. | Additions are marked like this. |
Line 7: | Line 7: |
http://sage.math.washington.edu/home/mhansen/pynac-0.1.6-mh.spkg | {{{ sage -f -m http://sage.math.washington.edu/home/mhansen/pynac-0.1.6-mh.spkg }}} Note that we do "-f -m" so that spkg/build/pynac-0.1.6-mh is left around. Now you can do {{{ ./sage -sh cd spkg/build/pynac-0.1.6-mh/src/ginac # change anything make install }}} |
Final Pynac Switchover Push for Sage-4.0
See also http://trac.sagemath.org/sage_trac/ticket/5930
Latest Pynac spkg
sage -f -m http://sage.math.washington.edu/home/mhansen/pynac-0.1.6-mh.spkg
Note that we do "-f -m" so that spkg/build/pynac-0.1.6-mh is left around. Now you can do
./sage -sh cd spkg/build/pynac-0.1.6-mh/src/ginac # change anything make install
Mike's Repo
On sage.math, do
hg pull -u /scratch/mhansen/sage-3.4.2.alpha0-sage.math-only-x86_64-Linux/devel/sage-symbolics#symbolics_switch
where you can figure out the revision number from "hg log". Maybe tip will work.
And don't forget to do this from SAGE_ROOT:
rm devel/sage/build/*/sage/symbolic/constants*; rm devel/sage/build/sage/symbolic/constants.so
Unpickling of old SymbolicExpressions
For backward compatibility, we need to be able to unpickle the old symbolic objects.
sqrt(2)^2 (Done)
sage: sqrt(x)^2 x sage: sqrt(2)^2 sqrt(2)^2 wstein@sage:~$ ginsh ginsh - GiNaC Interactive Shell (ginac V1.4.1) ... > sqrt(2)^2; 2
Fix at http://sage.math.washington.edu/home/robertwb/patches/pynac-sqrt.patch
sqrt(16)
sage: sqrt(SR(16)) sqrt(16) sage: 27^(1/3) 27^(1/3) $ ginsh > sqrt(16); 4 > 27 ^ (1/3); 3
Fix at http://sage.math.washington.edu/home/robertwb/patches/pynac-pow.patch however
sage: sqrt(27) sqrt(27)
refuses to be simplified (despite the code to do so being executed).
Missing parentheses
sage: a = (2/3) ^ (2/3); str(a) '2/3^(2/3)' sage: latex(a) \frac{2}{3}^{\frac{2}{3}} sage: (-x)^(1/4) -x^(1/4)
Missing mathematica conversions (done)
All should be capitalized:
sage: (tan(x) + exp(x) + sin(x))._mathematica_init_() '(exp[x])+(Sin[x])+(tan[x])'
(seems like something we could do generically).
* Fixed in Mike's branch.
pynac gcd broken
sage: var('n,x') (n, x) sage: g= (n+1)/x^n - n/x^n sage: g.collect_common_factors() /home/wstein/build/sage-3.4.2-symbolics/local/bin/sage-sage: line 198: 29952 Segmentation fault sage-ipython "$@" -i
Since the change in the definition of gcd of rational numbers in Sage, the gcd in pynac doesn't terminate in some cases. This can crash Sage as above. A quick fix might be to change sage.symbolic.pynac.py_gcd to handle gcd of rationals as before. AFAIK, collect_common_factors() is the only function we expose to the user that calls gcd() in pynac. -- burcin
The above isn't the solution, unfortunately. Putting print statements in py_gcd shows it is never called with rational input for the above example. In fact it isn't even called by the collect_common_factors line. What happens is that there is an infinite recurssion in normal.cpp involving convering something to a polynomial.
Number Fields
- _pow_ in number_field_element and _rational_ has some hacks since the Pynac library will cause infinite recursions.
Formal Derivatives (done)
- Handling of fderivatives so that we can convert to Maxima.
- Mike and Burcin came up with a clean solution that will only allow the conversion to be made when all of the arguments to the function are distinct variables. This covers the cases used by the differential equations interface. The fix is in Mike's tree.
Doctest Grunt Work
- There's a lot of "grunt work" to be done to fix doctests to work with the new output format. In each case somebody has to verify that the two things are equal.
Massive Speed Regressions
- The massive speed regressions, making pynac symbolics *slower* than Maxima for some benchmarks.
I = sqrt(-1)
- The current handling of I as a wrapper around a number field element is a bit awkward since (I+2)*x can't be expanded as I+2 is "atomic". This also means that I.imag() returns 1.0 instead of 1. This causes issues in algebraic. Idea to solve this:
Mike: I think what we want is just a QQ*I ring which automatically goes to SR when you do arithmetic with anything outside of it. me: ok. You suggested that before, and it makes some sense. Can't we just make a quadratic number field, and enhance it a tiny spec. Mike: I think if we had that, then everything should work out. Sent at 11:31 AM on Thursday me: That sounds easy enough, and it would be super fast, since quadratic fields are very very fast. Mike: We just don't have an exact way to work with complex numbers. me: robertwb could whip it out, as he wrote quadratic fields, etc. Mike: Yep For RR we have QQ, but we don't have quite an analogue for CC.
- Robert Bradshaw is going to work on this.
There is now a patch up at http://trac.sagemath.org/sage_trac/ticket/6005
Doctest status
As of right now -- May 7 at 11:38 am, doing
- sage -tp 20 devel/sage/sage
results in http://sage.math.washington.edu/home/wstein/build/sage-3.4.2-symbolics/test-all.out
Nearly all of the errors have to do with sqrt, specifically,
sage: sqrt(SR(16)) sqrt(16) sage: sqrt(16 + x - x) sqrt(16)
and
$ grep "CombinatorialFreeModule instance as first argument" /home/wstein/build/sage-3.4.2-symbolics/test-all.out | wc 240 4080 34320
The issue is that ginac treats sqrt(x) as having an ambiguous sign, whereas before we choose a branch. The symbolic sqrt(perfect_square) is used all over in the library, so I think we need to allow this. We should not, however, simplify sqrt(x^2).
- mhansen has fixed the failures in misc/ below in his branch.
- robertwb is looking at the failures in structure/ and matrix/
- quadratic_forms all pass now
Much weirdness (e.g. the CombinatorialFreeModule.basis error) fixed by http://sage.math.washington.edu/home/robertwb/patches/pynac-sqrt.patch
Some powering issues fixed in http://sage.math.washington.edu/home/robertwb/patches/pynac-pow.patch
sage -tp 20 devel/sage/sage (May 8, 6am) at http://sage.math.washington.edu/home/robertwb/sage-3.4.2-symbolics/annotated.log (annotated)
Of 499 failed doctests: 216 were equal 89 were not equal 194 were incomparable.
The following tests failed: sage -t devel/sage/sage/quadratic_forms/quadratic_form__mass__Siegel_densities.py # 2 doctests failed sage -t devel/sage/sage/quadratic_forms/quadratic_form__ternary_Tornaria.py # 2 doctests failed sage -t devel/sage/sage/quadratic_forms/quadratic_form__mass__Conway_Sloane_masses.py # 3 doctests failed sage -t devel/sage/sage/quadratic_forms/special_values.py # 8 doctests failed sage -t devel/sage/sage/misc/parser.pyx # 9 doctests failed sage -t devel/sage/sage/misc/prandom.py # 1 doctests failed sage -t devel/sage/sage/misc/preparser.py # 2 doctests failed sage -t devel/sage/sage/misc/citation.pyx # 1 doctests failed sage -t devel/sage/sage/numerical/optimize.py # 3 doctests failed sage -t devel/sage/sage/misc/functional.py # 8 doctests failed sage -t devel/sage/sage/modules/vector_real_double_dense.pyx # 7 doctests failed sage -t devel/sage/sage/matrix/matrix1.pyx # 0 doctests failed sage -t devel/sage/sage/matrix/tests.py # 1 doctests failed sage -t devel/sage/sage/rings/real_mpfi.pyx # 34 doctests failed sage -t devel/sage/sage/rings/arith.py # 10 doctests failed sage -t devel/sage/sage/databases/database.py # 1 doctests failed sage -t devel/sage/sage/rings/rational_field.py # 4 doctests failed sage -t devel/sage/sage/rings/integer.pyx # 2 doctests failed sage -t devel/sage/sage/rings/complex_double.pyx # 5 doctests failed sage -t devel/sage/sage/rings/complex_number.pyx # 2 doctests failed sage -t devel/sage/sage/matrix/matrix_symbolic_dense.pyx # 19 doctests failed sage -t devel/sage/sage/rings/complex_interval.pyx # 1 doctests failed sage -t devel/sage/sage/rings/infinity.py # Segfault sage -t devel/sage/sage/rings/real_lazy.pyx # 3 doctests failed sage -t devel/sage/sage/rings/power_series_ring.py # 1 doctests failed sage -t devel/sage/sage/rings/complex_interval_field.py # 1 doctests failed sage -t devel/sage/sage/rings/real_double.pyx # 2 doctests failed sage -t devel/sage/sage/rings/rational.pyx # 12 doctests failed sage -t devel/sage/sage/rings/real_mpfr.pyx # 5 doctests failed sage -t devel/sage/sage/rings/number_field/number_field_base.pyx # 8 doctests failed sage -t devel/sage/sage/rings/number_field/number_field_element.pyx # 4 doctests failed sage -t devel/sage/sage/rings/polynomial/polynomial_element.pyx # 3 doctests failed sage -t devel/sage/sage/matrix/matrix2.pyx # 3 doctests failed sage -t devel/sage/sage/structure/element.pyx # 2 doctests failed sage -t devel/sage/sage/structure/parent.pyx # 1 doctests failed sage -t devel/sage/sage/structure/sage_object.pyx # 1 doctests failed sage -t devel/sage/sage/gsl/dft.py # 1 doctests failed sage -t devel/sage/sage/tests/book_stein_ent.py # 8 doctests failed sage -t devel/sage/sage/combinat/species/series.py # 1 doctests failed sage -t devel/sage/sage/calculus/test_sympy.py # 15 doctests failed sage -t devel/sage/sage/calculus/var.pyx # 11 doctests failed sage -t devel/sage/sage/calculus/functions.py # 6 doctests failed sage -t devel/sage/sage/calculus/functional.py # 32 doctests failed sage -t devel/sage/sage/calculus/tests.py # 40 doctests failed sage -t devel/sage/sage/plot/line.py # 2 doctests failed sage -t devel/sage/sage/plot/density_plot.py # 3 doctests failed sage -t devel/sage/sage/plot/complex_plot.pyx # 4 doctests failed sage -t devel/sage/sage/plot/plot_field.py # 1 doctests failed sage -t devel/sage/sage/interfaces/gp.py # 2 doctests failed sage -t devel/sage/sage/plot/contour_plot.py # 11 doctests failed sage -t devel/sage/sage/plot/plot3d/transform.pyx # 1 doctests failed sage -t devel/sage/sage/interfaces/expect.py # 1 doctests failed sage -t devel/sage/sage/interfaces/qepcad.py # 29 doctests failed sage -t devel/sage/sage/calculus/calculus.py # 98 doctests failed sage -t devel/sage/sage/interfaces/maxima.py # 14 doctests failed sage -t devel/sage/sage/algebras/quatalg/quaternion_algebra.py # 1 doctests failed sage -t devel/sage/sage/graphs/graph_list.py # 2 doctests failed sage -t devel/sage/sage/schemes/elliptic_curves/lseries_ell.py # 13 doctests failed sage -t devel/sage/sage/schemes/elliptic_curves/padic_lseries.py # 101 doctests failed sage -t devel/sage/sage/schemes/elliptic_curves/ell_egros.py # 8 doctests failed sage -t devel/sage/sage/schemes/elliptic_curves/constructor.py # 8 doctests failed sage -t devel/sage/sage/schemes/elliptic_curves/padics.py # 25 doctests failed sage -t devel/sage/sage/schemes/plane_curves/affine_curve.py # 1 doctests failed sage -t devel/sage/sage/schemes/elliptic_curves/ell_modular_symbols.py # 66 doctests failed sage -t devel/sage/sage/schemes/elliptic_curves/ell_generic.py # 13 doctests failed sage -t devel/sage/sage/schemes/elliptic_curves/sha_tate.py # 41 doctests failed sage -t devel/sage/sage/plot/plot3d/parametric_plot3d.py # 4 doctests failed sage -t devel/sage/sage/graphs/graph.py # 3 doctests failed sage -t devel/sage/sage/ext/fast_eval.pyx # 1 doctests failed sage -t devel/sage/sage/coding/code_bounds.py # 2 doctests failed sage -t devel/sage/sage/sets/set.py # 2 doctests failed sage -t devel/sage/sage/functions/hyperbolic.py # 11 doctests failed sage -t devel/sage/sage/functions/other.py # 26 doctests failed sage -t devel/sage/sage/functions/log.py # 13 doctests failed sage -t devel/sage/sage/functions/functions.py # 15 doctests failed sage -t devel/sage/sage/functions/special.py # 12 doctests failed sage -t devel/sage/sage/functions/orthogonal_polys.py # 8 doctests failed sage -t devel/sage/sage/functions/trig.py # 22 doctests failed sage -t devel/sage/sage/symbolic/function.pyx # 4 doctests failed sage -t devel/sage/sage/symbolic/ring.pyx # 8 doctests failed sage -t devel/sage/sage/symbolic/callable.py # 2 doctests failed sage -t devel/sage/sage/symbolic/constants.py # 29 doctests failed sage -t devel/sage/sage/symbolic/expression_conversions.py # 1 doctests failed sage -t devel/sage/sage/ext/fast_callable.pyx # 3 doctests failed sage -t devel/sage/sage/schemes/elliptic_curves/ell_rational_field.py # 34 doctests failed sage -t devel/sage/sage/symbolic/expression.pyx # 136 doctests failed sage -t devel/sage/sage/calculus/desolvers.py # 0 doctests failed sage -t devel/sage/sage/calculus/wester.py # 37 doctests failed sage -t devel/sage/sage/calculus/equations.py # 0 doctests failed sage -t devel/sage/sage/plot/plot.py # 0 doctests failed sage -t devel/sage/sage/functions/piecewise.py # 6 doctests failed ---------------------------------------------------------------------- Total time for all tests: 734.9 seconds