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