template: Create cpp template to get started.

View source: R/TMB.R

templateR Documentation

Create cpp template to get started.


Create a cpp template to get started.


template(file = NULL)



Optional name of cpp file.


This function generates a C++ template with a header and include statement. Here is a brief overview of the C++ syntax used to code the objective function. For a full reference see the Doxygen documentation (more information at the package URL).

Macros to read data and declare parameters:

Template Syntax C++ type R type
DATA_VECTOR(name) vector<Type> vector
DATA_MATRIX(name) matrix<Type> matrix
DATA_SCALAR(name) Type numeric(1)
DATA_INTEGER(name) int integer(1)
DATA_FACTOR(name) vector<int> factor
DATA_IVECTOR(name) vector<int> integer
DATA_SPARSE_MATRIX(name) Eigen::SparseMatrix<Type> dgTMatrix
DATA_ARRAY(name) array<Type> array
PARAMETER_MATRIX(name) matrix<Type> matrix
PARAMETER_VECTOR(name) vector<Type> vector
PARAMETER_ARRAY(name) array<Type> array
PARAMETER(name) Type numeric(1)

Basic calculations:

Template Syntax Explanation
REPORT(x) Report x back to R
ADREPORT(x) Report x back to R with derivatives
vector<Type> v(n1); R equivalent of v=numeric(n1)
matrix<Type> m(n1,n2); R equivalent of m=matrix(0,n1,n2)
array<Type> a(n1,n2,n3); R equivalent of a=array(0,c(n1,n2,n3))
v+v,v-v,v*v,v/v Pointwise binary operations
m*v Matrix-vector multiply
a.col(i) R equivalent of a[,,i]
a.col(i).col(j) R equivalent of a[,j,i]
a(i,j,k) R equivalent of a[i,j,k]
exp(v) Pointwise math
m(i,j) R equivalent of m[i,j]
v.sum() R equivalent of sum(v)
m.transpose() R equivalent of t(m)

Some distributions are available as C++ templates with syntax close to R's distributions:

Function header Distribution
dnbinom2(x,mu,var,int give_log=0) Negative binomial with mean and variance
dpois(x,lambda,int give_log=0) Poisson distribution as in R
dlgamma(y,shape,scale,int give_log=0) log-gamma distribution
dnorm(x,mean,sd,int give_log=0) Normal distribution as in R



TMB documentation built on Nov. 27, 2023, 5:12 p.m.

Related to template in TMB...