; what is s

(define (s x y z)
  (let ((s 0))
    (do ((i 0 (+ i 1))) ((<= x i) s)
      (do ((j (+ i 1) (+ j 1))) ((<= y j))
        (do ((k (+ j 1) (+ k 1))) ((<= z k))
          (set! s (+ s 1)))))))

(display (s 2 4 6)) (newline)

(define (f x y z)
  (if (<= x y z)
      (/ (+ (* 2 x)
            (* 3 x x)
            (* x x x)
            (- (* 3 x y))
            (- (* 3 x y y))
            (* z (- (* 6 x y) (* 3 x x) (* 3 x))))
         6)
      0))

(display (f 2 4 6)) (newline)

(define-syntax assert
  (syntax-rules ()
    ((assert expr result)
      (if (not (equal? expr result))
          (for-each display `(
            #\newline "failed assertion:" #\newline
            expr #\newline "expected: " ,result
            #\newline "returned: " ,expr #\newline))))))

(do ((i 0 (+ i 1))) ((= i 10))
  (do ((j 0 (+ j 1))) ((= j 10))
    (do ((k 0 (+ k 1))) ((= k 10))
      (when (<= i j k)
        (assert (s i j k) (f i j k))))))