(define (calc-sin x n)
  (define (iter pos old-x old-fac old-sign res)
    (if (> pos n)
        res
        (let* ((i (- (* 2 pos) 1))
               (y (* x x))
               (new-x (* y old-x))
               (new-fac (* old-fac i (- i 1)))
               (new-sign (- old-sign)))
          (iter (+ pos 1) new-x new-fac new-sign (+ res (* new-sign (/ new-x new-fac)))))))
  (iter 2 x 1 +1 x))