@@ -79,7 +79,7 @@ cdef class FractionFieldElement(FieldElement):
79
79
(1, 0)
80
80
"""
81
81
cdef object __numerator
82
- cdef object __denominator
82
+ cdef object _denominator
83
83
cdef bint _is_reduced
84
84
85
85
def __init__ (self , parent , numerator , denominator = 1 ,
@@ -109,16 +109,16 @@ cdef class FractionFieldElement(FieldElement):
109
109
FieldElement.__init__ (self , parent)
110
110
if coerce :
111
111
self .__numerator = parent.ring()(numerator)
112
- self .__denominator = parent.ring()(denominator)
112
+ self ._denominator = parent.ring()(denominator)
113
113
else :
114
114
self .__numerator = numerator
115
- self .__denominator = denominator
115
+ self ._denominator = denominator
116
116
if reduce and parent.is_exact():
117
117
try :
118
118
self .reduce()
119
119
except ArithmeticError :
120
120
pass
121
- if self .__denominator .is_zero():
121
+ if self ._denominator .is_zero():
122
122
raise ZeroDivisionError (" fraction field element division by zero" )
123
123
124
124
def _im_gens_ (self , codomain , im_gens , base_map = None ):
@@ -155,7 +155,7 @@ cdef class FractionFieldElement(FieldElement):
155
155
((-i))/b
156
156
"""
157
157
nnum = codomain.coerce(self .__numerator._im_gens_(codomain, im_gens, base_map = base_map))
158
- nden = codomain.coerce(self .__denominator ._im_gens_(codomain, im_gens, base_map = base_map))
158
+ nden = codomain.coerce(self ._denominator ._im_gens_(codomain, im_gens, base_map = base_map))
159
159
return codomain.coerce(nnum/ nden)
160
160
161
161
cpdef reduce (self ):
@@ -191,25 +191,25 @@ cdef class FractionFieldElement(FieldElement):
191
191
if self ._is_reduced:
192
192
return
193
193
try :
194
- g = self .__numerator.gcd(self .__denominator )
194
+ g = self .__numerator.gcd(self ._denominator )
195
195
if not g.is_unit():
196
196
self .__numerator //= g
197
- self .__denominator //= g
197
+ self ._denominator //= g
198
198
self ._is_reduced = True
199
199
except AttributeError :
200
200
raise ArithmeticError (" unable to reduce because lack of gcd or quo_rem algorithm" )
201
201
except TypeError :
202
202
raise ArithmeticError (" unable to reduce because gcd algorithm doesn't work on input" )
203
203
except NotImplementedError :
204
204
raise ArithmeticError (" unable to reduce because gcd algorithm not implemented on input" )
205
- if not self .__denominator .is_one() and self .__denominator .is_unit():
205
+ if not self ._denominator .is_one() and self ._denominator .is_unit():
206
206
try :
207
- inv = self .__denominator .inverse_of_unit()
207
+ inv = self ._denominator .inverse_of_unit()
208
208
except Exception :
209
209
pass
210
210
else :
211
211
self .__numerator *= inv
212
- self .__denominator = self .__denominator .parent().one()
212
+ self ._denominator = self ._denominator .parent().one()
213
213
214
214
def __copy__ (self ):
215
215
"""
@@ -224,7 +224,7 @@ cdef class FractionFieldElement(FieldElement):
224
224
(x + y)/y
225
225
"""
226
226
return self .__class__ (self ._parent, self .__numerator,
227
- self .__denominator , coerce = False , reduce = False )
227
+ self ._denominator , coerce = False , reduce = False )
228
228
229
229
def numerator (self ):
230
230
"""
@@ -252,7 +252,7 @@ cdef class FractionFieldElement(FieldElement):
252
252
sage: f.denominator()
253
253
y
254
254
"""
255
- return self .__denominator
255
+ return self ._denominator
256
256
257
257
258
258
def is_square (self ,root = False ):
@@ -399,7 +399,7 @@ cdef class FractionFieldElement(FieldElement):
399
399
sage: ((x+1)/(x^2+1)).subs({x: 1}) # optional - sage.rings.number_field
400
400
1
401
401
"""
402
- if self .__denominator .is_one():
402
+ if self ._denominator .is_one():
403
403
# Handle this case even over rings that don't support reduction, to
404
404
# avoid breaking existing code that carelessly mixes p and p/1
405
405
return hash (self .__numerator)
@@ -414,7 +414,7 @@ cdef class FractionFieldElement(FieldElement):
414
414
self .reduce()
415
415
# Same algorithm as for elements of QQ
416
416
n = hash (self .__numerator)
417
- d = hash (self .__denominator )
417
+ d = hash (self ._denominator )
418
418
if d == 1 :
419
419
return n
420
420
else :
@@ -443,7 +443,7 @@ cdef class FractionFieldElement(FieldElement):
443
443
sage: h(x0=1)
444
444
(-2*x1*x2 + x1 + 1)/(x1 + x2)
445
445
"""
446
- return self .__numerator(* x, ** kwds) / self .__denominator (* x, ** kwds)
446
+ return self .__numerator(* x, ** kwds) / self ._denominator (* x, ** kwds)
447
447
448
448
def _is_atomic (self ):
449
449
"""
@@ -456,7 +456,7 @@ cdef class FractionFieldElement(FieldElement):
456
456
sage: f._is_atomic()
457
457
False
458
458
"""
459
- return self .__numerator._is_atomic() and self .__denominator ._is_atomic()
459
+ return self .__numerator._is_atomic() and self ._denominator ._is_atomic()
460
460
461
461
def _repr_ (self ):
462
462
"""
@@ -477,9 +477,9 @@ cdef class FractionFieldElement(FieldElement):
477
477
if self .is_zero():
478
478
return " 0"
479
479
s = " %s " % self .__numerator
480
- if self .__denominator != 1 :
481
- denom_string = str ( self .__denominator )
482
- if self .__denominator ._is_atomic() and not (' *' in denom_string or ' /' in denom_string):
480
+ if self ._denominator != 1 :
481
+ denom_string = str ( self ._denominator )
482
+ if self ._denominator ._is_atomic() and not (' *' in denom_string or ' /' in denom_string):
483
483
s = " %s /%s " % (self .__numerator._coeff_repr(no_space = False ),denom_string)
484
484
else :
485
485
s = " %s /(%s )" % (self .__numerator._coeff_repr(no_space = False ),denom_string)
@@ -518,10 +518,10 @@ cdef class FractionFieldElement(FieldElement):
518
518
"""
519
519
if self .is_zero():
520
520
return " 0"
521
- if self .__denominator == 1 :
521
+ if self ._denominator == 1 :
522
522
return latex.latex(self .__numerator)
523
523
return " \\ frac{%s }{%s }" % (latex.latex(self .__numerator),
524
- latex.latex(self .__denominator ))
524
+ latex.latex(self ._denominator ))
525
525
526
526
def _magma_init_ (self , magma ):
527
527
"""
@@ -578,9 +578,9 @@ cdef class FractionFieldElement(FieldElement):
578
578
(t^2 + 6)/t
579
579
"""
580
580
rnum = self .__numerator
581
- rden = self .__denominator
581
+ rden = self ._denominator
582
582
snum = (< FractionFieldElement> right).__numerator
583
- sden = (< FractionFieldElement> right).__denominator
583
+ sden = (< FractionFieldElement> right)._denominator
584
584
585
585
if (rnum.is_zero()):
586
586
return < FractionFieldElement> right
@@ -602,7 +602,7 @@ cdef class FractionFieldElement(FieldElement):
602
602
self ._parent.ring().one(), coerce = False ,
603
603
reduce = False )
604
604
else :
605
- tden = self .__denominator * sden
605
+ tden = self ._denominator * sden
606
606
e = tnum.gcd(d)
607
607
if not e.is_unit():
608
608
tnum = tnum // e
@@ -625,9 +625,9 @@ cdef class FractionFieldElement(FieldElement):
625
625
pass
626
626
627
627
rnum = self .__numerator
628
- rden = self .__denominator
628
+ rden = self ._denominator
629
629
snum = (< FractionFieldElement> right).__numerator
630
- sden = (< FractionFieldElement> right).__denominator
630
+ sden = (< FractionFieldElement> right)._denominator
631
631
632
632
return self .__class__ (self ._parent, rnum* sden + rden* snum, rden* sden,
633
633
coerce = False , reduce = False )
@@ -653,9 +653,9 @@ cdef class FractionFieldElement(FieldElement):
653
653
3/(t + 1)
654
654
"""
655
655
rnum = self .__numerator
656
- rden = self .__denominator
656
+ rden = self ._denominator
657
657
snum = (< FractionFieldElement> right).__numerator
658
- sden = (< FractionFieldElement> right).__denominator
658
+ sden = (< FractionFieldElement> right)._denominator
659
659
660
660
if (rnum.is_zero() or snum.is_zero()):
661
661
return self ._parent.zero()
@@ -690,9 +690,9 @@ cdef class FractionFieldElement(FieldElement):
690
690
pass
691
691
692
692
rnum = self .__numerator
693
- rden = self .__denominator
693
+ rden = self ._denominator
694
694
snum = (< FractionFieldElement> right).__numerator
695
- sden = (< FractionFieldElement> right).__denominator
695
+ sden = (< FractionFieldElement> right)._denominator
696
696
697
697
return self .__class__ (self ._parent, rnum * snum, rden * sden,
698
698
coerce = False , reduce = False )
@@ -718,7 +718,7 @@ cdef class FractionFieldElement(FieldElement):
718
718
(x*z - x + z - 1)/(z - 3)
719
719
"""
720
720
snum = (< FractionFieldElement> right).__numerator
721
- sden = (< FractionFieldElement> right).__denominator
721
+ sden = (< FractionFieldElement> right)._denominator
722
722
723
723
if snum.is_zero():
724
724
raise ZeroDivisionError (" fraction field element division by zero" )
@@ -743,9 +743,9 @@ cdef class FractionFieldElement(FieldElement):
743
743
sage: int(K(.5))
744
744
0
745
745
"""
746
- if self .__denominator != 1 :
746
+ if self ._denominator != 1 :
747
747
self .reduce()
748
- if self .__denominator == 1 :
748
+ if self ._denominator == 1 :
749
749
return int (self .__numerator)
750
750
else :
751
751
raise TypeError (" denominator must equal 1" )
@@ -758,7 +758,7 @@ cdef class FractionFieldElement(FieldElement):
758
758
sage: float(x/x + y/y)
759
759
2.0
760
760
"""
761
- return float (self .__numerator) / float (self .__denominator )
761
+ return float (self .__numerator) / float (self ._denominator )
762
762
763
763
def __complex__ (self ):
764
764
"""
@@ -768,7 +768,7 @@ cdef class FractionFieldElement(FieldElement):
768
768
sage: complex(x/(I*x) + (I*y)/y)
769
769
0j
770
770
"""
771
- return complex (self .__numerator) / complex (self .__denominator )
771
+ return complex (self .__numerator) / complex (self ._denominator )
772
772
773
773
def _rational_ (self ):
774
774
r """
@@ -822,12 +822,12 @@ cdef class FractionFieldElement(FieldElement):
822
822
sage: A( C( u)) # optional - sage. rings. number_field
823
823
u
824
824
"""
825
- if self .__denominator .is_one():
825
+ if self ._denominator .is_one():
826
826
return R(self .__numerator)
827
827
else :
828
828
self .reduce()
829
829
num = R(self .__numerator)
830
- inv_den = R(self .__denominator ).inverse_of_unit()
830
+ inv_den = R(self ._denominator ).inverse_of_unit()
831
831
return num * inv_den
832
832
833
833
_real_double_ = _conversion
@@ -847,7 +847,7 @@ cdef class FractionFieldElement(FieldElement):
847
847
Returns self raised to the `right^ {th}` power.
848
848
849
849
Note that we need to check whether or not right is negative so we
850
- don't set ``__numerator`` or ``__denominator `` to an element of the
850
+ don't set ``__numerator`` or ``_denominator `` to an element of the
851
851
fraction field instead of the underlying ring.
852
852
853
853
EXAMPLES::
@@ -877,7 +877,7 @@ cdef class FractionFieldElement(FieldElement):
877
877
1
878
878
"""
879
879
snum = (< FractionFieldElement> self ).__numerator
880
- sden = (< FractionFieldElement> self ).__denominator
880
+ sden = (< FractionFieldElement> self )._denominator
881
881
if right == 0 :
882
882
R = self .parent().ring()
883
883
return self .__class__ (self .parent(),
@@ -904,7 +904,7 @@ cdef class FractionFieldElement(FieldElement):
904
904
(4*t^2 + 4*t)/(t + 2)
905
905
"""
906
906
return self .__class__ (self ._parent,
907
- - self .__numerator, self .__denominator ,
907
+ - self .__numerator, self ._denominator ,
908
908
coerce = False , reduce = False )
909
909
910
910
def __abs__ (self ):
@@ -915,7 +915,7 @@ cdef class FractionFieldElement(FieldElement):
915
915
sage: abs(FractionFieldElement(QQ, -2, 3, coerce=False))
916
916
2/3
917
917
"""
918
- return abs (self .__numerator) / abs (self .__denominator )
918
+ return abs (self .__numerator) / abs (self ._denominator )
919
919
920
920
def __invert__ (self ):
921
921
"""
@@ -929,7 +929,7 @@ cdef class FractionFieldElement(FieldElement):
929
929
if self .is_zero():
930
930
raise ZeroDivisionError (" Cannot invert 0" )
931
931
return self .__class__ (self ._parent,
932
- self .__denominator , self .__numerator, coerce = False , reduce = False )
932
+ self ._denominator , self .__numerator, coerce = False , reduce = False )
933
933
934
934
cpdef _richcmp_(self , other, int op):
935
935
"""
@@ -952,8 +952,8 @@ cdef class FractionFieldElement(FieldElement):
952
952
False
953
953
"""
954
954
return richcmp(self .__numerator *
955
- (< FractionFieldElement> other).__denominator ,
956
- self .__denominator *
955
+ (< FractionFieldElement> other)._denominator ,
956
+ self ._denominator *
957
957
(< FractionFieldElement> other).__numerator, op)
958
958
959
959
def valuation (self , v = None ):
@@ -972,7 +972,7 @@ cdef class FractionFieldElement(FieldElement):
972
972
sage: f.valuation(x^2 + 1)
973
973
1
974
974
"""
975
- return self .__numerator.valuation(v) - self .__denominator .valuation(v)
975
+ return self .__numerator.valuation(v) - self ._denominator .valuation(v)
976
976
977
977
def __bool__ (self ):
978
978
"""
@@ -1025,7 +1025,7 @@ cdef class FractionFieldElement(FieldElement):
1025
1025
sage: (x/y).is_one()
1026
1026
False
1027
1027
"""
1028
- return self .__numerator == self .__denominator
1028
+ return self .__numerator == self ._denominator
1029
1029
1030
1030
def _symbolic_ (self , ring ):
1031
1031
"""
@@ -1044,7 +1044,7 @@ cdef class FractionFieldElement(FieldElement):
1044
1044
sage: symbolic_expression(elt) # optional - sage.symbolic
1045
1045
2/3*(x + y)/(x - y)
1046
1046
"""
1047
- return ring(self .__numerator)/ ring(self .__denominator )
1047
+ return ring(self .__numerator)/ ring(self ._denominator )
1048
1048
1049
1049
def __reduce__ (self ):
1050
1050
"""
@@ -1058,7 +1058,7 @@ cdef class FractionFieldElement(FieldElement):
1058
1058
True
1059
1059
"""
1060
1060
return (make_element,
1061
- (self ._parent, self .__numerator, self .__denominator ))
1061
+ (self ._parent, self .__numerator, self ._denominator ))
1062
1062
1063
1063
def _evaluate_polynomial (self , pol ):
1064
1064
"""
@@ -1170,8 +1170,8 @@ cdef class FractionFieldElement_1poly_field(FractionFieldElement):
1170
1170
"""
1171
1171
See :meth:`reduce`.
1172
1172
"""
1173
- invlc = ~ self .__denominator .leading_coefficient()
1174
- self .__denominator = self .__denominator .monic()
1173
+ invlc = ~ self ._denominator .leading_coefficient()
1174
+ self ._denominator = self ._denominator .monic()
1175
1175
self .__numerator *= invlc
1176
1176
1177
1177
def is_integral (self ):
0 commit comments