Final Pynac Switchover Push for Sage-4.0

See also http://trac.sagemath.org/sage_trac/ticket/5930

sqrt(2)^2

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

Number Fields

Formal Derivatives

Doctest Grunt Work

Massive Speed Regressions

I = sqrt(-1)

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.

Doctest status

As of right now -- May 7 at 11:38 am, doing

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)

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 everywhere, so I think we need to allow this.

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