summaryrefslogtreecommitdiff
path: root/numpy/polynomial/hermite_e.py
diff options
context:
space:
mode:
Diffstat (limited to 'numpy/polynomial/hermite_e.py')
-rw-r--r--numpy/polynomial/hermite_e.py15
1 files changed, 11 insertions, 4 deletions
diff --git a/numpy/polynomial/hermite_e.py b/numpy/polynomial/hermite_e.py
index daed05008..0511307a4 100644
--- a/numpy/polynomial/hermite_e.py
+++ b/numpy/polynomial/hermite_e.py
@@ -287,10 +287,17 @@ def hermefromroots(roots) :
return np.ones(1)
else :
[roots] = pu.as_series([roots], trim=False)
- prd = np.array([1], dtype=roots.dtype)
- for r in roots:
- prd = hermesub(hermemulx(prd), r*prd)
- return prd
+ roots.sort()
+ n = len(roots)
+ p = [hermeline(-r, 1) for r in roots]
+ while n > 1:
+ m = n//2
+ tmp = [hermemul(p[i], p[i+m]) for i in range(m)]
+ if n%2:
+ tmp[0] = hermemul(tmp[0], p[-1])
+ p = tmp
+ n = m
+ return p[0]
def hermeadd(c1, c2):