anchor.diff:  (defmacro float4-incf-cpu (var val)
     `(setf ,var (float4-add-cpu ,var ,val)))
   
  +(defkernel norm (float ((x float4)))
  +  (return (sqrt (+ (* (float4-x x) (float4-x x))
  +                   (* (float4-y x) (float4-y x))
  +                   (* (float4-z x) (float4-z x))
  +                   (* (float4-w x) (float4-w x))))))
  +
   (defun norm-cpu (val)
     (with-float4-cpu (x y z w) val
       (sqrt (+ (* x x) (* y y) (* z z) (* w w)))))
  
positive.code:                                  (* 2.0 rhoj))
                                (grad-spiky-kernel-cpu dr))))
  
  ;; (defkernel viscosity-term (float4 ((i int) (j int) (dr float4) (v float4*) (rho float*)))
  ;;   (symbol-macrolet ((vi (aref v i))
  ;;                     (vj (aref v j))
  ;;                     (rhoj (aref rho j)))
  ;;     (return (* (/ (* visc pmass (- vj vi))
  ;;                   rhoj)
  ;;                (rap-visc-kernel dr)))))
  
  (defun viscosity-term-cpu (i j dr v rho)
    (symbol-macrolet ((vi (mem-aref v i))
  
negative.code:                            (prs 'float  n))
        ;; with neighbor map
        (with-neighbor-map (nbr info box-min box-max delta capacity) 
          ;; apply given initial condition
          (initialize x v particles)
          ;; loop
          (time
  