A few notes of correction on previous replies: ALGLIB is not a translation of LAPACK, though it did include some routines in its matrix core also seen in LAPACK. It does a lot more, e.g. rational function and radial basis function interpolation, convex non-linear programming, as well as non-convex optimization, neural nets, a solver for differential equations and integration and it has a subset of the functionality of FFTW. This is more akin to MKL - which it accepts a hook to as a library plug-in for some of its routines. In contrast, LAPACK focuses almost exclusively on linear and matrix algebra - which mostly corresponds to the LinAlg module in ALGLIB. There is nothing like optimization, or iterative solvers in it. ALGLIB has a large number of iterative routines, particularly for its optimization routines.
ALGLIB is written in an internal language (AlgoPascal) and translated automatically to its target languages. In particular, there are a lot of translator artifacts in the C++ version, and it's not fully nativized C++, but more like C, with C++ capability simulated on top of it much like what you would get if you had used a cleaner, more intelligent, version of cfront (or of f2c or of some "Pascal to C" convertor). Then, a C++ API wrapper is put on top of it all. The translation is good enough, but sorely misses out on language features of C++ that it could take advantage of by making direct use of them and directly translating the core package to C++.
The AlgoPascal to C/C++ translator has not kept pace with the changes in the target languages. In addition to native multi-threading (including thread-local variables) in C and C++, there is now support for "tuples" in C++, which would really come in handy for the parameter-laden routines!
If you're working with ALGLIB, a quick speed-up would be to replace the floating point comparison functions by macros or in-line functions that equates them to C++'s native point comparison operators. The reason functions were used for floating point comparisons was to get around problems that older compilers had in implementing the comparisons in ways that worked consistently with the quirky architecture of the floating point co-processor on the Intel-based CPU's.
LAPACK includes a default implementation of BLAS, plus room to plug in an external, high-powered, BLAS library, and recommends against using its own default BLAS library, in favor of plugging in an external library, if you can. Its core is in Fortran, though it comes with API shells for C and C++. It supersedes the older EISPACK and LINPACK libraries (according to the cover pages, themselves, of the respective libraries on NetLib).
A front end for those latter two libraries was developed in the 1970's and early 1980's and distributed with version 10 UNIX - and was also written in Fortran - with core functionality for an interactive CLI user interface. Its name is MatLab.
The MatLab you know of today, by MathWorks, is a direct descendant of this, though it has evolved substantially both in terms of its source language (C or almost certainly C++ now), its user interface (GUI written on QT, now) and routines. Like LAPACK has done in recent times, it has also moved into the world of parallelism.
SciLab has more evolved versions of the old MatLab routines and also has a graphics and GUI core, and a large variety of code covering a wide range of fields (e.g. a multi-threaded C++ class for co-routines - which would come in handy for iterative solvers). It is both open and open-ended: I believe that it accepts contributions of new modules. Potentially that could even include a fully-nativized C++ version of ALGLIB or a C++ translation of LAPACK's core, if those were ever produced and provided.
The old MatLab had 3 main set of files, "Mat" had the parser for the front-end language. "Lib" had the core library routines, and "Sys" had the system-dependent routines - including the CLI user interface. It was about 8000 lines in all. There wasn't much in it beyond what you would find in LINPACK, particularly since it was one of the LINPACK/EISPACK co-authors who wrote it.
Since it is now proprietary in its later evolved forms, I can't say what these look like today in source form. However, there is also the freely-distributed answer to MatLab: Octave. Roughly speaking, "Mat" is now "libinterp", "Lib" is "liboctave" and "Sys" is "libgui", and the driver routine is in "src". Each of the lib directories is about 100000-250000 lines, with a lot more functionality in it, in an attempt to keep pace with MatLab. A small part of it is translated from Fortran, bearing heavy imprint of translator artifacts. A quick glance shows that it looks more like LAPACK, in terms of functionality, than MKL or ALGLIB. I don't see any iterative solvers, neural net routines or optimization routines in it.