Skip to content

Commit 69b4737

Browse files
Merge pull request #39 from oscarbenjamin/pr_coverage
Add tests for modules wrapping flint
2 parents 6e55d0a + 47d6c8e commit 69b4737

File tree

7 files changed

+1018
-20
lines changed

7 files changed

+1018
-20
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
build/*
22
dist/*
33
src/flint/*.c
4+
src/flint/*.html
45
doc/build/*
56
fmake*
67
*.whl
@@ -13,3 +14,4 @@ MANIFEST
1314
.local
1415
*.egg-info
1516
.coverage
17+
*.swp

bin/activate

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@ export C_INCLUDE_PATH=$(pwd)/.local/include
22
export LIBRARY_PATH=$(pwd)/.local/lib
33
export LD_LIBRARY_PATH=$(pwd)/.local/lib
44
export PYTHONPATH=$(pwd)/src
5+
source .local/venv/bin/activate

bin/coverage.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ export PYTHON_FLINT_COVERAGE=true
3333

3434
python setup.py build_ext --inplace
3535

36-
coverage run test/test.py
36+
pytest --cov flint test/test.py
3737
coverage run --append test/dtest.py
3838

39-
coverage report -m
39+
#coverage report -m
4040
coverage html

setup.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@
7171
name='python-flint',
7272
cmdclass={'build_ext': build_ext},
7373
ext_modules=cythonize(ext_modules, compiler_directives=compiler_directives),
74+
#ext_modules=cythonize(ext_modules, compiler_directives=compiler_directives, annotate=True),
7475
packages=['flint'],
7576
package_dir={'': 'src'},
7677
description='Bindings for FLINT and Arb',

src/flint/fmpq_series.pyx

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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

src/flint/fmpz_series.pyx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,15 @@ cdef class fmpz_series(flint_series):
6868
fmpz_poly_set_list(self.val, [val])
6969
fmpz_poly_truncate(self.val, max(0, self.prec))
7070

71+
def _equal_repr(self, other):
72+
cdef bint r
73+
if not typecheck(other, fmpz_series):
74+
return False
75+
r = fmpz_poly_equal((<fmpz_series>self).val, (<fmpz_series>other).val)
76+
if r:
77+
r = (<fmpz_series>self).prec == (<fmpz_series>other).prec
78+
return r
79+
7180
def __len__(self):
7281
return fmpz_poly_length(self.val)
7382

0 commit comments

Comments
 (0)