summaryrefslogtreecommitdiff
path: root/numpy/polynomial/chebyshev.py
diff options
context:
space:
mode:
Diffstat (limited to 'numpy/polynomial/chebyshev.py')
-rw-r--r--numpy/polynomial/chebyshev.py47
1 files changed, 29 insertions, 18 deletions
diff --git a/numpy/polynomial/chebyshev.py b/numpy/polynomial/chebyshev.py
index 662f664a9..2b6d7b4bb 100644
--- a/numpy/polynomial/chebyshev.py
+++ b/numpy/polynomial/chebyshev.py
@@ -846,25 +846,29 @@ def chebder(cs, m=1, scl=1) :
array([ 12., 96.])
"""
- # cs is a trimmed copy
- [cs] = pu.as_series([cs])
- if m < 0 :
- raise ValueError, "The order of derivation must be positive"
+ cnt = int(m)
+
+ if cnt != m:
+ raise ValueError, "The order of derivation must be integer"
+ if cnt < 0 :
+ raise ValueError, "The order of derivation must be non-negative"
if not np.isscalar(scl) :
raise ValueError, "The scl parameter must be a scalar"
- if m == 0 :
+ # cs is a trimmed copy
+ [cs] = pu.as_series([cs])
+ if cnt == 0:
return cs
- elif m >= len(cs) :
+ elif cnt >= len(cs):
return cs[:1]*0
else :
zs = _cseries_to_zseries(cs)
- for i in range(m) :
+ for i in range(cnt):
zs = _zseries_der(zs)*scl
return _zseries_to_cseries(zs)
-def chebint(cs, m=1, k=[], lbnd=0, scl=1) :
+def chebint(cs, m=1, k=[], lbnd=0, scl=1):
"""
Integrate a Chebyshev series.
@@ -941,11 +945,15 @@ def chebint(cs, m=1, k=[], lbnd=0, scl=1) :
array([-1., 1., -1., -1.])
"""
+ cnt = int(m)
if np.isscalar(k) :
k = [k]
- if m < 1 :
- raise ValueError, "The order of integration must be positive"
- if len(k) > m :
+
+ if cnt != m:
+ raise ValueError, "The order of integration must be integer"
+ if cnt < 0 :
+ raise ValueError, "The order of integration must be non-negative"
+ if len(k) > cnt :
raise ValueError, "Too many integration constants"
if not np.isscalar(lbnd) :
raise ValueError, "The lbnd parameter must be a scalar"
@@ -954,13 +962,16 @@ def chebint(cs, m=1, k=[], lbnd=0, scl=1) :
# cs is a trimmed copy
[cs] = pu.as_series([cs])
- k = list(k) + [0]*(m - len(k))
- for i in range(m) :
- zs = _cseries_to_zseries(cs)*scl
- zs = _zseries_int(zs)
- cs = _zseries_to_cseries(zs)
- cs[0] += k[i] - chebval(lbnd, cs)
- return cs
+ if cnt == 0:
+ return cs
+ else:
+ k = list(k) + [0]*(cnt - len(k))
+ for i in range(cnt) :
+ zs = _cseries_to_zseries(cs)*scl
+ zs = _zseries_int(zs)
+ cs = _zseries_to_cseries(zs)
+ cs[0] += k[i] - chebval(lbnd, cs)
+ return cs
def chebval(x, cs):
"""Evaluate a Chebyshev series.