VrArrayPtrCF32 BlasComplexSingle::mat_ldiv(int matrix_order, VrArrayPtrCF32 A, VrArrayPtrCF32 B) { VrArrayPtrCF32 C = vec_copy(VR_GET_NDIMS_CF32(B),B); VrArrayPtrCF32 D = vec_copy(VR_GET_NDIMS_CF32(A),A); float complex * data= VR_GET_DATA_CF32(D); float complex * out_data=VR_GET_DATA_CF32(C); long int lda=(long int)VR_GET_DIMS_CF32(D)[0]; long int ldb= (long int)VR_GET_DIMS_CF32(C)[0]; long int n=(long int )VR_GET_DIMS_CF32(D)[1]; long int nrhs= (long int )VR_GET_DIMS_CF32(C)[1]; int *IPIV=(int*)VR_MALLOC(sizeof(int)*n); long int info=0; info= LAPACKE_cgesv(LAPACK_COL_MAJOR,n,nrhs,data,lda,IPIV,out_data,ldb); return C; }
template <> inline int gesvd(const char order, const int N, const int M, complex<float> *A, const int LDA, int *IPIV, complex<float> *B, const int LDB) { return LAPACKE_cgesv(order, N, M, A, LDA, IPIV, B, LDB); }