Hello,

I am not sure how much support related to GSL you will find on this forum.

It seems like you are using the default BLAS libraries provided by GSL. A good idea is to replace this default BLAS (in this case: the reference CBLAS) by an optimized BLAS library. Optimized means optimized for your machine.

If you are working with very small matrices (say <50x50) then using reference BLAS or optimized BLAS library is not a big deal. Since you are dealing with 200x200 matrices, you will see a difference in term of speed.

So:

use an optimized BLAS library.

Matlab comes with a BLAS library optimized for your system. So no wonder: it is expected that Matlab is faster than your code using GSL and reference BLAS providing the inversion represents the most part of your run.

Yes, both Matlab and GSL are relying on LAPACK routines for LU decomposition and inversion.

Coding a third code that calls LAPACK routines directly is not really useful in your context.

Even the GSL code can be 'criticized'. I am not sure that the GSL code will be any faster than the Matlab one provided you are using the same BLAS library. There can be some advantages in term of memory management and other things. But if 'all' you need from us is matrix inversion, Matlab/Octave offer alternatives easier to use with low overhead.

You can find more on optimized BLAS library at:

http://www.gnu.org/software/gsl/#related
http://www.netlib.org/lapack/faq.html#1.9
http://www.netlib.org/lapack/faq.html#2.5
Julie