I need to implement S = A' * A where A' is the transpose of A. Is it possible to do it like this: gsl_blas_dgemm( CblasTrans, CblasNoTrans, 1.0, A, A, 0.0, S ); or do I need to copy the contents of a into a temporary matrix first gsl_matrix_memcpy( B, A ); gsl_blas_dgemm( CblasTrans, CblasNoTrans, 1.0, A, B, 0.0, S ); Thanks, Danny