// For triangular matrix A and vector X solve // X = inv(A) * X or X = inv(A.T) * X func dtpsv(uplo, transA, diag string, N int, Ap []float64, X []float64, incX int) { cuplo := C.CString(uplo) defer C.free(unsafe.Pointer(cuplo)) ctransA := C.CString(transA) defer C.free(unsafe.Pointer(ctransA)) cdiag := C.CString(diag) defer C.free(unsafe.Pointer(cdiag)) C.dtpsv_(cuplo, ctransA, cdiag, (*C.int)(unsafe.Pointer(&N)), (*C.double)(unsafe.Pointer(&Ap[0])), (*C.double)(unsafe.Pointer(&X[0])), (*C.int)(unsafe.Pointer(&incX))) }
// For triangular matrix A and vector X solve // X = inv(A) * X or X = inv(A.T) * X func dtpsv(uplo, transA, diag string, N int, Ap []float64, X []float64, incX int) { cuplo := C.CString(uplo) defer C.free(unsafe.Pointer(cuplo)) ctransA := C.CString(transA) defer C.free(unsafe.Pointer(ctransA)) cdiag := C.CString(diag) defer C.free(unsafe.Pointer(cdiag)) // ?? TODO: protect against index out of bounds panics. C.dtpsv_(cuplo, ctransA, cdiag, (*C.int)(unsafe.Pointer(&N)), (*C.double)(unsafe.Pointer(&Ap[0])), (*C.double)(unsafe.Pointer(&X[0])), (*C.int)(unsafe.Pointer(&incX))) }