IMSL vs. open source: free doesn’t always mean better
Recently, one of my account executives asked: “Why does IMSL go to such lengths to add error handling?”
Well, because our customers can’t afford even just one wrong answer.
I also get asked: “Why can’t I just use open source algorithms? Don’t they produce the same results?”
Simply put, open source algorithms are not always the best answer. IMSL Numerical Libraries offer more error handling than open source libraries (and sometimes, they offer none!). I hear stories of using open source libraries where research or business decisions are based on results from algorithms that are later found to be incorrect. Or the problems were ill-conditioned for the algorithm selected, yet the algorithm provided an answer.
IMSL has been around for over 40 years, so our customers trust the results. We first verify proper input to set up the problem and, if something looks wrong, tell them why the input is incorrect. Second, we inform them during execution whether the algorithm is making good progress or not, we check for any ill-conditioning that cannot be determined strictly from input parameters, and we check for numerical instability that might cause the execution of the algorithm to crash unexpectedly. The resulting error message provides a nice exit from the algorithm and provides suggestions of what to do next. IMSL error messages can be caught, allowing the calling program to determine next steps based on the error caught from IMSL. Open source algorithms don’t offer this level of security.
Without proper error checking in IMSL, the algorithms might provide incorrect results or solve ill-conditioned problems and provide results that are incorrect. Worse case, without proper error checking, an algorithm could cause the application to crash unexpectedly.
Another critical feature about the IMSL algorithms is their optional arguments, which allow a great deal of flexibility, allowing the user to have control over how the algorithm behaves.
In IMSL, computations are not affected by underflow if the system replaces an underflow with the value zero. Therefore, normally system error messages indicating underflow can be ignored. IMSL also avoids overflow. A program that produces system error messages indicating overflow should be examined for programming errors such as incorrect input data, mismatch of argument types, or improper dimensions. In many cases, to help the developer out, the documentation for a function points out common pitfalls that can lead to failure of the algorithm.
When you want to know exactly what’s going on – and need to know whether the algorithm is working correctly – ditch the open source algorithms and use IMSL Numerical Libraries.