--- Phil Steitz <[EMAIL PROTECTED]> wrote: > 0. To help debug the SplineInterpolater (PR #28019 et al), I need to > expose the coefficients in o.a.c.m.analysis.Polynomial as a read-only > property (returning an array copy). Any objections to adding this?
+1 if you do it by adding a package-level-accessible (i.e., no access modifier keyword; the JUnit test would be able to access it by being in the same package) getter method -- which sounds like what you're proposing. > While reviewing the code, I also noticed that the current impl uses > "naive" evaluation (using Math.pow, etc.). I would like to change this to > use Horner's Method. Here is what I have ready to commit: > > 1. Add protected static double evaluate(double[] coefficients, double > argument) implementing Horner to get the function value; and change > value(double) to just call this. > > 2. Add protected static double[] differentiate(double[] coefficients) to > return the coefficients of the derivative of the polynomial with > coefficients equal to the actual parameter. Then change > firstDerivative(x) to just return > evaluate(differentiate(coefficients), x). Similar for secondDerivative. > I could adapt Horner for the derivatives, but that seems messy to me and > the slight memory cost to create the temp arrays seems worth it. > > 3. I would also like to add > public PolynomialFunction derivative() { > return new PolynomialFunction(differentiate(coefficients)); > } > > Any objections to this? +1, these sound reasonable. > Interestingly, while Horner's method should give better numerics, it > actually fails to get within 1E-15 for one of the quintic test cases, > performing worse than the "naive" impl. The error is in the 16th > significant digit, which is not surprising. I would like to change the > tolerance to 1E-12 (current tests actually succeed at 1E-14). > > Phil I wonder why that is? Does Math.pow() use higher-than-double precision and then cast down to double? I think we should consider carefully what is implied by the fact that Horner's method has worse precision. Also, I would in principle like to leave the tolerance as tight as possible, 1E-14 in this case. Al __________________________________ Do you Yahoo!? Yahoo! Finance Tax Center - File online. File on time. http://taxes.yahoo.com/filing.html --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]