(bind-func fluid_project
  (lambda (velocx:double* velocy:double* p:double* div:double* iter Ny N)
    (let ((j 0)
          (i 0)
          (jj 0)
          (ii 0))
      (dotimes (j (- Ny 1))
        (dotimes (i (- N 1))
          (pset! div (+ (+ i 1) (* (+ j 1) N))
                 (* -0.5 (/ (+ (- (pref velocx (+ (+ i 2) (* (+ j 1) N)))
                                  (pref velocx (+ i (* (+ j 1) N))))
                               (- (pref velocy (+ (+ i 1) (* (+ j 2) N)))
                                  (pref velocy (+ (+ i 1) (* j N)))))
                            (i64tod N))))
          (pset! p (+ (+ i 1) (* (+ j 1) N)) 0.0)
          1))