-
Notifications
You must be signed in to change notification settings - Fork 88
Open
Labels
Description
Describe the bug
1-dimensional Gaussian quadrature with orders more than 118 throws out a numpoly
error.
To Reproduce
>>> import chaospy
>>> chaospy.__version__
'4.3.13'
>>> cpy_dist = chaospy.Iid(chaospy.Uniform(0, 1), 1)
>>> ex_quadx_np, ex_quadw_np = chaospy.generate_quadrature(
... order=128, dist=cpy_dist, rule='gaussian',
... recurrence_algorithm='stieltjes', sparse=False)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "./venv/lib/python3.8/site-packages/chaospy/quadrature/frontend.py", line 171, in generate_quadrature
abscissas, weights = _generate_quadrature(
File "./venv/lib/python3.8/site-packages/chaospy/quadrature/frontend.py", line 287, in _generate_quadrature
abscissas, weights = quad_function(order, dist, **parameters)
File "./venv/lib/python3.8/site-packages/chaospy/quadrature/gaussian.py", line 81, in gaussian
coefficients = chaospy.construct_recurrence_coefficients(
File "./venv/lib/python3.8/site-packages/chaospy/recurrence/frontend.py", line 117, in construct_recurrence_coefficients
coeffs, _, _ = stieltjes(order, dist, rule=rule, tolerance=tolerance)
File "./venv/lib/python3.8/site-packages/chaospy/recurrence/stieltjes.py", line 68, in stieltjes
return analytical_stieltjes(order=order, dist=dist)
File "./venv/lib/python3.8/site-packages/chaospy/recurrence/stieltjes.py", line 180, in analytical_stieltjes
orth = numpoly.polynomial(orth[1:]).T
File "./venv/lib/python3.8/site-packages/numpoly/construct/polynomial.py", line 137, in polynomial
poly = compose_polynomial_array(
File "./venv/lib/python3.8/site-packages/numpoly/construct/compose.py", line 41, in compose_polynomial_array
[
File "./venv/lib/python3.8/site-packages/numpoly/construct/compose.py", line 42, in <listcomp>
numpoly.expand_dims(numpoly.aspolynomial(array, dtype=dtype), axis=0)
File "./venv/lib/python3.8/site-packages/numpoly/array_function/expand_dims.py", line 38, in expand_dims
return numpoly.polynomial(out, names=a.indeterminants)
File "./venv/lib/python3.8/site-packages/numpoly/construct/polynomial.py", line 104, in polynomial
poly = numpoly.ndpoly.from_attributes(
File "./venv/lib/python3.8/site-packages/numpoly/baseclass.py", line 387, in from_attributes
return numpoly.polynomial_from_attributes(
File "./venv/lib/python3.8/site-packages/numpoly/construct/from_attributes.py", line 72, in polynomial_from_attributes
exponents, coefficients, names = clean.postprocess_attributes(
File "./venv/lib/python3.8/site-packages/numpoly/construct/clean.py", line 106, in postprocess_attributes
raise PolynomialConstructionError(
numpoly.construct.clean.PolynomialConstructionError: expected len(exponents) == len(coefficients_); found 119 != 120
>>>
Expected behavior
It should not raise any errors. This is concerning since smaller orders may be suffering from a related bug.
Desktop (please complete the following information):
- OS: Linux (CentOS 7.9)
- Python version: 3.8.8
- Chaospy version: 4.3.13
Additional context
None