POV-Ray : Newsgroups : povray.programming : solving polynomials : Re: solving polynomials Server Time10 Aug 2022 15:53:50 EDT (-0400)
 Re: solving polynomials
 From: Le Forgeron Date: 20 Oct 2016 14:02:44 Message: <580906c4@news.povray.org>
```
{
"@context": "https://schema.org",
"@type": "DiscussionForumPosting",
"@id": "#580906c4%40news.povray.org",
"dateCreated": "2016-10-20T18:02:44+00:00",
"datePublished": "2016-10-20T18:02:44+00:00",
"author": {
"@type": "Person",
"name": "Le Forgeron"
}
}
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))
>     {
>
>      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.
```