Skip to content

Commit 0ea5382

Browse files
committed
add test for abs
1 parent fbbded3 commit 0ea5382

2 files changed

Lines changed: 15 additions & 3 deletions

File tree

remez/remez.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ def _solve_remez_system(xs, fs, degree, signs):
3131
return coeffs, E
3232

3333

34-
def _eval_poly(coefs, x):
34+
def _eval_poly(coefs: np.ndarray, x: float):
3535
return np.polyval(coefs[::-1], x)
3636

3737

@@ -162,7 +162,7 @@ def remez(
162162
class Piece:
163163
a: float # Interval start.
164164
b: float # Interval end.
165-
coefs: list[float] # Polynomial coefficients, in increasing power order.
165+
coefs: np.ndarray # Polynomial coefficients, in increasing power order.
166166

167167

168168
@dataclass(frozen=True)
@@ -211,7 +211,7 @@ def can_approx_on(right: float):
211211
ok, coeffs, err, info = can_approx_on(b)
212212
if ok:
213213
pieces.append(Piece(left, b, coeffs))
214-
return PiecewisePolynomial(pieces)
214+
break
215215
# Otherwise binary search for largest right endpoint in (left,b] for which approximates OK.
216216
lo = left + 1e-15
217217
hi = b

remez/remez_test.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,3 +47,15 @@ def test_exp():
4747

4848
def test_arcsin():
4949
_check_function(np.arcsin, (-0.5, 0.5), 5, 1e-7, max_num_pieces=3)
50+
51+
52+
def test_abs():
53+
f_approx = remez_piecewise(np.abs, (-100, 100), 1, 1e-7)
54+
assert len(f_approx.pieces) == 2
55+
p0, p1 = f_approx.pieces
56+
assert np.isclose(p0.a, -100)
57+
assert np.isclose(p0.b, 0)
58+
assert np.allclose(f_approx.pieces[0].coefs, [0, -1])
59+
assert np.isclose(p1.a, 0)
60+
assert np.isclose(p1.b, 100)
61+
assert np.allclose(f_approx.pieces[1].coefs, [0, 1])

0 commit comments

Comments
 (0)