If you call a library like LAPACK or BLAS (which are written in FORTRAN and use column major order) from a C-like language that uses row major order, won't you lose performance and use a lot of memory due to the creation of transposed matrices? Tests are best, of course, but can anyone with experience tell me whether optimized libraries still improve performance, even after that overhead?
Many of these libraries have C interfaces that swap the meaning of the ordering internally without swapping the data. Also, using C-style double pointers for 2-D matrices is probably the wrong choice in the first place (due to the double lookup), so you can make your data appear column-major by indexing into a linear C array or use libraries that work around these issues.
You can use the identity C^T = (AB)^T = B^T A^T to use BLAS to compute on row-major arrays from C.
In any case, the overhead of transposition is usually not a bottleneck compared to O(N^3) BLAS3 or LAPACK routines, but I should note that I am oft to point out counterexamples from my own research.