Spaces:
Running
Running
File size: 1,594 Bytes
6a86ad5 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
"""Special exception classes for numberfields. """
class ClosureFailure(Exception):
r"""
Signals that a :py:class:`ModuleElement` which we tried to represent in a
certain :py:class:`Module` cannot in fact be represented there.
Examples
========
>>> from sympy.polys import Poly, cyclotomic_poly, ZZ
>>> from sympy.polys.matrices import DomainMatrix
>>> from sympy.polys.numberfields.modules import PowerBasis, to_col
>>> T = Poly(cyclotomic_poly(5))
>>> A = PowerBasis(T)
>>> B = A.submodule_from_matrix(2 * DomainMatrix.eye(4, ZZ))
Because we are in a cyclotomic field, the power basis ``A`` is an integral
basis, and the submodule ``B`` is just the ideal $(2)$. Therefore ``B`` can
represent an element having all even coefficients over the power basis:
>>> a1 = A(to_col([2, 4, 6, 8]))
>>> print(B.represent(a1))
DomainMatrix([[1], [2], [3], [4]], (4, 1), ZZ)
but ``B`` cannot represent an element with an odd coefficient:
>>> a2 = A(to_col([1, 2, 2, 2]))
>>> B.represent(a2)
Traceback (most recent call last):
...
ClosureFailure: Element in QQ-span but not ZZ-span of this basis.
"""
pass
class StructureError(Exception):
r"""
Represents cases in which an algebraic structure was expected to have a
certain property, or be of a certain type, but was not.
"""
pass
class MissingUnityError(StructureError):
r"""Structure should contain a unity element but does not."""
pass
__all__ = [
'ClosureFailure', 'StructureError', 'MissingUnityError',
]
|