VrArrayPtrCF64 BlasComplexDouble::mat_ldiv(int matrix_order ,VrArrayPtrCF64 A, VrArrayPtrCF64 B) {

    VrArrayPtrCF64 C = vec_copy(VR_GET_NDIMS_CF64(B),B);
   VrArrayPtrCF64 D = vec_copy(VR_GET_NDIMS_CF64(A),A);
   double complex* data= VR_GET_DATA_CF64(D);
   double complex * out_data=VR_GET_DATA_CF64(C);
   long int lda=(long int)VR_GET_DIMS_CF64(D)[0];
   long int ldb= (long int)VR_GET_DIMS_CF64(C)[0];
   long int n=(long int )VR_GET_DIMS_CF64(D)[1];
   long int nrhs= (long int )VR_GET_DIMS_CF64(C)[1];
  int  *IPIV=(int*)VR_MALLOC(sizeof(int)*n);
  long int info=0;
  
 // dgesv_(&n,&nrhs,data,&lda,IPIV,out_data,&ldb,&info);
    info= LAPACKE_zgesv(LAPACK_COL_MAJOR,n,nrhs,data,lda,IPIV,out_data,ldb);

  
 return C; 
}
Exemple #2
0
template <> inline
int gesvd(const char order, const int N, const int M, complex<double> *A, const int LDA, int *IPIV, complex<double> *B, const int LDB)
{
	return LAPACKE_zgesv(order, N, M, A, LDA, IPIV, B, LDB);
}