anchor.diff:        (assert (zerop (mod n-stripes batch-size)) ()
                 "BATCH-SIZE ~S is not a divisor of N-STRIPES ~S." batch-size
                 n-stripes))
  -    (flet ((foo (batch-mean batch-stddev)
  +    (flet ((foo (batch-mean batch-variance)
                (with-ones (ones (list batch-size 1))
  -               ;; Calculate BATCH-MEAN and BATCH-STDDEV, update
  -               ;; POPULATION-MEAN and POPULATION-STDDEV.
  +               ;; Calculate BATCH-MEAN and BATCH-VARIANCE, update
  +               ;; POPULATION-MEAN and POPULATION-VARIANCE.
                  (when *in-training-p*
                    (incf (n-steps state))
                    (sum! nx batch-mean :axis 0)
  
positive.code:   (let* ((state (batch-normalization lump))
           (x (x lump))
           (population-mean (ensure-population-mean state))
           (population-stddev (ensure-population-stddev state))
           (n-stripes (n-stripes x))
           (batch-size (if (member (batch-size state) '(nil :use-population))
                           n-stripes
  
negative.code:                  ;; x-mu* = x - mu*
                   (copy! nx x-mu*)
                   (gemm! -1 ones batch-mean 1 x-mu*)
                   ;; 1/stddev* = 1 ./ sqrt(variance + \epsilon)
                   (gemm! 1 ones batch-variance 0 1/stddev*)
                   (.+! (variance-adjustment state) 1/stddev*)
                   (.sqrt! 1/stddev*)
                   (.inv! 1/stddev*)
                   ;; dl/dx^.*1/stddev = dl/dy .* gamma* .* 1/stddev*
                   (geem! 1 dl/dy 1/stddev* 0 dl/dx^.*1/stddev)
  