I am designing a software that has to find the roots of polynomials. I have to write this software from scratch as opposed to using an already existing library due to company instructions. I currently know three main methods of finding roots: the Secant method, the Newton-Raphson method and the Interval Bisection method. I will need to implement the most efficient one of these algorithms in my software, so could someone please let me know how these methods compare in terms of speed? Or if anyone knows any different methods that could potentially be more efficient the three mentioned above, could they please mention them too? Thanks.
It is currently my understanding that the Interval-Bisection method is slower than the Newton-Raphson one. However, I also know that the Newton-Raphson method does not always reach the correct answer due to asymptotes. In regards to this, would it be more efficient to mix two, or more, algorithms, for example, loop through the Newton-Raphson method for a set number of times and then switch to the slower Interval Bisection method after that in case the Newton-Raphson method never reaches an answer? If this is the case, which algorithms would be the most efficient to implement together? I do not currently know how the Secant method compares to the other two in terms of efficiency, so any insight on that would be appreciated too.
Thanks very much for your time.
Update
I would be using these methods to find the Internal Rate of Return (IRR). Therefore, I would not necessarily need to find the complex roots as I will be dealing with finance. However, it could be a very large polynomial depending on how many payments there are.