summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Gourgoulhon <eric.gourgoulhon@obspm.fr>2015-08-23 21:48:46 +0200
committerEric Gourgoulhon <eric.gourgoulhon@obspm.fr>2015-08-23 21:48:46 +0200
commit8ab80d8019bc0e0829e9c6ffa6a836d330bb01b0 (patch)
tree463ba2356d68f6ccb2fc5d0fd9b2a87e84a330c6
parentSmall improvements in the documentation of differentiable manifolds (diff)
Improvement in simplify_sqrt_real(); minor modif. in documentation
-rw-r--r--src/doc/en/reference/manifolds/index.rst8
-rw-r--r--src/sage/manifolds/chart.py3
-rw-r--r--src/sage/manifolds/differentiable/chart.py31
-rw-r--r--src/sage/manifolds/differentiable/diff_map.py44
-rw-r--r--src/sage/manifolds/differentiable/manifold.py29
-rw-r--r--src/sage/manifolds/differentiable/manifold_homset.py47
-rw-r--r--src/sage/manifolds/differentiable/scalarfield_algebra.py57
-rw-r--r--src/sage/manifolds/manifold.py20
-rw-r--r--src/sage/manifolds/manifold_homset.py45
-rw-r--r--src/sage/manifolds/scalarfield_algebra.py31
-rw-r--r--src/sage/manifolds/utilities.py12
11 files changed, 85 insertions, 242 deletions
diff --git a/src/doc/en/reference/manifolds/index.rst b/src/doc/en/reference/manifolds/index.rst
index 56f9e1f..eac1337 100644
--- a/src/doc/en/reference/manifolds/index.rst
+++ b/src/doc/en/reference/manifolds/index.rst
@@ -1,8 +1,8 @@
-Manifolds and tensor fields
-===========================
+Manifolds
+=========
-This is the Sage implementation of manifolds and tensor fields
-resulting from the `SageManifolds project <http://sagemanifolds.obspm.fr/>`_.
+This is the Sage implementation of manifolds resulting from the
+`SageManifolds project <http://sagemanifolds.obspm.fr/>`_.
This section describes only the "manifold" part of SageManifolds;
the pure algebraic part is described in the section
:ref:`tensors-on-free-modules`.
diff --git a/src/sage/manifolds/chart.py b/src/sage/manifolds/chart.py
index fc435ae..927b73b 100644
--- a/src/sage/manifolds/chart.py
+++ b/src/sage/manifolds/chart.py
@@ -1155,7 +1155,8 @@ class RealChart(Chart):
sage: c_spher
Chart (U, (r, th, ph))
- Note the prefix 'r' for the string defining the coordinates in the arguments of ``Chart``.
+ Note the prefix 'r' for the string defining the coordinates in the
+ arguments of ``chart``.
Coordinates are Sage symbolic variables (see
:mod:`sage.symbolic.expression`)::
diff --git a/src/sage/manifolds/differentiable/chart.py b/src/sage/manifolds/differentiable/chart.py
index 225e60b..09bd5a7 100644
--- a/src/sage/manifolds/differentiable/chart.py
+++ b/src/sage/manifolds/differentiable/chart.py
@@ -19,8 +19,8 @@ AUTHORS:
REFERENCES:
-.. [1] Chap. 1 of J.M. Lee : *Introduction to Smooth Manifolds*, 2nd ed., Springer
- (New York) (2013)
+.. [1] Chap. 1 of J.M. Lee : *Introduction to Smooth Manifolds*, 2nd ed.,
+ Springer (New York) (2013)
"""
@@ -210,8 +210,8 @@ class DiffChart(Chart):
charts whose name can be skipped in the argument list of functions having
an optional ``chart=`` argument.
- The chart map `\varphi` acting on a point is obtained by means of the
- call operator, i.e. the operator ``()``::
+ The action of the chart map `\varphi` on a point is obtained by means of
+ the call operator, i.e. the operator ``()``::
sage: p = M.point((1+i, 2), chart=X); p
Point on the 2-dimensional complex manifold M
@@ -378,14 +378,15 @@ class DiffChart(Chart):
#*****************************************************************************
-class RealDiffChart(RealChart, DiffChart):
+class RealDiffChart(DiffChart, RealChart):
r"""
Chart on a differentiable manifold over `\RR`.
- Given a differentiable manifold `M` of dimension `n` over `\RR`, a *chart* is
- a pair `(U,\varphi)`, where `U` is an open subset of `M` and
- `\varphi: U \rightarrow V \subset \RR^n` is a homeomorphism from `U` to
- an open subset `V` of `\RR^n`.
+ Given a differentiable manifold `M` of dimension `n` over `\RR`,
+ a *chart* is a member `(U,\varphi)` of the manifold's
+ differentiable atlas; `U` is then an open subset of `M` and
+ `\varphi: U \rightarrow V \subset \RR^n` is a homeomorphism from
+ `U` to an open subset `V` of `\RR^n`.
The components `(x^1,\ldots,x^n)` of `\varphi`, defined by
`\varphi(p) = (x^1(p),\ldots,x^n(p))\in \RR^n` for any point `p\in U`, are
@@ -490,7 +491,8 @@ class RealDiffChart(RealChart, DiffChart):
sage: c_spher
Chart (U, (r, th, ph))
- Note the prefix 'r' for the string defining the coordinates in the arguments of ``Chart``.
+ Note the prefix 'r' for the string defining the coordinates in the
+ arguments of ``chart``.
Coordinates are Sage symbolic variables (see
:mod:`sage.symbolic.expression`)::
@@ -562,8 +564,8 @@ class RealDiffChart(RealChart, DiffChart):
charts whose name can be skipped in the argument list of functions having
an optional ``chart=`` argument.
- The chart map `\varphi` acting on a point is obtained by means of the
- call operator, i.e. the operator ``()``::
+ The action of the chart map `\varphi` on a point is obtained by means of
+ the call operator, i.e. the operator ``()``::
sage: p = M.point((1,0,-2)); p
Point on the 3-dimensional differentiable manifold R^3
@@ -698,3 +700,8 @@ class DiffCoordChange(CoordChange):
"""
CoordChange.__init__(self, chart1, chart2, *transformations)
+ # Jacobian matrix:
+ self._jacobian = self._transf.jacobian()
+ # Jacobian determinant:
+ if self._n1 == self._n2:
+ self._jacobian_det = self._transf.jacobian_det()
diff --git a/src/sage/manifolds/differentiable/diff_map.py b/src/sage/manifolds/differentiable/diff_map.py
index 5fe86eb..87359aa 100644
--- a/src/sage/manifolds/differentiable/diff_map.py
+++ b/src/sage/manifolds/differentiable/diff_map.py
@@ -134,30 +134,34 @@ class DiffMap(ContinuousMap):
arguments ``chart1`` and ``chart2`` have to be provided if the charts
differ from the default ones on the domain and/or the codomain::
- sage: Phi1 = M.diff_map(N, [2*x/(1+x^2+y^2), 2*y/(1+x^2+y^2), (x^2+y^2-1)/(1+x^2+y^2)], \
- ....: chart1=c_xy, chart2=c_cart, name='Phi', latex_name=r'\Phi')
+ sage: Phi1 = M.diff_map(N, [2*x/(1+x^2+y^2), 2*y/(1+x^2+y^2), (x^2+y^2-1)/(1+x^2+y^2)],
+ ....: chart1=c_xy, chart2=c_cart, name='Phi', latex_name=r'\Phi')
Since c_xy and c_cart are the default charts on respectively M and N, they
can be omitted, so that the above declaration is equivalent to::
- sage: Phi1 = M.diff_map(N, [2*x/(1+x^2+y^2), 2*y/(1+x^2+y^2), (x^2+y^2-1)/(1+x^2+y^2)], \
- ....: name='Phi', latex_name=r'\Phi')
+ sage: Phi1 = M.diff_map(N, [2*x/(1+x^2+y^2), 2*y/(1+x^2+y^2), (x^2+y^2-1)/(1+x^2+y^2)],
+ ....: name='Phi', latex_name=r'\Phi')
With such a declaration, the differentiable map is only partially defined
on the manifold `S^2`, being known in only one chart::
sage: Phi1.display()
Phi: S^2 --> R^3
- on U: (x, y) |--> (X, Y, Z) = (2*x/(x^2 + y^2 + 1), 2*y/(x^2 + y^2 + 1), (x^2 + y^2 - 1)/(x^2 + y^2 + 1))
+ on U: (x, y) |--> (X, Y, Z) = (2*x/(x^2 + y^2 + 1), 2*y/(x^2 + y^2 + 1),
+ (x^2 + y^2 - 1)/(x^2 + y^2 + 1))
The definition can be completed by means of the method
:meth:`~sage.manifolds.continuous_map.ContinuousMap.add_expr`::
- sage: Phi1.add_expr(c_uv, c_cart, [2*u/(1+u^2+v^2), 2*v/(1+u^2+v^2), (1-u^2-v^2)/(1+u^2+v^2)])
+ sage: Phi1.add_expr(c_uv, c_cart, [2*u/(1+u^2+v^2), 2*v/(1+u^2+v^2),
+ ....: (1-u^2-v^2)/(1+u^2+v^2)])
sage: Phi1.display()
Phi: S^2 --> R^3
- on U: (x, y) |--> (X, Y, Z) = (2*x/(x^2 + y^2 + 1), 2*y/(x^2 + y^2 + 1), (x^2 + y^2 - 1)/(x^2 + y^2 + 1))
- on V: (u, v) |--> (X, Y, Z) = (2*u/(u^2 + v^2 + 1), 2*v/(u^2 + v^2 + 1), -(u^2 + v^2 - 1)/(u^2 + v^2 + 1))
+ on U: (x, y) |--> (X, Y, Z) = (2*x/(x^2 + y^2 + 1), 2*y/(x^2 + y^2 + 1),
+ (x^2 + y^2 - 1)/(x^2 + y^2 + 1))
+ on V: (u, v) |--> (X, Y, Z) = (2*u/(u^2 + v^2 + 1), 2*v/(u^2 + v^2 + 1),
+ -(u^2 + v^2 - 1)/(u^2 + v^2 + 1))
At this stage, Phi1 and Phi are fully equivalent::
@@ -190,8 +194,8 @@ class DiffMap(ContinuousMap):
sage: Psi = N.diff_map(P, (X/(1-Z), Y/(1-Z)), name='Psi',
....: latex_name=r'\Psi')
sage: Psi
- Differentiable map Psi from the 3-dimensional differentiable manifold R^3 to
- the 2-dimensional differentiable manifold R^2
+ Differentiable map Psi from the 3-dimensional differentiable manifold
+ R^3 to the 2-dimensional differentiable manifold R^2
sage: Psi.display()
Psi: R^3 --> R^2
(X, Y, Z) |--> (xP, yP) = (-X/(Z - 1), -Y/(Z - 1))
@@ -200,8 +204,8 @@ class DiffMap(ContinuousMap):
`S^2\rightarrow \RR^2`::
sage: ster = Psi*Phi ; ster
- Differentiable map from the 2-dimensional differentiable manifold S^2 to the
- 2-dimensional differentiable manifold R^2
+ Differentiable map from the 2-dimensional differentiable manifold S^2
+ to the 2-dimensional differentiable manifold R^2
Let us test on the South pole (``sp``) that ``ster`` is indeed the
composite of ``Psi`` and ``Phi``::
@@ -233,8 +237,8 @@ class DiffMap(ContinuousMap):
sage: R2 = DiffManifold(2, 'R^2') # R^2
sage: c_xy.<x,y> = R2.chart() # Cartesian coordinates on R^2
sage: Phi = R.diff_map(R2, [cos(t), sin(t)], name='Phi') ; Phi
- Differentiable map Phi from the 1-dimensional differentiable manifold R to
- the 2-dimensional differentiable manifold R^2
+ Differentiable map Phi from the 1-dimensional differentiable manifold R
+ to the 2-dimensional differentiable manifold R^2
sage: Phi.parent()
Set of Morphisms from 1-dimensional differentiable manifold R to
2-dimensional differentiable manifold R^2 in Category of sets
@@ -252,7 +256,8 @@ class DiffMap(ContinuousMap):
....: name='Phi', latex_name=r'\Phi')
sage: Phi
Diffeomorphism Phi from the Open subset D of the 2-dimensional
- differentiable manifold R^2 to the 2-dimensional differentiable manifold R^2
+ differentiable manifold R^2 to the 2-dimensional differentiable
+ manifold R^2
sage: Phi.parent()
Set of Morphisms from Open subset D of the 2-dimensional differentiable
manifold R^2 to 2-dimensional differentiable manifold R^2 in Category
@@ -304,8 +309,8 @@ class DiffMap(ContinuousMap):
A special case of diffeomorphism: the identity map of the open unit disk::
sage: id = D.identity_map() ; id
- Identity map Id_D of the Open subset D of the 2-dimensional differentiable
- manifold R^2
+ Identity map Id_D of the Open subset D of the 2-dimensional
+ differentiable manifold R^2
sage: latex(id)
\mathrm{Id}_{D}
sage: id.parent()
@@ -352,8 +357,8 @@ class DiffMap(ContinuousMap):
sage: N = DiffManifold(3, 'N')
sage: Y.<u,v,w> = N.chart()
sage: f = Hom(M,N)({(X,Y): (x+y, x*y, x-y)}, name='f') ; f
- Differentiable map f from the 2-dimensional differentiable manifold M to
- the 3-dimensional differentiable manifold N
+ Differentiable map f from the 2-dimensional differentiable manifold
+ M to the 3-dimensional differentiable manifold N
sage: f.display()
f: M --> N
(x, y) |--> (u, v, w) = (x + y, x*y, x - y)
@@ -467,4 +472,3 @@ class DiffMap(ContinuousMap):
ContinuousMap._del_derived(self) # derived quantities of the mother
# class
self._diff.clear()
-
diff --git a/src/sage/manifolds/differentiable/manifold.py b/src/sage/manifolds/differentiable/manifold.py
index 462eef1..0abf4d6 100644
--- a/src/sage/manifolds/differentiable/manifold.py
+++ b/src/sage/manifolds/differentiable/manifold.py
@@ -1,10 +1,8 @@
r"""
Differentiable manifolds
-Given a topological field `K` with sufficient structure to define
-differentiability, e.g. a complete metric field
-(in most applications, `K = \RR` or `K = \CC`;
-see however [4]_ for `K = \QQ_p` and [5]_ for other fields),
+Given a non-discrete topological field `K` (in most applications, `K = \RR` or
+`K = \CC`; see however [4]_ for `K = \QQ_p` and [5]_ for other fields),
a *differentiable manifold over* `K` is a topological manifold `M` over `K`
equipped with an atlas whose transitions maps are of class `C^k` (i.e.
`k`-times continuously differentiable) for a fixed positive integer `k`
@@ -318,8 +316,7 @@ class DiffManifold(TopManifold):
r"""
Differentiable manifold over a topological field `K`.
- Given a topological field `K` with sufficient structure to define
- differentiability, e.g. a complete metric field (in most applications,
+ Given a non-discrete topological field `K` (in most applications,
`K = \RR` or `K = \CC`; see however [4]_ for `K = \QQ_p` and [5]_ for
other fields), a *differentiable manifold over* `K` is a topological
manifold `M` over `K` equipped with an atlas whose transitions maps are of
@@ -458,25 +455,7 @@ class DiffManifold(TopManifold):
The manifold passes all the tests of the test suite relative to the
category of Sets::
- sage: TestSuite(M).run(verbose=True)
- running ._test_an_element() . . . pass
- running ._test_category() . . . pass
- running ._test_elements() . . .
- Running the test suite of self.an_element()
- running ._test_category() . . . pass
- running ._test_eq() . . . pass
- running ._test_not_implemented_methods() . . . pass
- running ._test_pickling() . . . pass
- pass
- running ._test_elements_eq_reflexive() . . . pass
- running ._test_elements_eq_symmetric() . . . pass
- running ._test_elements_eq_transitive() . . . pass
- running ._test_elements_neq() . . . pass
- running ._test_eq() . . . pass
- running ._test_not_implemented_methods() . . . pass
- running ._test_pickling() . . . pass
- running ._test_some_elements() . . . pass
-
+ sage: TestSuite(M).run()
"""
def __init__(self, n, name, latex_name=None, field='real',
diff --git a/src/sage/manifolds/differentiable/manifold_homset.py b/src/sage/manifolds/differentiable/manifold_homset.py
index 8c56bb1..70305d6 100644
--- a/src/sage/manifolds/differentiable/manifold_homset.py
+++ b/src/sage/manifolds/differentiable/manifold_homset.py
@@ -133,50 +133,7 @@ class DiffManifoldHomset(TopManifoldHomset):
sage: TestSuite(E).run()
This test suite includes more tests than in the case of ``H``, since ``E``
- has some extra structure (monoid)::
-
- sage: TestSuite(H).run(verbose=True)
- running ._test_an_element() . . . pass
- running ._test_category() . . . pass
- running ._test_elements() . . .
- Running the test suite of self.an_element()
- running ._test_category() . . . pass
- running ._test_eq() . . . pass
- running ._test_not_implemented_methods() . . . pass
- running ._test_pickling() . . . pass
- pass
- running ._test_elements_eq_reflexive() . . . pass
- running ._test_elements_eq_symmetric() . . . pass
- running ._test_elements_eq_transitive() . . . pass
- running ._test_elements_neq() . . . pass
- running ._test_eq() . . . pass
- running ._test_not_implemented_methods() . . . pass
- running ._test_pickling() . . . pass
- running ._test_some_elements() . . . pass
-
- ::
-
- sage: TestSuite(E).run(verbose=True)
- running ._test_an_element() . . . pass
- running ._test_associativity() . . . pass
- running ._test_category() . . . pass
- running ._test_elements() . . .
- Running the test suite of self.an_element()
- running ._test_category() . . . pass
- running ._test_eq() . . . pass
- running ._test_not_implemented_methods() . . . pass
- running ._test_pickling() . . . pass
- pass
- running ._test_elements_eq_reflexive() . . . pass
- running ._test_elements_eq_symmetric() . . . pass
- running ._test_elements_eq_transitive() . . . pass
- running ._test_elements_neq() . . . pass
- running ._test_eq() . . . pass
- running ._test_not_implemented_methods() . . . pass
- running ._test_one() . . . pass
- running ._test_pickling() . . . pass
- running ._test_prod() . . . pass
- running ._test_some_elements() . . . pass
+ has some extra structure (monoid).
"""
@@ -217,7 +174,7 @@ class DiffManifoldHomset(TopManifoldHomset):
def _coerce_map_from_(self, other):
r"""
- Determine whether coercion to self exists from other parent.
+ Determine whether coercion to ``self`` exists from other parent.
EXAMPLE::
diff --git a/src/sage/manifolds/differentiable/scalarfield_algebra.py b/src/sage/manifolds/differentiable/scalarfield_algebra.py
index aa88dab..b061b5b 100644
--- a/src/sage/manifolds/differentiable/scalarfield_algebra.py
+++ b/src/sage/manifolds/differentiable/scalarfield_algebra.py
@@ -2,11 +2,11 @@ r"""
Algebra of differentiable scalar fields
The class :class:`DiffScalarFieldAlgebra` implements the commutative algebra
-`C^k(U)` of scalar fields on some open subset `U` of a differentiable manifold
-`M` of class `C^k` over a topological field `K` (in most applications,
-`K = \RR` or `K = \CC`). By *differentiable scalar field*, it is meant a
-function `U\rightarrow K` that is `k`-times continuously differentiable.
-`C^k(U)` is an algebra over `K`, whose ring product is the
+`C^k(U)` of differentiable scalar fields on some open subset `U` of a
+differentiable manifold `M` of class `C^k` over a topological field `K` (in
+most applications, `K = \RR` or `K = \CC`). By *differentiable scalar field*,
+it is meant a function `U\rightarrow K` that is `k`-times continuously
+differentiable. `C^k(U)` is an algebra over `K`, whose ring product is the
pointwise multiplication of `K`-valued functions, which is clearly commutative.
AUTHORS:
@@ -113,7 +113,8 @@ class DiffScalarFieldAlgebra(ScalarFieldAlgebra):
Those of `C^k(W)` are scalar fields on `W`::
sage: CW.an_element()
- Scalar field on the Open subset W of the 2-dimensional differentiable manifold M
+ Scalar field on the Open subset W of the 2-dimensional differentiable
+ manifold M
sage: CW.an_element().display() # this sample element is a constant field
W --> R
(x, y) |--> 2
@@ -131,7 +132,8 @@ class DiffScalarFieldAlgebra(ScalarFieldAlgebra):
::
sage: CW.zero()
- Scalar field zero on the Open subset W of the 2-dimensional differentiable manifold M
+ Scalar field zero on the Open subset W of the 2-dimensional
+ differentiable manifold M
sage: CW.zero().display()
zero: W --> R
(x, y) |--> 0
@@ -157,8 +159,8 @@ class DiffScalarFieldAlgebra(ScalarFieldAlgebra):
(u, v) |--> 1
A generic element can be constructed as for any parent in Sage, namely
- by means of the ``__call__`` operator on the parent (here with the dictionary
- of the coordinate expressions defining the scalar field)::
+ by means of the ``__call__`` operator on the parent (here with the
+ dictionary of the coordinate expressions defining the scalar field)::
sage: f = CM({c_xy: atan(x^2+y^2), c_uv: pi/2 - atan(u^2+v^2)}); f
Scalar field on the 2-dimensional differentiable manifold M
@@ -211,7 +213,8 @@ class DiffScalarFieldAlgebra(ScalarFieldAlgebra):
on `M`::
sage: fW = CW(f) ; fW
- Scalar field on the Open subset W of the 2-dimensional differentiable manifold M
+ Scalar field on the Open subset W of the 2-dimensional differentiable
+ manifold M
sage: fW.display()
W --> R
(x, y) |--> arctan(x^2 + y^2)
@@ -296,7 +299,8 @@ class DiffScalarFieldAlgebra(ScalarFieldAlgebra):
sage: f/fW == CW.one()
True
sage: s = f*fW ; s
- Scalar field on the Open subset W of the 2-dimensional differentiable manifold M
+ Scalar field on the Open subset W of the 2-dimensional differentiable
+ manifold M
sage: s.display()
W --> R
(x, y) |--> arctan(x^2 + y^2)^2
@@ -326,34 +330,9 @@ class DiffScalarFieldAlgebra(ScalarFieldAlgebra):
sage: 1/3*(f+2*f) == f
True
- Sage test suite for algebras is passed::
-
- sage: TestSuite(CM).run(verbose=True)
- running ._test_additive_associativity() . . . pass
- running ._test_an_element() . . . pass
- running ._test_associativity() . . . pass
- running ._test_category() . . . pass
- running ._test_characteristic() . . . pass
- running ._test_distributivity() . . . pass
- running ._test_elements() . . .
- Running the test suite of self.an_element()
- running ._test_category() . . . pass
- running ._test_eq() . . . pass
- running ._test_nonzero_equal() . . . pass
- running ._test_not_implemented_methods() . . . pass
- running ._test_pickling() . . . pass
- pass
- running ._test_elements_eq_reflexive() . . . pass
- running ._test_elements_eq_symmetric() . . . pass
- running ._test_elements_eq_transitive() . . . pass
- running ._test_elements_neq() . . . pass
- running ._test_eq() . . . pass
- running ._test_not_implemented_methods() . . . pass
- running ._test_one() . . . pass
- running ._test_pickling() . . . pass
- running ._test_prod() . . . pass
- running ._test_some_elements() . . . pass
- running ._test_zero() . . . pass
+ The Sage test suite for algebras is passed::
+
+ sage: TestSuite(CM).run()
It is passed also for `C^k(W)`::
diff --git a/src/sage/manifolds/manifold.py b/src/sage/manifolds/manifold.py
index d21448d..8d2f250 100644
--- a/src/sage/manifolds/manifold.py
+++ b/src/sage/manifolds/manifold.py
@@ -414,25 +414,7 @@ class TopManifold(TopManifoldSubset):
The manifold passes all the tests of the test suite relative to the
category of Sets::
- sage: TestSuite(M).run(verbose=True)
- running ._test_an_element() . . . pass
- running ._test_category() . . . pass
- running ._test_elements() . . .
- Running the test suite of self.an_element()
- running ._test_category() . . . pass
- running ._test_eq() . . . pass
- running ._test_not_implemented_methods() . . . pass
- running ._test_pickling() . . . pass
- pass
- running ._test_elements_eq_reflexive() . . . pass
- running ._test_elements_eq_symmetric() . . . pass
- running ._test_elements_eq_transitive() . . . pass
- running ._test_elements_neq() . . . pass
- running ._test_eq() . . . pass
- running ._test_not_implemented_methods() . . . pass
- running ._test_pickling() . . . pass
- running ._test_some_elements() . . . pass
-
+ sage: TestSuite(M).run()
"""
def __init__(self, n, name, latex_name=None, field='real', start_index=0,
diff --git a/src/sage/manifolds/manifold_homset.py b/src/sage/manifolds/manifold_homset.py
index 5a5c282..b734e00 100644
--- a/src/sage/manifolds/manifold_homset.py
+++ b/src/sage/manifolds/manifold_homset.py
@@ -136,50 +136,7 @@ class TopManifoldHomset(Homset, UniqueRepresentation):
sage: TestSuite(E).run()
This test suite includes more tests than in the case of ``H``, since ``E``
- has some extra structure (monoid)::
-
- sage: TestSuite(H).run(verbose=True)
- running ._test_an_element() . . . pass
- running ._test_category() . . . pass
- running ._test_elements() . . .
- Running the test suite of self.an_element()
- running ._test_category() . . . pass
- running ._test_eq() . . . pass
- running ._test_not_implemented_methods() . . . pass
- running ._test_pickling() . . . pass
- pass
- running ._test_elements_eq_reflexive() . . . pass
- running ._test_elements_eq_symmetric() . . . pass
- running ._test_elements_eq_transitive() . . . pass
- running ._test_elements_neq() . . . pass
- running ._test_eq() . . . pass
- running ._test_not_implemented_methods() . . . pass
- running ._test_pickling() . . . pass
- running ._test_some_elements() . . . pass
-
- ::
-
- sage: TestSuite(E).run(verbose=True)
- running ._test_an_element() . . . pass
- running ._test_associativity() . . . pass
- running ._test_category() . . . pass
- running ._test_elements() . . .
- Running the test suite of self.an_element()
- running ._test_category() . . . pass
- running ._test_eq() . . . pass
- running ._test_not_implemented_methods() . . . pass
- running ._test_pickling() . . . pass
- pass
- running ._test_elements_eq_reflexive() . . . pass
- running ._test_elements_eq_symmetric() . . . pass
- running ._test_elements_eq_transitive() . . . pass
- running ._test_elements_neq() . . . pass
- running ._test_eq() . . . pass
- running ._test_not_implemented_methods() . . . pass
- running ._test_one() . . . pass
- running ._test_pickling() . . . pass
- running ._test_prod() . . . pass
- running ._test_some_elements() . . . pass
+ has some extra structure (monoid).
"""
diff --git a/src/sage/manifolds/scalarfield_algebra.py b/src/sage/manifolds/scalarfield_algebra.py
index 5cf30ec..a8f8e25 100644
--- a/src/sage/manifolds/scalarfield_algebra.py
+++ b/src/sage/manifolds/scalarfield_algebra.py
@@ -319,34 +319,9 @@ class ScalarFieldAlgebra(UniqueRepresentation, Parent):
sage: 1/3*(f+2*f) == f
True
- Sage test suite for algebras is passed::
-
- sage: TestSuite(CM).run(verbose=True)
- running ._test_additive_associativity() . . . pass
- running ._test_an_element() . . . pass
- running ._test_associativity() . . . pass
- running ._test_category() . . . pass
- running ._test_characteristic() . . . pass
- running ._test_distributivity() . . . pass
- running ._test_elements() . . .
- Running the test suite of self.an_element()
- running ._test_category() . . . pass
- running ._test_eq() . . . pass
- running ._test_nonzero_equal() . . . pass
- running ._test_not_implemented_methods() . . . pass
- running ._test_pickling() . . . pass
- pass
- running ._test_elements_eq_reflexive() . . . pass
- running ._test_elements_eq_symmetric() . . . pass
- running ._test_elements_eq_transitive() . . . pass
- running ._test_elements_neq() . . . pass
- running ._test_eq() . . . pass
- running ._test_not_implemented_methods() . . . pass
- running ._test_one() . . . pass
- running ._test_pickling() . . . pass
- running ._test_prod() . . . pass
- running ._test_some_elements() . . . pass
- running ._test_zero() . . . pass
+ The Sage test suite for algebras is passed::
+
+ sage: TestSuite(CM).run()
It is passed also for `C^0(W)`::
diff --git a/src/sage/manifolds/utilities.py b/src/sage/manifolds/utilities.py
index 634929b..0412302 100644
--- a/src/sage/manifolds/utilities.py
+++ b/src/sage/manifolds/utilities.py
@@ -126,12 +126,14 @@ def simplify_sqrt_real(expr):
if num < 0 or den < 0:
x = sqrt(-num) / sqrt(-den) # new equivalent expression for x
simpl = SR(x._maxima_().radcan())
- if str(simpl)[:5] != 'sqrt(':
- # the absolute value of radcan's output is taken, the call to simplify()
- # taking into account possible assumptions regarding the sign of simpl:
- ssimpl = str(abs(simpl).simplify())
- else:
+ if str(simpl)[:5] == 'sqrt(' or str(simpl)[:7] == '1/sqrt(':
+ # no further simplification seems possible:
ssimpl = str(simpl)
+ else:
+ # the absolute value of radcan's output is taken, the call to
+ # simplify() taking into account possible assumptions regarding the
+ # sign of simpl:
+ ssimpl = str(abs(simpl).simplify())
# search for abs(1/sqrt(...)) term to simplify it into 1/sqrt(...):
pstart = ssimpl.find('abs(1/sqrt(')
if pstart != -1: