Implements all standard mathematical functions for dual numbers via the chain rule: f(dual(a, b)) = dual(f(a), df(a) * b).

Supported functions: abs, sign, sqrt, floor, ceiling, trunc, round, exp, expm1, log, log2, log10, log1p, cos, sin, tan, cospi, sinpi, tanpi, acos, asin, atan, cosh, sinh, tanh, acosh, asinh, atanh, gamma, lgamma, digamma, trigamma, cumsum, factorial, lfactorial.

# S4 method for class 'dualr'
exp(x)

# S4 method for class 'dualr'
sqrt(x)

# S4 method for class 'dualr'
Math(x)

Arguments

x

A dual number.

Value

A dual with the function applied to the value and the derivative propagated via the chain rule.

Examples

x <- dual_variable(pi / 4)
value(sin(x))  # sin(pi/4)
#> [1] 0.7071068
deriv(sin(x))  # cos(pi/4)
#> [1] 0.7071068

y <- dual_variable(2)
value(exp(y))  # exp(2)
#> [1] 7.389056
deriv(exp(y))  # exp(2)
#> [1] 7.389056
deriv(log(y))  # 1/2
#> [1] 0.5