@@ -41,7 +41,7 @@ cdef class fmpq_series(flint_series):
4141 if val is not None :
4242 if typecheck(val, fmpq_series):
4343 fmpq_poly_set(self .val, (< fmpq_series> val).val)
44- self .prec = min ((< fmpz_series > val).prec, getcap())
44+ self .prec = min ((< fmpq_series > val).prec, getcap())
4545 elif typecheck(val, fmpz_series):
4646 fmpq_poly_set_fmpz_poly(self .val, (< fmpz_series> val).val)
4747 self .prec = min ((< fmpz_series> val).prec, getcap())
@@ -62,6 +62,15 @@ cdef class fmpq_series(flint_series):
6262 raise ZeroDivisionError (" cannot create fmpq_series with zero denominator" )
6363 fmpq_poly_scalar_div_fmpz(self .val, self .val, (< fmpz> den).val)
6464
65+ def _equal_repr (s , t ):
66+ cdef bint r
67+ if not typecheck(t, fmpq_series):
68+ return False
69+ r = fmpq_poly_equal((< fmpq_series> s).val, (< fmpq_series> t).val)
70+ if r:
71+ r = (< fmpq_series> s).prec == (< fmpq_series> t).prec
72+ return r
73+
6574 def __len__ (self ):
6675 return fmpq_poly_length(self .val)
6776
@@ -197,7 +206,7 @@ cdef class fmpq_series(flint_series):
197206 u = fmpq_series.__new__ (fmpq_series)
198207
199208 if fmpq_poly_is_zero((< fmpq_series> s).val):
200- u.cap = cap
209+ ( < fmpq_series > u).prec = cap
201210 return u
202211
203212 sval = (< fmpq_series> s).valuation()
@@ -236,6 +245,7 @@ cdef class fmpq_series(flint_series):
236245 return fmpq_series._div_(s, t)
237246
238247 # generic exponentiation (fallback code)
248+ # XXX: use fmpq_poly_pow_trunc instead?
239249 def __pow__ (s , ulong exp , mod ):
240250 if mod is not None :
241251 raise NotImplementedError (" modular exponentiation" )
@@ -308,7 +318,7 @@ cdef class fmpq_series(flint_series):
308318 cdef bint one_constant_term(s):
309319 if fmpq_poly_is_zero((< fmpq_series> s).val):
310320 return False
311- if fmpz_is_one (& ((< fmpq_series> s).val.coeffs[0 ])):
321+ if fmpz_equal (& ((< fmpq_series> s).val.coeffs[0 ]), ( < fmpq_series > s).val.den ):
312322 return True
313323 return False
314324
0 commit comments