aab_env {gadget3} | R Documentation |
Gadget3 global environment
Description
Functions available to any gadget3 model
Details
g3_env
is the top-level environment that any gadget3 model uses,
populated with utility functions.
NB: Several functions have _vec
variants.
Due to TMB limitations these should be used when you have a vector not scalar input.
ADREPORT
TMB's ADREPORT
function. See sdreport documentation
as_integer
C++ compatible equivalent to as.integer
as.numeric
R as.numeric
or TMB asDouble
assert_msg
C++/R function that ensures expression is true, or stops model.
assert_msg(x > 0, "x must be positive")
avoid_zero
Adds small value to input to ensure output is never zero
avoid_zero_vec
is identical to avoid_zero
, and is only present for backward compatibility.
bounded / bounded_vec
Ensures x is within limits b & a.
If x positive, return a.
If x negative, b.
If x -10..10
, smoothly transition from b to a
bounded_vec(x, 200, 100)
g3_matrix_vec
Apply matrix transformation tf to vector vec, return resultant vector.
g3_matrix_vec(tf, vec)
lgamma_vec
Vector equivalent of lgamma
logspace_add
TMB's logspace_add
, essentially a differentiable version of pmax
.
normalize_vec
Divide vector a by it's sum, i.e. so it now sums to 1. If vector is all-zero, return an all-zero vector instead.
nvl
Return first non-null argument. NB: No C++ implementation.
print_array
Utility to pretty-print array ar
ratio_add_vec
Sum orig_vec & new_vec according to ratio of orig_amount & new_amount
nonconform_add / nonconform_mult / nonconform_div / nonconform_div_avz
Scalar sum/multiply/divide 2 non-conforming arrays, by treating the latter as a vector and repeating as many times as required. Results will be structured identically to the first array.
nonconform_div_avz(x, y)
is equivalent to nonconform_div(x, avoid_zero_vec(y))
REPORT
TMB's REPORT
function.
REprintf
Equivalent of RCpp REprintf
Rprintf
Equivalent of RCpp Rprintf
Examples
## avoid_zero
g3_eval(quote( c( avoid_zero(0), avoid_zero(10) ) ))
g3_eval(quote( avoid_zero(0:5) ))
## bounded / bounded_vec
curve(g3_eval(quote( bounded(x, 200, 100) ), x = x), -100, 100)
## logspace_add
curve(g3_eval(quote( logspace_add(x, 10) ), x = x), 0, 40)
## normalize_vec
g3_eval(quote( normalize_vec(c( 4, 4, 8, 2 )) ))
## nonconform_mult
g3_eval(quote( nonconform_mult(
array(seq(0, 4*5*6), dim = c(4,5,6)),
c(1e1, 1e2, 1e3, 1e4)) ))
## nonconform_div_avz
g3_eval(quote( nonconform_div_avz(
array(seq(0, 4*5*6), dim = c(4,5,6)),
c(1e1, 1e2, 0, 1e4)) ))
g3_eval(quote( nonconform_div(
array(seq(0, 4*5*6), dim = c(4,5,6)),
avoid_zero(c(1e1, 1e2, 0, 1e4))) ))