The choice of a typical library depends on a diverse range of requirements such as: desired features (for e.g.: large dimensional linear algebra, parallel computation, partial differential equations), commercial/opensource nature, readability of API, portability or platform/compiler dependence (for e.g.: Linux, Windows, Visual C++, GCC), performance in speed, ease-of-use, continued support from developers, standard compliance, specialized optimization in code for specific application scenarios or even the size of the code-base to be installed.
As we find comprehensive surveys rarely available, there is almost always (at least initially) a difficult choice among a number of possible libraries. Often it tends to be at the discretion of the user based on his own taste and comforts, only due to the lack of proper information.