call <- function (S, K, r, sigma, t) { z1 <- (log (S / K) + (r + sigma^2 / 2) * t) / (sigma * sqrt (t)) z2 <- z1 - sigma * sqrt (t) V <- S * pnorm (z1) - K * exp (-r*t) * pnorm (z2) return (V) } put <- function (S, K, r, sigma, t) { z1 <- (log (S / K) + (r + sigma^2 / 2) * t) / (sigma * sqrt (t)) z2 <- z1 - sigma * sqrt (t) V <- K * exp (-r*t) * pnorm (-z2) - S * pnorm (-z1) return (V) }