|
|
Le 20/10/2016 à 09:39, robfi680 a écrit :
> I was just looking at the source code for POVRay 3.7 for solving polynomials. In
> the default case for Solve_Polynomial it looks to me like it solves the
> polynomial twice for orders higher than four when a root is eliminated. I am
> trying to understand the code for my own use. Could there be a break statement
> missing ? Otherwise why does it solve for order n-1 and then n ?
>
> The code looks like:
> default:
>
> if (epsilon > 0.0)
> {
> if ((c[n-1] != 0.0) && (fabs(c[n]/c[n-1]) < epsilon))
> {
> Thread->Stats()[Roots_Eliminated]++;
>
> roots = polysolve(n-1, c, r);
> }
> }
>
> /* Solve n-th order polynomial. */
>
> roots = polysolve(n, c, r);
>
> break;
>
>
>
The interesting part is that master branch is already corrected : yes, a
break is/was missing.
Now, it only occurs for 5th and more order polynomial, something that is
rarely seen.
The correction was done on 8th September 2016, found by static code
analysis.
Post a reply to this message
|
|