Changeset 7441:5b6d6e2e4a87
- Timestamp:
- 11/14/07 15:24:07 (6 years ago)
- Branch:
- default
- Location:
- sage/rings/number_field
- Files:
-
- 2 edited
-
number_field.py (modified) (1 diff)
-
number_field_element_quadratic.pyx (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
sage/rings/number_field/number_field.py
r7288 r7441 4551 4551 parts = -b/(2*a), (Dpoly/D).sqrt()/(2*a) 4552 4552 self._NumberField_generic__gen = self._element_class(self, parts) 4553 4554 4555 def coerce_map_from_impl(self, S): 4556 """ 4557 EXAMPLES: 4558 sage: K.<a> = QuadraticField(-3) 4559 sage: f = K.coerce_map_from(QQ); f 4560 Natural morphism: 4561 From: Rational Field 4562 To: Number Field in a with defining polynomial x^2 + 3 4563 sage: f(3/5) 4564 3/5 4565 sage: parent(f(3/5)) is K 4566 True 4567 """ 4568 if S is QQ: 4569 return number_field_element_quadratic.Q_to_quadratic_field_element(self) 4570 else: 4571 return NumberField_absolute.coerce_map_from_impl(self, S) 4572 4573 4553 4574 4554 4575 def discriminant(self, v=None): -
sage/rings/number_field/number_field_element_quadratic.pyx
r7288 r7441 5 5 -- Robert Bradshaw (2007-09): Initial version 6 6 -- David Harvey (2007-10): fix up a few bugs, polish around the edges 7 8 TODO: 9 the _new() method should be overridden in this class to copy the D attribute 10 7 11 """ 8 12 #***************************************************************************** … … 36 40 from sage.rings.rational_field import QQ 37 41 from sage.rings.integer_ring import ZZ 42 from sage.categories.morphism cimport Morphism 38 43 39 44 … … 935 940 res._reduce_c_() 936 941 return res 942 943 944 945 cdef class Q_to_quadratic_field_element(Morphism): 946 """ 947 Morphism that coerces from rationals to elements of a 948 quadratic number field K. 949 """ 950 cdef NumberFieldElement_quadratic zero_element # the zero element of K 951 952 def __init__(self, K): 953 """ K is the target quadratic field """ 954 import sage.categories.homset 955 Morphism.__init__(self, sage.categories.homset.Hom(QQ, K)) 956 self.zero_element = PY_NEW(NumberFieldElement_quadratic) 957 self.zero_element._parent = K 958 self.zero_element.D = K._D 959 960 961 cdef Element _call_c_impl(self, Element x): 962 cdef NumberFieldElement_quadratic y = self.zero_element._new() 963 y.D = self.zero_element.D 964 mpz_set(y.a, mpq_numref((<Rational>x).value)) 965 mpz_set(y.denom, mpq_denref((<Rational>x).value)) 966 return y 967 968 def _repr_type(self): 969 return "Natural"
Note: See TracChangeset
for help on using the changeset viewer.
