[Bug libstdc++/51133] New: Incorrect implementation of std::tr1::hermite()
dickphd at gmail dot com
gcc-bugzilla@gcc.gnu.org
Mon Nov 14 22:40:00 GMT 2011
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51133
Bug #: 51133
Summary: Incorrect implementation of std::tr1::hermite()
Classification: Unclassified
Product: gcc
Version: 4.6.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: libstdc++
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: dickphd@gmail.com
Created attachment 25820
--> http://gcc.gnu.org/bugzilla/attachment.cgi?id=25820
Patch fixing error in poly_hermite.tcc recursion relation
The hermite() function in std::tr1, defined in
libstdc++-v3/include/tr1/poly_hermite.tcc uses a recursion relation which has a
sign error. The following line:
__H_n = 2 * (__x * __H_nm1 + (__i - 1) * __H_nm2);
should be changed to:
__H_n = 2 * (__x * __H_nm1 - (__i - 1) * __H_nm2);
I have attached a patch (generated inside poly_hermite.tcc's folder) which
makes this change. This patch has been tested with gcc 4.6.1 by checking via
numerical integration that the resultant polynomial has the correct
orthogonality. As implemented, the result of this numerical integration was
extremely accurate to at least 14 decimal places at up to n=84 for double
precision.
More information about the Gcc-bugs
mailing list