#Generic negative exponential function with offset Ftaf <- function (t, s3, c, b, a, dc) { .expr1 <- exp(b) .expr3 <- t - a .expr5 <- exp(((-.expr1) * .expr3)) .expr6 <- 1 - .expr5 .value <- c*.expr6 + dc*s3*.expr6 # set gradient attribute .actualArgs <- as.list(c("c", "b", "a", "dc")) .grad <- array(0, c(length(.value), 4), list(NULL, c("c", "b", "a", "dc"))) .grad[, "c"] <- .expr6 .grad[, "b"] <- c * (.expr5 * (.expr1 * .expr3)) .grad[, "a"] <- -(c * (.expr5 * .expr1)) .grad[, "dc"] <- ifelse(s3, .expr6, 0) dimnames(.grad) <- list(NULL, .actualArgs) attr(.value, "gradient") <- .grad # return .value }