-
Notifications
You must be signed in to change notification settings - Fork 84
/
Copy pathtemplate.cpp
70 lines (52 loc) · 2.38 KB
/
template.cpp
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
69
70
#include <TMB.hpp>
template<class Type>
Type objective_function<Type>::operator() ()
{
/* Minimal example */
DATA_VECTOR(x);
PARAMETER(mu);
PARAMETER(logSigma);
Type f = 0;
f -= dnorm(x, mu, exp(logSigma), true).sum();
return f;
/* Quick Reference
===============
** 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_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)
** Macro to report intermediate expressions back to R:
REPORT(x)
ADREPORT(x)
** Basic constructors:
vector<Type> v(n1);
matrix<Type> m(n1,n2);
array<Type> a(n1,n2,n3)
** Basic operations:
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)
** Distributions:
Type dnbinom2(const Type &x, const Type &mu, const Type &var, int give_log=0)
Type dpois(const Type &x, const Type &lambda, int give_log=0)
Type dlgamma(Type y, Type shape, Type scale, int give_log=0)
Type dnorm(Type x, Type mean, Type sd, int give_log=0)
** Parallel accumulator declaration (only methods "+=" and "-="):
parallel_accumulator<Type> res(this);
*/
}