#include "linalg.h"namespace mimas {template<>int getrf_< double >::operator()( integer *m, integer *n, double *a,integer *lda, integer *ipiv, integer *info )const{return dgetrf_( m, n, a, lda, ipiv, info );}template<>int getrf_< float >::operator()( integer *m, integer *n, float *a,integer *lda, integer *ipiv, integer *info )const{return sgetrf_( m, n, a, lda, ipiv, info );}template<>int getri_< double >::operator()( integer *n, double *a, integer *lda,integer *ipiv, double *work,integer *lwork, integer *info ) const{return dgetri_( n, a, lda, ipiv, work, lwork, info );}template<>int getri_< float >::operator()( integer *n, float *a, integer *lda,integer *ipiv, float *work,integer *lwork, integer *info ) const{return sgetri_( n, a, lda, ipiv, work, lwork, info );}template<>int gglse_< double >::operator()( integer *m, integer *n, integer *p,double *a, integer *lda, double *b,integer *ldb, double *c__, double *d__,double *x, double *work, integer *lwork,integer *info ){return dgglse_( m, n, p, a, lda, b, ldb, c__, d__, x, work, lwork, info );}template<>int gglse_< float >::operator()( integer *m, integer *n, integer *p,float *a, integer *lda, float *b,integer *ldb, float *c__, float *d__,float *x, float *work, integer *lwork,integer *info ){return sgglse_( m, n, p, a, lda, b, ldb, c__, d__, x, work, lwork, info );}template<>int gels_< double >::operator()( char *trans, integer *m, integer *n,integer *nrhs, double *a, integer *lda,double *b, integer *ldb, double *work,integer *lwork, integer *info ) const{return dgels_( trans, m, n, nrhs, a, lda, b, ldb, work, lwork, info );}template<>int gels_< float >::operator()( char *trans, integer *m, integer *n,integer *nrhs, float *a, integer *lda,float *b, integer *ldb, float *work,integer *lwork, integer *info ) const{return sgels_( trans, m, n, nrhs, a, lda, b, ldb, work, lwork, info );}template<>int gesvd_< double >::operator()( char *jobu, char *jobvt, integer *m,integer *n, double *a, integer *lda,double *s, double *u, integer *ldu,double *vt, integer *ldvt, double *work,integer *lwork, integer *info) const{return dgesvd_( jobu, jobvt, m, n, a, lda, s, u, ldu, vt, ldvt, work, lwork,info );}template<>int gesvd_< float >::operator()( char *jobu, char *jobvt, integer *m,integer *n, float *a, integer *lda,float *s, float *u, integer *ldu,float *vt, integer *ldvt, float *work,integer *lwork, integer *info) const{return sgesvd_( jobu, jobvt, m, n, a, lda, s, u, ldu, vt, ldvt, work, lwork,info );}template<>int gesdd_< double >::operator()( char *jobz, integer *m, integer *n,double *a, integer *lda, double *s,double *u, integer *ldu, double *vt,integer *ldvt, double *work, integer *lwork,integer *iwork, integer *info ){return dgesdd_( jobz, m, n, a, lda, s, u, ldu, vt, ldvt, work, lwork,iwork, info );}template<>int gesdd_< float >::operator()( char *jobz, integer *m, integer *n,float *a, integer *lda, float *s,float *u, integer *ldu, float *vt,integer *ldvt, float *work, integer *lwork,integer *iwork, integer *info ){return sgesdd_( jobz, m, n, a, lda, s, u, ldu, vt, ldvt, work, lwork,iwork, info );}template<>int syev_< double >::operator()( char *jobz, char *uplo, integer *n,double *a, integer *lda, double *w,double *work, integer *lwork,integer *info)const{return dsyev_( jobz, uplo, n, a, lda, w, work, lwork, info );}template<>int syev_< float >::operator()( char *jobz, char *uplo, integer *n,float *a, integer *lda, float *w,float *work, integer *lwork,integer *info )const{return ssyev_( jobz, uplo, n, a, lda, w, work, lwork, info );}template<>int pptrf_< double >::operator()( char *uplo, integer *n, double *ap,integer *info) const{return dpptrf_( uplo, n, ap, info );}template<>int pptrf_< float >::operator()( char *uplo, integer *n, float *ap,integer *info) const{return spptrf_( uplo, n, ap, info );}};