func dgetrsHelper(trans bool, n, nrhs int, a []float64, lda int, ipiv []C.integer, b []float64, ldb int) error { var ( trans_ = transChar(trans) n_ = C.integer(n) nrhs_ = C.integer(nrhs) a_ = ptrFloat64(a) lda_ = C.integer(lda) ipiv_ = ptrInt(ipiv) b_ = ptrFloat64(b) ldb_ = C.integer(ldb) ) var info_ C.integer C.dgetrs_(&trans_, &n_, &nrhs_, a_, &lda_, ipiv_, b_, &ldb_, &info_) info := int(info_) switch { case info < 0: return errInvalidArg(-info) case info == 0: return nil default: panic(errUnknown(info)) } }
// dgetrs_(char *trans, int *n, int *nrhs, double *A, int *lda, // int *ipiv, double *B, int *ldb, int *info); func dgetrs(trans string, N, Nrhs int, A []float64, lda int, ipiv []int32, B []float64, ldb int) int { ctrans := C.CString(trans) defer C.free(unsafe.Pointer(ctrans)) var info int = 0 C.dgetrs_(ctrans, (*C.int)(unsafe.Pointer(&N)), (*C.int)(unsafe.Pointer(&Nrhs)), (*C.double)(unsafe.Pointer(&A[0])), (*C.int)(unsafe.Pointer(&lda)), (*C.int)(unsafe.Pointer(&ipiv[0])), (*C.double)(unsafe.Pointer(&B[0])), (*C.int)(unsafe.Pointer(&ldb)), (*C.int)(unsafe.Pointer(&info))) return info }