File: template.Rd

package info (click to toggle)
r-cran-tmb 1.9.17-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 4,344 kB
  • sloc: cpp: 52,049; ansic: 382; makefile: 11
file content (68 lines) | stat: -rw-r--r-- 3,644 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/TMB.R
\name{template}
\alias{template}
\title{Create cpp template to get started.}
\usage{
template(file = NULL)
}
\arguments{
\item{file}{Optional name of cpp file.}
}
\description{
Create a cpp template to get started.
}
\details{
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:
 \tabular{lll}{
    \bold{Template Syntax}    \tab     \bold{C++ type}            \tab    \bold{R type} \cr
    DATA_VECTOR(name)         \tab     vector<Type>               \tab    vector        \cr
    DATA_MATRIX(name)         \tab     matrix<Type>               \tab    matrix        \cr
    DATA_SCALAR(name)         \tab     Type                       \tab    numeric(1)    \cr
    DATA_INTEGER(name)        \tab     int                        \tab    integer(1)    \cr
    DATA_FACTOR(name)         \tab     vector<int>                \tab    factor        \cr
    DATA_IVECTOR(name)        \tab     vector<int>                \tab    integer       \cr
    DATA_SPARSE_MATRIX(name)  \tab     Eigen::SparseMatrix<Type>  \tab    dgTMatrix     \cr
    DATA_ARRAY(name)          \tab     array<Type>                \tab    array         \cr
    PARAMETER_MATRIX(name)    \tab     matrix<Type>               \tab    matrix        \cr
    PARAMETER_VECTOR(name)    \tab     vector<Type>               \tab    vector        \cr
    PARAMETER_ARRAY(name)     \tab     array<Type>                \tab    array         \cr
    PARAMETER(name)           \tab     Type                       \tab    numeric(1)    \cr
 }

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

Some distributions are available as C++ templates with syntax close to R's distributions:
\tabular{ll}{
   \bold{Function header}                \tab \bold{Distribution}                      \cr
   dnbinom2(x,mu,var,int give_log=0)     \tab Negative binomial with mean and variance \cr
   dpois(x,lambda,int give_log=0)        \tab Poisson distribution as in R             \cr
   dlgamma(y,shape,scale,int give_log=0) \tab log-gamma distribution                   \cr
   dnorm(x,mean,sd,int give_log=0)       \tab Normal distribution as in R              \cr
}
}
\examples{
template()
}