Cheers, that's pretty awesome!

But I think I'll do a kind of hybrid method for now, unless I find that doesn't work:

1. Use Cardano to find the 1st root. This includes a > test but values just either side of 0 seem to end up with the same result so it should be OK.

2. Use long division to get a quadratic as you suggested.

3. Use the quadratic equation to find the other 2 roots, as you suggested.


Problem is in step 2. I don't understand the maths. I can do the long division. Then I end up with a quadratic quotient. Do I have to set this to 0 and solve? What happens to the remainder? I'm just not sure how this makes sense

I could copy and paste your code but I'd rather know what's going on. I got into this problem in the first place because of somebody else's code.