# BumpFuncs

This package delivers bump functions, i.e. functions on the unit sphere that have infinitely many derivatives. Included functions cover the univariate and multivariate cases, gradients, and Hessians, with and without scale and location normalization. For further information, see e.g. a paper by Steven Johnson.

The formula used for the bump function without scale and location normalizations is simply

exp( 1 / ( ||x||^2 - 1 ) ) if ||x||<1

and zero otherwise.

BumpFuncs.bumpMethod
bump(x::Vector{Real}, x0::Vector{Real}, r::Vector{Real})

Compute a vector bump function at x centered at x0 scaled by r (element-wise)

BumpFuncs.dbumpMethod
dbump(x::Vector{Real}, x0::Vector{Real}, r::Vector{Real})

Compute the gradient of a vector bump function at x centered at x0 scaled by r (element-wise)

BumpFuncs.dbumpMethod
dbump(x::Vector{Real})

Compute the first derivative of a bump function at the vector x.

BumpFuncs.dbumpMethod
dbump(x::Real, x0::Real, r::Real)

Compute the first derivative of a bump function at (x-x0) / r.

BumpFuncs.ddbumpMethod
ddbump(x::Vector{Real}, x0::Vector{Real}, r::Vector{Real})

Compute the Hessian of a vector bump function at x centered at x0 scaled by r (element-wise)

BumpFuncs.ddbumpMethod
ddbump(x::Vector{Real})

Compute the second derivative of a bump function at the vector x.

BumpFuncs.ddbumpMethod
ddbump(x::Real, x0::Real, r::Real)

Compute the second derivative of a bump function at (x-x0) / r.