func dger(M int, N int, alpha float64, X []float64, incX int, Y []float64, incY int, A []float64, lda int) { C.dger_((*C.int)(unsafe.Pointer(&M)), (*C.int)(unsafe.Pointer(&N)), (*C.double)(unsafe.Pointer(&alpha)), (*C.double)(unsafe.Pointer(&X[0])), (*C.int)(unsafe.Pointer(&incX)), (*C.double)(unsafe.Pointer(&Y[0])), (*C.int)(unsafe.Pointer(&incY)), (*C.double)(unsafe.Pointer(&A[0])), (*C.int)(unsafe.Pointer(&lda))) }
func dger(M int, N int, alpha float64, X []float64, incX int, Y []float64, incY int, A []float64, lda int) { // ?? TODO: protect against index out of bounds panics. C.dger_((*C.int)(unsafe.Pointer(&M)), (*C.int)(unsafe.Pointer(&N)), (*C.double)(unsafe.Pointer(&alpha)), (*C.double)(unsafe.Pointer(&X[0])), (*C.int)(unsafe.Pointer(&incX)), (*C.double)(unsafe.Pointer(&Y[0])), (*C.int)(unsafe.Pointer(&incY)), (*C.double)(unsafe.Pointer(&A[0])), (*C.int)(unsafe.Pointer(&lda))) }