anchor.diff:                                             0.0)))))))))))
   
   (define-cuda-kernel (cuda-softmax-xe-derivative)
  -    (void ((group-size int) (xd :mat :io) (n int) (d :mat :input)
  +    (void ((group-size int) (xd :mat :io) (n int)
              (target :mat :input) (softmax :mat :input)))
     (let ((stride (* block-dim-x grid-dim-x)))
       (do ((ia (+ (* block-dim-x block-idx-x) thread-idx-x)
  
positive.code:          (n (* (n-stripes lump) (size lump))))
      (if (use-cuda-p)
          (cuda-softmax-xe group-size x n softmax
                           :grid-dim (list (ceiling (/ n group-size) 256) 1 1)
                           :block-dim (list 256 1 1))
          (lisp-softmax-xe group-size x n softmax))))
  
  (define-lisp-kernel (lisp-softmax-xe)
  
negative.code:           (let* ((ib (+ i b))
                   (target-ib (aref target ib)))
              (when (/= 0.0 target-ib)
                (set sum (+ sum (* target-ib
                                   (- softmax-ia
                                      (if (= a b)
                                          1.0
  