[Rcpp-commits] r3252 - pkg/RcppEigen/inst/doc
noreply at r-forge.r-project.org
noreply at r-forge.r-project.org
Mon Oct 31 23:23:28 CET 2011
Author: dmbates
Date: 2011-10-31 23:23:27 +0100 (Mon, 31 Oct 2011)
New Revision: 3252
Modified:
pkg/RcppEigen/inst/doc/RcppEigen-Intro.Rnw
pkg/RcppEigen/inst/doc/RcppEigen-Intro.pdf
Log:
More conversion of listings to the highlight style - not yet finished. Fix minor gliches.
Modified: pkg/RcppEigen/inst/doc/RcppEigen-Intro.Rnw
===================================================================
--- pkg/RcppEigen/inst/doc/RcppEigen-Intro.Rnw 2011-10-31 22:20:31 UTC (rev 3251)
+++ pkg/RcppEigen/inst/doc/RcppEigen-Intro.Rnw 2011-10-31 22:23:27 UTC (rev 3252)
@@ -24,6 +24,7 @@
% Highlighting theme definition:
\newcommand{\hlstd}[1]{\textcolor[rgb]{0,0,0}{#1}}
\newcommand{\hlnum}[1]{\textcolor[rgb]{0,0,0}{#1}}
+\newcommand{\hlopt}[1]{\textcolor[rgb]{0,0,0}{#1}}
\newcommand{\hlesc}[1]{\textcolor[rgb]{0.74,0.55,0.55}{#1}}
%\newcommand{\hlstr}[1]{\textcolor[rgb]{0.74,0.55,0.55}{#1}}
\newcommand{\hlstr}[1]{\textcolor[rgb]{0.90,0.15,0.15}{#1}}
@@ -125,7 +126,7 @@
eigenvalue / eigenvector computations are used in many estimation and
analysis routines. As such, libraries supporting linear algebra have long been
provided by statistical programmers for different programming languages and
-environments. \proglang{C++}, one the central modern languages for numerical
+environments. \proglang{C++}, one of the central modern languages for numerical
and statistical computing, can be extended particularly well due to its
object-oriented nature, and numerous class libraries providing linear algebra
routines have been written over the years.
@@ -231,17 +232,20 @@
%
%% Alternatively, use 'highlight --enclose-pre --no-doc --latex --style=emacs --syntax=C++'
%% as the command invoked from C-u M-|
+%% For version 3.5 of highlight this should be
+%% highlight --enclose-pre --no-doc --out-format=latex --syntax=C++
%%
%% keep one copy to redo later
%%
%% using Eigen::MatrixXd;
%%
\begin{quote}
- \noindent
- \ttfamily
- \hlstd{}\hlkwa{using\ }\hlstd{Eigen}\hlsym{::}\hlstd{MatrixXd}\hlsym{;}\hlstd{}\hspace*{\fill}\\
- \mbox{}
- \normalfont
+\noindent
+\ttfamily
+\hlstd{}\hlkwa{using\ }\hlstd{Eigen}\hlopt{::}\hlstd{MatrixXd}\hlopt{;}\hlstd{}\hspace*{\fill}\\
+\mbox{}
+\normalfont
+\normalsize
\end{quote}
then one can use these names without the namespace qualifier.
@@ -322,7 +326,7 @@
package \citep*{CRAN:inline} for \proglang{R} and its \pkg{RcppEigen}
plugin provide a convenient way of developing and debugging the
\proglang{C++} code. For actual production code one generally
-incorporate the \proglang{C++} source code files in a package and
+incorporates the \proglang{C++} source code files in a package and
include the line \code{LinkingTo: Rcpp, RcppEigen} in the package's
\code{DESCRIPTION} file. The
\Sexpr{link("RcppEigen.package.skeleton")} function provides a quick
@@ -425,11 +429,28 @@
_["crossprod(B, C)"] = B.adjoint() * C);
'
@
-\begin{lstlisting}[frame=tb,caption={prodCpp: Product and cross-product of two matrices},label=prod]
-<<prodCppLst,results=tex,echo=FALSE>>=
-cat(prodCpp, "\n")
-@
-\end{lstlisting}
+% \begin{lstlisting}[frame=tb,caption={prodCpp: Product and cross-product of two matrices},label=prod]
+% <<prodCppLst,results=tex,echo=FALSE>>=
+% cat(prodCpp, "\n")
+% @
+% \end{lstlisting}
+\begin{figure}[h]
+ \caption{prodCpp: Product and cross-product of two matrices}
+ \label{prod}
+ \begin{quote}
+\noindent
+\ttfamily
+\hlstd{}\hlkwa{using\ }\hlstd{Eigen}\hlopt{::}\hlstd{Map}\hlopt{;}\hspace*{\fill}\\
+\hlstd{}\hlkwa{using\ }\hlstd{Eigen}\hlopt{::}\hlstd{MatrixXi}\hlopt{;}\hspace*{\fill}\\
+\hlstd{}\hlkwb{const\ }\hlstd{Map}\hlopt{$<$}\hlstd{MatrixXi}\hlopt{$>$}\hlstd{\ \ \ \ }\hlopt{}\hlstd{}\hlkwd{B}\hlstd{}\hlopt{(}\hlstd{as}\hlopt{$<$}\hlstd{Map}\hlopt{$<$}\hlstd{MatrixXi}\hlopt{$>$\ $>$(}\hlstd{BB}\hlopt{));}\hspace*{\fill}\\
+\hlstd{}\hlkwb{const\ }\hlstd{Map}\hlopt{$<$}\hlstd{MatrixXi}\hlopt{$>$}\hlstd{\ \ \ \ }\hlopt{}\hlstd{}\hlkwd{C}\hlstd{}\hlopt{(}\hlstd{as}\hlopt{$<$}\hlstd{Map}\hlopt{$<$}\hlstd{MatrixXi}\hlopt{$>$\ $>$(}\hlstd{CC}\hlopt{));}\hspace*{\fill}\\
+\hlstd{}\hlkwa{return\ }\hlstd{List}\hlopt{::}\hlstd{}\hlkwd{create}\hlstd{}\hlopt{(}\hlstd{\textunderscore }\hlopt{{[}}\hlstd{}\hlstr{"B\ \%{*}\%\ C"}\hlstd{}\hlopt{{]}}\hlstd{\ \ \ \ \ \ \ \ \ }\hlopt{=\ }\hlstd{B\ }\hlopt{{*}\ }\hlstd{C}\hlopt{,}\hspace*{\fill}\\
+\hlstd{}\hlstd{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\hlstd{\textunderscore }\hlopt{{[}}\hlstd{}\hlstr{"crossprod(B,\ C)"}\hlstd{}\hlopt{{]}\ =\ }\hlstd{B}\hlopt{.}\hlstd{}\hlkwd{adjoint}\hlstd{}\hlopt{()\ {*}\ }\hlstd{C}\hlopt{);}\hlstd{}\hspace*{\fill}\\
+\mbox{}
+\normalfont
+\normalsize
+ \end{quote}
+\end{figure}
<<prod>>=
fprod <- cxxfunction(signature(BB = "matrix", CC = "matrix"), prodCpp, "RcppEigen")
B <- matrix(1:4, ncol=2); C <- matrix(6:1, nrow=2)
@@ -492,11 +513,35 @@
_["tcrossprod(A)"] = AAt);
'
@
-\begin{lstlisting}[frame=tb,caption={crossprodCpp: Cross-product and transposed cross-product of a single matrix},label=crossprod]
-<<crossprodCppLst,results=tex,echo=FALSE>>=
-cat(crossprodCpp, "\n")
-@
-\end{lstlisting}
+% \begin{lstlisting}[frame=tb,caption={crossprodCpp: Cross-product and transposed cross-product of a single matrix},label=crossprod]
+% <<crossprodCppLst,results=tex,echo=FALSE>>=
+% cat(crossprodCpp, "\n")
+% @
+% \end{lstlisting}
+\begin{figure}[h]
+ \caption{crossprodCpp: Cross-product and transposed cross-product of a single matrix}
+ \label{crossprod}
+ \begin{quote}
+ \noindent
+ \ttfamily
+ \hlstd{}\hlkwa{using\ }\hlstd{Eigen}\hlopt{::}\hlstd{Map}\hlopt{;}\hspace*{\fill}\\
+ \hlstd{}\hlkwa{using\ }\hlstd{Eigen}\hlopt{::}\hlstd{MatrixXi}\hlopt{;}\hspace*{\fill}\\
+ \hlstd{}\hlkwa{using\ }\hlstd{Eigen}\hlopt{::}\hlstd{Lower}\hlopt{;}\hspace*{\fill}\\
+ \hlstd{}\hspace*{\fill}\\
+ \hlkwb{const\ }\hlstd{Map}\hlopt{$<$}\hlstd{MatrixXi}\hlopt{$>$\ }\hlstd{}\hlkwd{A}\hlstd{}\hlopt{(}\hlstd{as}\hlopt{$<$}\hlstd{Map}\hlopt{$<$}\hlstd{MatrixXi}\hlopt{$>$\ $>$(}\hlstd{AA}\hlopt{));}\hspace*{\fill}\\
+ \hlstd{}\hlkwb{const\ int}\hlstd{\ \ \ \ \ \ \ \ \ \ \ }\hlkwb{}\hlstd{}\hlkwd{m}\hlstd{}\hlopt{(}\hlstd{A}\hlopt{.}\hlstd{}\hlkwd{rows}\hlstd{}\hlopt{()),\ }\hlstd{}\hlkwd{n}\hlstd{}\hlopt{(}\hlstd{A}\hlopt{.}\hlstd{}\hlkwd{cols}\hlstd{}\hlopt{());}\hspace*{\fill}\\
+ \hlstd{MatrixXi}\hlstd{\ \ \ \ \ \ \ \ \ \ }\hlstd{}\hlkwd{AtA}\hlstd{}\hlopt{(}\hlstd{}\hlkwd{MatrixXi}\hlstd{}\hlopt{(}\hlstd{n}\hlopt{,\ }\hlstd{n}\hlopt{).}\hlstd{}\hlkwd{setZero}\hlstd{}\hlopt{().}\hspace*{\fill}\\
+ \hlstd{}\hlstd{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\hlstd{selfadjointView}\hlopt{$<$}\hlstd{Lower}\hlopt{$>$().}\hlstd{}\hlkwd{rankUpdate}\hlstd{}\hlopt{(}\hlstd{A}\hlopt{.}\hlstd{}\hlkwd{adjoint}\hlstd{}\hlopt{()));}\hspace*{\fill}\\
+ \hlstd{MatrixXi}\hlstd{\ \ \ \ \ \ \ \ \ \ }\hlstd{}\hlkwd{AAt}\hlstd{}\hlopt{(}\hlstd{}\hlkwd{MatrixXi}\hlstd{}\hlopt{(}\hlstd{m}\hlopt{,\ }\hlstd{m}\hlopt{).}\hlstd{}\hlkwd{setZero}\hlstd{}\hlopt{().}\hspace*{\fill}\\
+ \hlstd{}\hlstd{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\hlstd{selfadjointView}\hlopt{$<$}\hlstd{Lower}\hlopt{$>$().}\hlstd{}\hlkwd{rankUpdate}\hlstd{}\hlopt{(}\hlstd{A}\hlopt{));}\hspace*{\fill}\\
+ \hlstd{}\hspace*{\fill}\\
+ \hlkwa{return\ }\hlstd{List}\hlopt{::}\hlstd{}\hlkwd{create}\hlstd{}\hlopt{(}\hlstd{\textunderscore }\hlopt{{[}}\hlstd{}\hlstr{"crossprod(A)"}\hlstd{}\hlopt{{]}}\hlstd{\ \ }\hlopt{=\ }\hlstd{AtA}\hlopt{,}\hspace*{\fill}\\
+ \hlstd{}\hlstd{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\hlstd{\textunderscore }\hlopt{{[}}\hlstd{}\hlstr{"tcrossprod(A)"}\hlstd{}\hlopt{{]}\ =\ }\hlstd{AAt}\hlopt{);}\hlstd{}\hspace*{\fill}\\
+ \mbox{}
+ \normalfont
+ \normalsize
+ \end{quote}
+\end{figure}
<<>>=
fcprd <- cxxfunction(signature(AA = "matrix"), crossprodCpp, "RcppEigen")
str(crp <- fcprd(A))
@@ -558,11 +603,34 @@
_["R"] = MatrixXd(llt.matrixU()));
'
@
-\begin{lstlisting}[frame=tb,caption={cholCpp: Cholesky decomposition of a cross-product},label=chol]
-<<cholCppLst,results=tex,echo=FALSE>>=
-cat(cholCpp, "\n")
-@
-\end{lstlisting}
+% \begin{lstlisting}[frame=tb,caption={cholCpp: Cholesky decomposition of a cross-product},label=chol]
+% <<cholCppLst,results=tex,echo=FALSE>>=
+% cat(cholCpp, "\n")
+% @
+% \end{lstlisting}
+\begin{figure}[h]
+ \caption{cholCpp: Cholesky decomposition of a cross-product}
+ \label{chol}
+ \begin{quote}
+ \noindent
+ \ttfamily
+ \hlstd{}\hlkwa{using\ }\hlstd{Eigen}\hlopt{::}\hlstd{Map}\hlopt{;}\hspace*{\fill}\\
+ \hlstd{}\hlkwa{using\ }\hlstd{Eigen}\hlopt{::}\hlstd{MatrixXd}\hlopt{;}\hspace*{\fill}\\
+ \hlstd{}\hlkwa{using\ }\hlstd{Eigen}\hlopt{::}\hlstd{LLT}\hlopt{;}\hspace*{\fill}\\
+ \hlstd{}\hlkwa{using\ }\hlstd{Eigen}\hlopt{::}\hlstd{Lower}\hlopt{;}\hspace*{\fill}\\
+ \hlstd{}\hspace*{\fill}\\
+ \hlkwb{const\ }\hlstd{Map}\hlopt{$<$}\hlstd{MatrixXd}\hlopt{$>$}\hlstd{\ \ \ }\hlopt{}\hlstd{}\hlkwd{A}\hlstd{}\hlopt{(}\hlstd{as}\hlopt{$<$}\hlstd{Map}\hlopt{$<$}\hlstd{MatrixXd}\hlopt{$>$\ $>$(}\hlstd{AA}\hlopt{));}\hspace*{\fill}\\
+ \hlstd{}\hlkwb{const\ int}\hlstd{\ \ \ \ \ \ \ \ \ \ \ \ \ }\hlkwb{}\hlstd{}\hlkwd{n}\hlstd{}\hlopt{(}\hlstd{A}\hlopt{.}\hlstd{}\hlkwd{cols}\hlstd{}\hlopt{());}\hspace*{\fill}\\
+ \hlstd{}\hlkwb{const\ }\hlstd{LLT}\hlopt{$<$}\hlstd{MatrixXd}\hlopt{$>$\ }\hlstd{}\hlkwd{llt}\hlstd{}\hlopt{(}\hlstd{}\hlkwd{MatrixXd}\hlstd{}\hlopt{(}\hlstd{n}\hlopt{,\ }\hlstd{n}\hlopt{).}\hlstd{}\hlkwd{setZero}\hlstd{}\hlopt{().}\hspace*{\fill}\\
+ \hlstd{}\hlstd{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\hlstd{selfadjointView}\hlopt{$<$}\hlstd{Lower}\hlopt{$>$().}\hlstd{}\hlkwd{rankUpdate}\hlstd{}\hlopt{(}\hlstd{A}\hlopt{.}\hlstd{}\hlkwd{adjoint}\hlstd{}\hlopt{()));}\hspace*{\fill}\\
+ \hlstd{}\hspace*{\fill}\\
+ \hlkwa{return\ }\hlstd{List}\hlopt{::}\hlstd{}\hlkwd{create}\hlstd{}\hlopt{(}\hlstd{\textunderscore }\hlopt{{[}}\hlstd{}\hlstr{"L"}\hlstd{}\hlopt{{]}\ =\ }\hlstd{}\hlkwd{MatrixXd}\hlstd{}\hlopt{(}\hlstd{llt}\hlopt{.}\hlstd{}\hlkwd{matrixL}\hlstd{}\hlopt{()),}\hspace*{\fill}\\
+ \hlstd{}\hlstd{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\hlstd{\textunderscore }\hlopt{{[}}\hlstd{}\hlstr{"R"}\hlstd{}\hlopt{{]}\ =\ }\hlstd{}\hlkwd{MatrixXd}\hlstd{}\hlopt{(}\hlstd{llt}\hlopt{.}\hlstd{}\hlkwd{matrixU}\hlstd{}\hlopt{()));}\hlstd{}\hspace*{\fill}\\
+ \mbox{}
+ \normalfont
+ \normalsize
+ \end{quote}
+\end{figure}
<<fchol>>=
fchol <- cxxfunction(signature(AA = "matrix"), cholCpp, "RcppEigen")
(ll <- fchol(A))
@@ -635,7 +703,7 @@
\widehat{\bm\beta}=\arg\min_{\beta}\|\bm y-\bm X\bm\beta\|^2
\end{displaymath}
where the model matrix, $\bm X$, is $n\times p$ ($n\ge p$) and $\bm y$
-is an $n$-dimensional response vector. There are several ways based
+is an $n$-dimensional response vector. There are several ways, based
on matrix decompositions, to determine such a solution. Earlier, two forms
of the Cholesky decomposition were discussed: ``LLt'' and
``LDLt'', which can both be used to solve for $\widehat{\bm\beta}$. Other
@@ -777,12 +845,12 @@
One important consideration when determining least squares solutions
is whether $\rank(\bm X)$ is $p$, a situation described by saying
that $\bm X$ has ``full column rank''. When $\bm X$ does not have
-full column rank it is called ``rank deficient''.
+full column rank it is said to be ``rank deficient''.
Although the theoretical rank of a matrix is well-defined, its
evaluation in practice is not. At best one can compute an effective
-rank according to some tolerance. Decompositions that
-allow to estimate the rank of the matrix in this way are referred to as
+rank according to some tolerance. Decompositions that allow to
+estimation of the rank of the matrix in this way are said to be
``rank-revealing''.
Because the \code{model.matrix} function in \proglang{R} does a
@@ -839,7 +907,7 @@
is considered to be (effectively) zero is a multiple of the largest
singular value (i.e. the $(1,1)$ element of $\bm D$).
-In Listing~\ref{Dplus} utility function, \code{Dplus}, is defined to
+In Listing~\ref{Dplus} a utility function, \code{Dplus}, is defined to
return the pseudo-inverse as a diagonal matrix, given the singular
values (the diagonal of $\bm D$) and the apparent rank. To be able to
use this function with the eigendecomposition where the eigenvalues
@@ -887,8 +955,8 @@
The standard errors of the coefficient estimates in the rank-deficient
case must be interpreted carefully. The solution with one or more missing
coefficients, as returned by the \code{lm.fit} function in
-\proglang{R} and the column-pivoted QR decomposition described in
-Section~\ref{sec:colPivQR} does not provide standard errors for the
+\proglang{R} and by the column-pivoted QR decomposition described in
+Section~\ref{sec:colPivQR}, does not provide standard errors for the
missing coefficients. That is, both the coefficient and its standard
error are returned as \code{NA} because the least squares solution is
performed on a reduced model matrix. It is also true that the
@@ -908,7 +976,7 @@
matrix and $\bm\Lambda$ is a $p\times p$ diagonal matrix with
non-increasing, non-negative diagonal elements, called the eigenvalues
of $\bm X^\prime\bm X$. When the eigenvalues are distinct this $\bm
-V$ is the same as that in the SVD. Also the eigenvalues of $\bm
+V$ is the same as that in the SVD. Also, the eigenvalues of $\bm
X^\prime\bm X$ are the squares of the singular values of $\bm X$.
With these definitions one can adapt much of the code from the SVD
@@ -972,7 +1040,7 @@
const ColPivHouseholderQR<MatrixXd> PQR(X);
const Permutation Pmat(PQR.colsPermutation());
const int r(PQR.rank());
-VectorXd betahat, fitted, se;
+VectorXd betahat, fitted, se;
if (r == X.cols()) { // full rank case
betahat = PQR.solve(y);
fitted = X * betahat;
@@ -983,12 +1051,14 @@
triangularView<Upper>().
solve(MatrixXd::Identity(r, r)));
VectorXd effects(PQR.householderQ().adjoint() * y);
+ betahat.fill(::NA_REAL);
betahat.head(r) = Rinv * effects.head(r);
betahat = Pmat * betahat;
// create fitted values from effects
// (cannot use X * betahat when X is rank-deficient)
effects.tail(X.rows() - r).setZero();
fitted = PQR.householderQ() * effects;
+ se.fill(::NA_REAL);
se.head(r) = Rinv.rowwise().norm();
se = Pmat * se;
}
@@ -1093,21 +1163,20 @@
An SVD method using the Lapack SVD subroutine, \code{dgesv}, may be
faster than the native \pkg{Eigen} implementation of the SVD, which is
-not a particularly fast method.
+not a particularly fast method of evaluating the SVD.
\section{Delayed evaluation}
\label{sec:delayed}
A form of delayed evaluation is used in \pkg{Eigen}. That is, many
-operators and methods do not force the evaluation of the object but
-instead return an ``expression object'' that is evaluated when
-needed. As an example, even though one writes the $\bm X^\prime\bm X$
-evaluation using \code{.rankUpdate(X.adjoint())} the
-\code{X.adjoint()} part is not evaluated immediately. The
-\code{rankUpdate} method detects that it has been passed a matrix
-that is to be used in its transposed form and evaluates the update
-by taking inner products of columns of $\bm X$ instead of rows of $\bm
-X^\prime$.
+operators and methods do not evaluate the result but instead return an
+``expression object'' that is evaluated when needed. As an example,
+even though one writes the $\bm X^\prime\bm X$ evaluation using
+\code{.rankUpdate(X.adjoint())} the \code{X.adjoint()} part is not
+evaluated immediately. The \code{rankUpdate} method detects that it
+has been passed a matrix that is to be used in its transposed form and
+evaluates the update by taking inner products of columns of $\bm X$
+instead of rows of $\bm X^\prime$.
Occasionally the method for \code{Rcpp::wrap} will not force an
evaluation when it should. This is at least what Bill Venables calls
@@ -1115,7 +1184,7 @@
for the transpose of an integer matrix shown in Listing~\ref{trans} we
assigned the transpose as a \code{MatrixXi} before returning it with
\code{wrap}. The assignment forces the evaluation. If this
-step is skipped, as in Listing~\ref{badtrans} an answer with the correct
+step is skipped, as in Listing~\ref{badtrans}, an answer with the correct
shape but incorrect contents is obtained.
<<badtransCpp,echo=FALSE>>=
@@ -1189,7 +1258,7 @@
\pkg{RcppEigen} is based on the modern \proglang{C++} library \pkg{Eigen}
which combines extended functionality with excellent performance, and
utilizes \pkg{Rcpp} to interface \proglang{R} with \proglang{C++}.
-Several illustration covered common matrix operations which covered
+Several illustrations covered common matrix operations and
several approaches to solving a least squares problem---including an extended
discussion of rank-revealing approaches. A short example provided
an empirical illustration for the excellent run-time performance of the
Modified: pkg/RcppEigen/inst/doc/RcppEigen-Intro.pdf
===================================================================
--- pkg/RcppEigen/inst/doc/RcppEigen-Intro.pdf 2011-10-31 22:20:31 UTC (rev 3251)
+++ pkg/RcppEigen/inst/doc/RcppEigen-Intro.pdf 2011-10-31 22:23:27 UTC (rev 3252)
@@ -127,458 +127,476 @@
(Sparse matrices)
endobj
85 0 obj
-<< /S /GoTo /D [86 0 R /Fit ] >>
+<< /S /GoTo /D (section.7) >>
endobj
-107 0 obj <<
-/Length 4232
+88 0 obj
+(Summary)
+endobj
+89 0 obj
+<< /S /GoTo /D [90 0 R /Fit ] >>
+endobj
+113 0 obj <<
+/Length 4477
/Filter /FlateDecode
>>
stream
-xÚ[IãƾûW4|àÍ*7ßÆk$0`4r±sÐHìe¤VT{Üùõyk-$µ´a4M±öWoùÞ¢üîñ.¿ûéüÌßoï¿øúÇÊÝ:³¦tw÷w¦²Æ»ªj2Ó«íݯ÷OËUç¿/ÍâiiëÅ©?.W¶\l_àÍ>§ÝÚ¨Ûé¸üÏý?`æ6¹¨²ÂÀº4å/8ðþ{þþÛÁç±{âa6¿3&kËÒâ°ijØQ{·²MÖ´¸ø#|öðYÃgåmµøOðéà
mzãý'ìQ.~ØÂüt2ú|p¶ø-Å}âѸÆNÎSü¸lì¢
àó[^äKWÍQVÂq&k])²¢-ÞH*ϺTþ¾´Í¢Ã=;Ù¥l.ÏàÙÀÿL@ØóÆ¥ñÐÇpàÒs
Ç>ïxNã·5ᣯ¬ë;8XUÑM»<+[8cQfMU
-!¤n¿V93Wc£¹àúáÚMeVg»ÿH§ô
-ÝMy}%8àÌF=Ë¥n¶]|Z5}{¤W.¯©COúÿ++
-ÜA¸!¤Õâ¡g6âÕ=[¸a`p¿ééÛ¬Ê}ßò2ÒÁ¿¬¸ërüøËO_Üýj`Zóûyd/ì;?t,Ä-Ð:}-½í~Ù ¬u§þV`Ùwפ©era=3R^NÏÞdí²Öx}AøÈ{Ðo8íútúê«*®¶ÎÚy)j¹;iÃs¤GNr×m¹ØïD;×ö¯üöáÈbâÚIù"¢ëwrïë=6; õµçñø¸'òSg³Ì\gyî¦Ü<s6 iÞÀ!ANõ¿õ;}¢t=úuÐw a.¯òÞÂ4°DÊ4¸3}7±¶Tä}Â`ЮÖ9\zÑÃ3¨¸u³Ièzþ§÷ԨȲ×(H[%U;{Aë7¥Wàg8o+
-ãEv²]ØÍÜæñ\f[/-ëÐ+YßYî^h£ùL¹ªÒEåÏqÍ\Ð ªK8úE{C;ÐÉ.VÊ0+Úï;o»cè ÅN1Áèä/¹É,)p»Xj7h³
-\YôÃxrUVÿvzhH½ ÓË"³åÏ
-qÆ4̺ⶲu=½VØ$Ëv°g¢gUØU±ôåh±MælÍÓÈc¾-7«mxܾl"n(¶Údª`QØ©·0åÀ×Oü·£{êÄ`±Y3>ÃITqíöÂ;¾NûA$±j£ö)ÇáÉÞnP5°I×Q%GÒú¢½Ù2à«Ò.~~fÕÏ)ZëEïá£2´tdBþàÄç~íqi²'+µ£rsª(Þ!uDñئP©âCôlõ¡6zÒ Æâ\waÏn§à®èwÅK{µ(¼Ò×,
ÝîQÄRzãì*TÇ°±Yr¯§z¶°ü_è5+QlÄÖaåWÙý <uÍSºÊ,û¤\òªôÇÛ}U_
-ÂÈÀ(eÝ.Þ<EÌ´Û/+@828+õg
©Þ¢»}än{åÍN¶×8/©ÐÁ>>R?!ac:ño@»'9§
>δñy!eèXòJ;Ç£´nWÅÏ[¡Åo¹)º>ºgfÂOL<èµ|ºG¹Dï È1'õañ^)Áì!À»´¶
-hàë°ÕæàCk/dÒùéxCÐ×Gö¶ö¼ÏÃî.©geÞÉ!%¢ÁY4 ãs Àä<îâûkÊTjJÎçz
-º¬nIP ÓZ<^`måLÝýqbÄé¼c×ûqæ=½Â¿òèÏÞeÍl*ï§#O·S ïæ0Â,sÝv7:ÁÖÆz]råúÎé SÁ;ªhe£G»³ëBÓüªÅµ¦Þ
-wÒí¬4Ñ1ø2U(¸âgRx§SôêÂMÌ5æÀe¯Úv=ð!ömMǽ+£õÁ«Ô粺÷K¹9ãñÛþ¬^á-$j¥
-JSN³
-[ªmx.KçØÓS'³]õ ÿ+}U?öî8s¸º:sø)ßèâ.ÚrÞd᯽|2!Æbð¼LD#Ö;õ$°(¼[a|)aþêêyHá§ÈmÛxüz^o"Bt<n«¿ yå9FJÞ5ó6é1¬»¡&aÈÈo¸S>qÖuhñDeêFðåêª M
gàlSÁúv*جϺmCâU59"'î0;n9æ¡7ª?7úýQÖÚ`+½Sà* nêç`'vGRDµ§5>ÇþC;$×cÚ<ÂqLjufñ¥ap¢ÒªÅ5'O³'Üëòc^ÐßUvq,;»
-úЦ
-Gþèm}ßøÙè«7¶8fñ¼ÚI¿a£ ö9F²Å(Kc>8[ìpL÷2àVw²ÑAÅ\v"WJgS9Å9bmàÝI=Íz?Gjõ8I6µ Jn¾öÇYy_£³cüûR6<nÈ:Rmï£0¾A{B½ê[ɨiY,´&ÛxPnMÌø0íñ!ì¹S*î£À)6MáÕÄjΩ:D2cÛZ¢¤øT$W¨#E¹MXðUm2H4ÿnàïÏ>nÅò] Kü{HO¶¥ tQ¼Ð¡#Ek]7²ÞÀÁ§9éÔ]Ï8VؤÜ]^U§G´Øùä)Å[¶Ö<WÍ\õ¬ì¼nñ{¾(rAò}§zößn_RSµÖÛ»}RðFÃÀÁëT8ÜMµu¼õ¿s+n®cO¬±âÇ(ÃǨ,·c6AÞ½Õ8N.R¼ßr&4½5{Ê:ÅR/çðú!7êA_Á» £ ^5waØ8±ª×Ð2¾ÐXòÆÙ
-|PMÃQ$ñÝM(
-6RÔ:M)¯©Y4Â{~~Ò Çù4ÉM]ê
-
-í\è ú2p
oAèy^]Gè¸ËUnï#æC¯fØ¢áô;C7$= Fùs"üq1!ûº8vàe³~õñQDHò,|ìYâð<øÔ /ÉT]sö:<ÌùcÈRìb¥¦%ØÊë§àò
-Ò$íãC´Ef
-s[(=ðÃ$ýk¥ÉýçÚÌ4í4c9Ê×åßNôî¬üSPârzÕ0/rµï8èÿÍAå ïxëÝÛ×Z¬vº!}x)ӫƼîZ8µèÔu¡á/3ðï7ËU^/òò±×ú Ò|T1¥êª1MPü¦z²ãÅǹl à>{÷zã³0~\¥ùUQìÚmùù$îóstÌ$Ó"³Xm^§±aÖSïÃ+ñØßOWuÖ¸ú¶üW^þEa©Á½²KN`4)üg2Â8ç8#¼e0êJA×G½Æ\ UÉ"Ϥ!ÁÄaç(<ss
Jó¡Ù:ä3¿<SÐLÜã²
-Z9»eÕ"=¨hõÝÅ
-lãEܯj4Àb»Þã ØÚu<Tô)<Ý\Í
q *+{)ÇÙĶumN窨Rèªr¶-]4ý¨ø.r}ð¸ÞÛ³gý-÷|[ÝØ6«ê&aj~#sùw à&µz$!ERFòó.¯àÙbß? 6¶Ê¬-ÿõsA|/U î,Gb8Cék eå.-Qúe#ç(}Xs´ñâ6BÎÝGf4¡¡`«¦ÎÚ¢LuÊù"¹&«Û7×ÈY¿X$WX®±èg+ä°5ö_,Gp½·HE_Ú8u&¤p1
-$Iou.ì$h?ª§rYcKÊö¦ÒS´W*zø@#¼üê2ÕÚjäDäzspf:Õ(¥ºKSé*[¤ëtSÅMuDXú¯b¯«bé½äªnCQÒâæÏ8¨,|)ù4ÁlSN«
-àæFO fë_:
Y3~æn.¿îxõåãzªÅìÈIû|5Þ¢ñGajîz¾·Ã:²·Ý;
qêÐ÷aÖæ!úî£;
-³s:Ìa÷H«f
-tìe
-ÑMS¶T--4uïøE"¼ë}Cû¤
=¯'£Ùþ'J
-Z|oÛQzZf¢ýSÆxF³&ªíEpD4mm·iüèN8ç¢À~]"ZÑÎcòüK)Hny8äò }Á÷¡mF|ö¼ô
-Kô!óÂ÷ijDã+ÇZ]\¸^lBiª"IßÓQ<^$ßa%)4%ìzü»IÏ ±sáÂóO]QÇ|õ ©STZ©üa÷¨yºSèLeT=xUµæ
-nîOQüÄÎÆO\ÏÆOð=ÆO\Á¹ÏÞ!Çöj|Qù`bQ³ó;q°÷Éeó¯\f
-NpÊCêL96Ìæ«máy\wý!h]eÉW»MkP*¦ f®p&:GOQÈW*Ó©B S]ÔÔqü61X¸×±ÀÕs"ßÔ!åÝÔz!Í´ÓTi÷¤üÈ^£
-ÂüQÚùbúÝ£%ëâÉÚMöcø®y21×Q@Uu©á(ÆFÉqË" ¾ô&¿aZÒå¡B*Á÷Én1£( +¢ .äýè&ç ¹nräq1tAÕÉÐ
#5x²Íª Ú5*2ÐÒª¿ÇSô6Iã6RÕ%ɲ9weê²{_4ÍÃÖ`SÜò ÆÄ{`Jpû¬ iÏë~`Æ[ÌùKPL,ĨrÜÑØ$§(+ͤķqK|¡ðV^Fûì%ù¿X¨·=:9W×w!sÏ"÷ËߢÃ[DòpÒò|
Mö GF÷G/ÂÏ/¶9y*±&©j³à̺Ìkn0+í´ôpà¼\wW´çë °KÉÑ]ÅiÝ´(8ئæ(ðÞoLyíçÆ`:
-ýi#ã¬Í `Õ+;v1âª97¤ø>·¦XfÈ5HS ¨§uó¬×RJz Aa¯3µøû¸X7IÉUÿÛ¤`CºwsaöÑbu£Ó±À?ÖâïOË$6ó*äê¢ßÿ>̬Wج ÊQèõ0÷
jã;KS^+S6ÉKüõaf§?®GüpÿÅÿ$ZU7
+xÚ[Io#G¾ûW¾
6ÓkÌÍÝ®2¦ÛÂÌ¡=L©rÌEȤJ%ÿú~k,Éä"Ã(°DFÆúâ-ß[2¿{ºËï~ú&?ó÷¯¾ùþcß&³¦*ï>=ÞWg5wuÝfÆAÓæî_ö÷Ë"Ïÿuoû{Û,Ãá~i«ÅæZÖð9özFÝûÿûôw¹Jf.ê¬0°.Mù|ÿ?À=|º=³°!¹ª²8liÚväî¶ÍZgxø0à?Ág|FXÞÖ¿â÷#|:h°®¨©7.1ü=ªÅ
+üÀO'£à³u8ìÈ<÷GÛὦøxßÚÅ ïáók^ä÷eQ-ÖYmTÇ)ÚÌ-¦È
+W¼uµM¥$üroÛE{{Ù¥l.Ïà»þ-*°ç#ý'.><Àk"ÈÀ
+ã;ÓæøÛà¶Nøèûuq«kºé2Ï*g,ª¬+a!¤òÔVÊ3çæj£¹àúáÚM
+_ª¬6-Ïöé3]Ò7t7.3usÉJ40Y§¬³¼p:ðY.v}oÝâ·ûª¡_O´è²¨[ê 2 ðgV^B×n¡'\3úöÇYo}[ Y]îÐe~K_ó*òÁ¿¬¸züõ¾¹û9h§?vÌ'[aÜù© g;r§¿á¡ã]~ºoVºS3°ìwפ©,Ë
uV:JJexYb<ùzöF&«¥tñ-&d´ìEzþ
+úüå/3\®É\Ó Kå Z»ÂØ=GêäÈ×]ºj±íEIóoÜúx`i)]ÍÔ|EÑ
+ؽb=Rº'@5Atx<='¦òSg³<Ýdy^2õÌÙ æ=L4á©äV¿Ó=õ¤Ó|DVAí¬
¿¼æ{ßà·ò
+ö]ÇJÁK÷ AÉZä(ÓAÓ5$®ë^&¡ëù]ï=hS8÷*³Ì¢KĬ ÿ®jJ{Aù·×ãg8oÃ+?¾ÈNÖò [ã
+ÔñÊÌ:odW¡W²¾)²¼Lzy¢Mæ3mVµôJ¼Ë{å>
g¿DÛ%
+ý l/3tmëeT»nñ¥÷&È$ú@0)J
/¢¿åG^dá"ïíb5ªùÜÓf¸ªªS¶9O.«zñÿ^ªõÒ^PëUÙÊ]Öê¹u1'æ¬ÉlYÜÂV¶iN¯6ɲLèèmÀeÍP±_Ûd¥mx9cl)د@.Z¦~YGyº¡Hè ¼ÉT?O`QØS%0åÈW{þËV´ÅZFÔ+N¢«ß
+Wô|4öA$!k«&)¯ã1½~T5°N×Q%GÒú¢½÷ÂlðUeÿ|f(5Ì)ZëEïá³2<ÛéÈ|åFâs¿ö¸4OÙÚA¹9Uß!-°YëéoÛBEO0°Õ°ËÐMpæÈX'X{v½#º/¶jNx¥ïY»þIdRzãì*Q°±YZ¯N ma%ø¾P3kP|&¨¿î<`ßd÷£2Ôn2{LæöT¨¬] Ô£¾÷¸¶`&Bf
+Y¤t¤×(l7S¼Ñ+¶Ä!/âÂÇãa['h£°¥ßf*k0ãg:_
#kËÅ6bÛ'î÷àíf·çH{,y
+Ó¯ÉÖ,?°%#+$Ü*rü¾ûû57E7$ØÎ18|úèpÐk¹rOr+óËñå·ÛañAIµóRpäëÁ¨-øÁµ¹®Íspµò
³þF:Þê/øP ý\'ûT
è&éºfsðÛë¬jLz Dó©¢[¨"LNd«Î¶JWç=O èËdÐe}KD©g#G¶¥çQÝ}=2)l¸:w_gÞRÉ1~õnlfÔþ<xº^ ´ÍYu}ðbÍÔ ¸6v±å
Ô³´.áÆL=Õ7#ϲÖ#¡íVÁG3ÀJ
+®uê¾ØriéÁT÷Yâ|« ±½Ë½ñ;£¦C4
+w0CÓX ½içÕàEokl:î¹?°Z^§Ñ4Ã=^BûɪÖÜËJãÑÛö¬á-Ärë{Ý©\L° [>!)6v¤ÊɳRÙ®zÿû|S£?õ®
`uuåðS½7 »D÷Ïá§÷YòkæíLÈÐ#V5 G ª¼g
rÀ»%ò âïUñPÏ]
+>E8¬sñ*øó¼Ò$ãoÈß鶱î7cjhhkSõ¾ËSXt£LRù/Ë8r§wâ«ðlÆ ©wÀÆåUk:#
+ÎÀÏ8§|µuÊ·¬Xuú)W7ä¹Ã'8ò#b¾j9t3l²Ö&½IîÇö´¬%TFiØ¥IQÕÖxXH¸mèFB;auj¹QCÌ08ÑgõâþçÓl õùv)YpúJzð ~ýìý^ûÙè§7³8fñ4õÒo\«'ó¬¨O·xpi¸gÝÓ½¸ÕþQ6:ªËNäJél*¤8G¬
+¼s¡ò¨§YÍBSu6I6À6¹9ø9hgé=.t<ÌI_ìRÙpº!êHµºOÂø õÚ©g%£6^¤yf17òÐØÚà ô(cÆiaÏRqÅLñaÐ^M,ç\ª]$3Ö5@$ýħ"¹B)ÌÏßÔÐ)¸ öû?ûË3rVv%" <ò?÷!ñdPà
+} :²N´Öuë|Ú3ANÝõTÃÉûákÃVÕé-z2â×`ÈVéj«è»Ô¹àOè"?tªg߸u£üª&Ý6Üí7En4|½N
ñðÈÝT[çÁûÞÁ¦w
+W±M¦ØAñcácHÛ)ïZ5o7Ân-
òN±ÔË9¼~ÈzÑWÀ.`hBBto±æ.'VõUÆVAoÀj ÿni¢ ØEÑÓ bJyMÍ¢îØò÷½Æ¶8ħù|ôØ¥~Ðx²Kè_VT7ãó¼¾Ï3qkpË Tü1º4cGÒC¾Ýô$åÏð§ 9DÐEüé'EÌøÓ'G<ÆU ɧ,ò©O¹c8p§fNãGr(ñ`C) ì§×IÌaÎ@ùf裬ð/ o]6»Þ@¼»SnpUæÜM¾Z[úÆä|H¼B³rÒ(óÙN²Ó$]]x0ÈøsËþô¢Á}äs¯8öJkÇf¥ã¶Å§VTOìRña©3`³Y̪ÍJ[þ
+yx±J5.ÑtYÛNbXÄ>¼14 -Á^üû?ð".
+¿\j}:,ÜáçÞGc¾òìü¦aígn
+Qo*G9[Ö+Í^¡³¨M²¸ê#{ªqÔVSCç1ûÚ «,©ïï"=
óq9ÑÇ3vçU5Ï_¸"8x®HI¬Õ%Ó$££QHsÅ ãKNïQ<"XömHNr-s<hMæv)Oͱ~å½°ï"Õ«#8Îzd$ç}Q@í¸I2xchgÇÙÉÒdµ3§.v^½¨L\ÆÀûAÄÕA'CÚ
Ó%¢Ö®U¾ÐD·;ɾj
+
+¦Öì¨ÇPÑ·ü\CpÍ4§L>î&²\uîæçLÍõëw>G¯¶=·¡c:¾¹Ý«&s¹ZÀfµ½®BñM3 +;$³Mc
+¦c[jÐ1yéyV½ç» {j!K¤)Ò}ÔI`ÕM ze«Ý{c¨Qo.3Aí+ÇįGåðí#·0Ï÷ûÆq;l%ô×'8q<þJT;ÖëxÐ^,T]\d3ë\VWúÌÔäY^T·D¨ãµÄÉÀ&õéFùíÕÕ
Õ1Jcyiµ7üÿ¡õ+wÓ°ÁLùµH[Ë6%îÈm+ÿvCïKö<é"4ÃM!P?ïf<pW/¥»|¦ÉÚÊ8ÊÌ·91ÈØ
Èä,^O=jq¢ï9Û1SuR Ü%Æ© oùë\Ftì¤,`VMJíM&¤Yø0+SnìØUGó
+eÑtKÀq1ÐÿâСD!ñþÂ>|¥(Ý W|ñÐõØÌõ£ª¶ýNô\
+.ñ«´¹Ëë*-oNTÚêJ¥z©gKØt.ÀéµÛ
+íÐ=vC·¼C
OÀJó½O3µ±·EÅh÷ÒõN_6YÞØKlË5Øy=StÕ¼3M/1çàF63135˶,o3aµËUÊMský>Èq!¨¯õ9XÕ45gµ6ü]J@â÷¸
+t8¤uÞí\gfΫ2R}gBî«Æ¯r¥m*
+ì\äÊ"\TÄsªÇÝn¨gÕÓPr LÛ:sE;[)3º/\Í Eð[_îb°óÑr ñE N?&ÁPJøHV¡ñru¹Í¹ÊÕi¡¹!.dÄÜI2>¢¿Þ(FÖ5R´¼-R¸fZ~ÌKN<µsóGk§Q!z¡¹(1è.i¥Þ>Ù>õÆ{i5ù$¨aî¥yEÙ¢ßoϼüL¿4U"? dY޲ͱ®hk[_SÁÏ )
K>cóqÇCÏIÃ*2{Ù×kã(ô´$;«¦·j®ªÙ´Æü³fB¢$!×çEñ{HçiÎ
Nðè}
è`ß³ºiÎÊÊç\
:B
+0¡ßO¢r1ìX³×b*É»P!}ÿP ·±5ÀñêÏ©á.ß'à^ªÑmVMdpÒ×j÷+ð«D%¾ÐçI/%Ãz¹|½~Ϲ6!¡Q`V´
+Ð*Õ'çY5îÓÉ*0Cö6f%ËËùÅwÉlZÃd¹ÎɧU)hînøØ:vÂp_Ï{ÙWfí
h}
+vö¦×Lᮼõ"õÏ'}
Ñ_×lãRëX¬B¤ÈýË®¾Ç$X¸ªöá:§ÆJÀ$UqÓ6
+¸ÒÍ*ıô^¨|x¦õ¥Ý
÷Q(¹°Yc ´7ÆãMæ\9ñ´
+ð´ÐÌÝèiÁ× Ê¯Æóª¹|\OÕݨØcc`¼®÷¡A'a^JøÞv«ÈÜbº6»M}g¼ò3MÖÝç$:é+FÉ¿2µÓÚ4yCd¯ÐåiI3ZçxÛ¬HoáIT.ê¾ü²V-x:ÚGÉtï8û½
+ã^9³åaÑôäu±{oçtI¼
+»\I4ªÆCùRø9Â]}çI±c6K+¡íáUÌ°+çWôù*½&Ú µyø,ÑÈóJÃh²ÃÏjÊäÙÕyZñìèÙgµ¯úòtWáøó)ú¤^B]Ú
+föûÙÍE½ÎãÐ<MmnZ§yõï?¶ Ô¬æÛ¬P±,k²ò]<àçoþ
+׳F±
endstream
endobj
-86 0 obj <<
+90 0 obj <<
/Type /Page
-/Contents 107 0 R
-/Resources 106 0 R
+/Contents 113 0 R
+/Resources 112 0 R
/MediaBox [0 0 612 792]
-/Parent 119 0 R
-/Annots [ 87 0 R 88 0 R 89 0 R 90 0 R 91 0 R 92 0 R 93 0 R 94 0 R 95 0 R 96 0 R 97 0 R 98 0 R 99 0 R 100 0 R 101 0 R 102 0 R 103 0 R ]
+/Parent 127 0 R
+/Annots [ 91 0 R 92 0 R 93 0 R 94 0 R 95 0 R 96 0 R 97 0 R 98 0 R 99 0 R 100 0 R 101 0 R 102 0 R 124 0 R 103 0 R 104 0 R 105 0 R 106 0 R 107 0 R 108 0 R 125 0 R 109 0 R ]
>> endobj
-87 0 obj <<
+91 0 obj <<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[0 1 0]
-/Rect [296.913 561.189 410.159 572.063]
+/Rect [294.528 561.189 406.752 572.063]
/A << /S /GoTo /D (cite.R:Main) >>
>> endobj
-88 0 obj <<
+92 0 obj <<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[0 1 0]
-/Rect [414.368 561.189 434.759 572.063]
+/Rect [410.62 561.189 436.122 572.063]
/A << /S /GoTo /D (cite.R:Main) >>
>> endobj
-89 0 obj <<
+93 0 obj <<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[0 1 0]
/Rect [321.672 550.23 432.07 561.104]
/A << /S /GoTo /D (cite.JSS:Rcpp) >>
>> endobj
-90 0 obj <<
+94 0 obj <<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[0 1 0]
/Rect [437.073 550.23 462.575 561.104]
/A << /S /GoTo /D (cite.JSS:Rcpp) >>
>> endobj
-91 0 obj <<
+95 0 obj <<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[0 1 0]
/Rect [341.225 400.346 371.694 411.22]
/A << /S /GoTo /D (cite.Meyers:2005:EffectiveC++) >>
>> endobj
-92 0 obj <<
+96 0 obj <<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[0 1 0]
/Rect [375.46 400.346 395.852 411.22]
/A << /S /GoTo /D (cite.Meyers:2005:EffectiveC++) >>
>> endobj
-93 0 obj <<
+97 0 obj <<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[0 1 0]
/Rect [399.618 400.346 420.009 411.22]
/A << /S /GoTo /D (cite.Meyers:1995:MoreEffectiveC++) >>
>> endobj
-94 0 obj <<
+98 0 obj <<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[0 1 0]
/Rect [244.291 345.552 290.012 356.425]
/A << /S /GoTo /D (cite.Veldhuizen:1998:Blitz) >>
>> endobj
-95 0 obj <<
+99 0 obj <<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[0 1 0]
/Rect [294.268 345.552 314.659 356.425]
/A << /S /GoTo /D (cite.Veldhuizen:1998:Blitz) >>
>> endobj
-96 0 obj <<
+100 0 obj <<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[0 1 0]
-/Rect [289.373 301.716 396.88 312.59]
+/Rect [295.092 301.716 404.6 312.59]
/A << /S /GoTo /D (cite.Eigen:Web) >>
>> endobj
-97 0 obj <<
+101 0 obj <<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[0 1 0]
-/Rect [401.531 301.716 421.922 312.59]
+/Rect [409.823 301.716 430.215 312.59]
/A << /S /GoTo /D (cite.Eigen:Web) >>
>> endobj
-98 0 obj <<
+102 0 obj <<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[0 1 0]
-/Rect [204.953 290.757 312.602 301.631]
-/A << /S /GoTo /D (cite.CRAN:Rcpp) >>
+/Rect [428.846 257.88 516.09 268.754]
+/A << /S /GoTo /D (cite.R:Main) >>
>> endobj
-99 0 obj <<
+124 0 obj <<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[0 1 0]
-/Rect [316.232 290.757 341.223 301.631]
-/A << /S /GoTo /D (cite.CRAN:Rcpp) >>
+/Rect [95.91 246.922 120.166 257.795]
+/A << /S /GoTo /D (cite.R:Main) >>
>> endobj
-100 0 obj <<
+103 0 obj <<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[0 1 0]
-/Rect [125.398 143.862 235.877 154.736]
-/A << /S /GoTo /D (cite.Eigen:Web) >>
+/Rect [124.883 246.922 150.385 257.795]
+/A << /S /GoTo /D (cite.R:Main) >>
>> endobj
-101 0 obj <<
+104 0 obj <<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[0 1 0]
-/Rect [240.356 143.862 260.747 154.736]
-/A << /S /GoTo /D (cite.Eigen:Web) >>
+/Rect [343.793 225.004 457.043 235.877]
+/A << /S /GoTo /D (cite.R:Extensions) >>
>> endobj
-102 0 obj <<
+105 0 obj <<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[0 1 0]
-/Rect [409.925 89.068 513.534 99.941]
-/A << /S /GoTo /D (cite.Abrahams+Gurtovoy:2004:TemplateMetaprogramming) >>
+/Rect [461.253 225.004 486.244 235.877]
+/A << /S /GoTo /D (cite.R:Extensions) >>
>> endobj
-103 0 obj <<
+106 0 obj <<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[0 1 0]
-/Rect [95.91 78.109 116.302 88.982]
-/A << /S /GoTo /D (cite.Abrahams+Gurtovoy:2004:TemplateMetaprogramming) >>
+/Rect [200.764 203.086 309.046 213.96]
+/A << /S /GoTo /D (cite.CRAN:Rcpp) >>
>> endobj
+107 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[0 1 0]
+/Rect [314.013 203.086 339.004 213.96]
+/A << /S /GoTo /D (cite.CRAN:Rcpp) >>
+>> endobj
108 0 obj <<
-/D [86 0 R /XYZ 71 757.862 null]
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[0 1 0]
+/Rect [444.449 192.127 516.09 203.001]
+/A << /S /GoTo /D (cite.CRAN:Rcpp) >>
>> endobj
+125 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[0 1 0]
+/Rect [95.91 181.168 131.338 192.042]
+/A << /S /GoTo /D (cite.CRAN:Rcpp) >>
+>> endobj
109 0 obj <<
-/D [86 0 R /XYZ 72 720 null]
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[0 1 0]
+/Rect [134.967 181.168 159.958 192.042]
+/A << /S /GoTo /D (cite.CRAN:Rcpp) >>
>> endobj
+114 0 obj <<
+/D [90 0 R /XYZ 71 757.862 null]
+>> endobj
+115 0 obj <<
+/D [90 0 R /XYZ 72 720 null]
+>> endobj
2 0 obj <<
-/D [86 0 R /XYZ 72 516.316 null]
+/D [90 0 R /XYZ 72 516.316 null]
>> endobj
-6 0 obj <<
-/D [86 0 R /XYZ 72 184.859 null]
->> endobj
-106 0 obj <<
-/Font << /F64 110 0 R /F69 111 0 R /F20 112 0 R /F77 113 0 R /F82 114 0 R /F89 115 0 R /F90 116 0 R /F91 117 0 R /F8 118 0 R >>
+112 0 obj <<
+/Font << /F50 116 0 R /F55 117 0 R /F20 118 0 R /F63 119 0 R /F68 120 0 R /F75 121 0 R /F76 122 0 R /F77 123 0 R /F8 126 0 R >>
/ProcSet [ /PDF /Text ]
>> endobj
-131 0 obj <<
-/Length 3361
+143 0 obj <<
+/Length 3803
/Filter /FlateDecode
>>
stream
-xÚµZëÛÆÿ~Ñ/å5Öû"¹nQÀ5ì ö!
-à¨,ñÎJõ¸Rïî¿ïÌì¤ä3âpµÏyíÌofYwEU|sUùþÇÍÕ×oÛÂ0Sº¸¹-`R«¢©$ãB7ëâCysÝÊrùñ[øï®RÊ¿¼^(%Ë×û>ûë
¨ËÃ~MÃx¹_Åñ©¯;^¶|¸MÙÑÛù¿D¹[q
-|<Úå×vÐq*NZá(ØFq'h°w¸¶+¤y9 y¾o7Æ>¿Ü|÷õ[cQHÕ2mZIá
-Ãw9;%0L ?)_î:Üù~I`8#þÍÍÕoW«¼U¬.jcæM±Ú]}ø¥*ÖÐõ]Q±Æ4Å
-ÜB ømày[¼¿ú§U ¯xJoT¦¨ÛÛ,5ï¦ÔÖ(å©=~´*uòõ¢mh/£:¬y&¢»sÂiX£k?4Q×Äh3Ð;~ÜÐæÕ
-¦øXV
-vQV)IÜTL7mQ7UòzBN;Ü-{³ÊlÓÁã½pQ3%ß#ðOãåOdÑñ,üôçÌhm±¦
-ò8:«»ëúÿ=çÒ³:ìPE[GÍ£Õ¶¥G÷wѲúùQuÞO|;+GÒÁ-÷©ê¤æw*jâB1AScêËZ~éþ×ξÿù±Ù´¢|O^Áö÷ä1,MçÖÿ[i=Á\¼üû9w¢_ ¿Ä÷æAT-±Väkfª¦Ðµd¢uÒ@im|EJàøÐïqo#9ÃBspV`-9¯i+öþ>£ÂÓ.HŶê¬'ƾÌw1`½8C²^@WÝË8ip|pôÃÞNuCha!ü1Yôw
|÷ÍUñÖäY¼,>ð]/ÝÿÂÅ:»ñn²ÝÚ]N$Z'¥ONåîU"QnëþPOÎÌ:g>!úÄ(kÛ { W 5 P6qU¤¢÷x¤dc M`ãÂ!4YûEå¯ÜØ]·GÙâX¬å"ßñ&3¹yÖÀ.¸¯¾áM(&"3YSQÏ^¿&ªÚ|¹ªu5Q5-´´ÀÒ®O·^«S
r]±Ï¡µÙi¡2¼Fr¶PÖþ"àæÞÔå×Ñ
-ÿd £áþÈ p¨qX On.r´}«XY³Êð\·tRq¡cðUø8LVkôÁÏA)©ÌXMC~yù5öà+Bé_DÀ}£ÉP=ßûÄávéhõg£·?OÁá^·TzÀ©aåì-ÀJhZű§ø´
-qR¤/:óÁä{/ÍÁ¥0düDz@²iD6üÀßsTøéüþézQ£ÄÏ
-}îéónεH´"êmaPx£ñ¹£O$KPßB¾¹ÐxìºFÏ>7ôùH?Ñ5Îãå_³#(V:gz^k
[TRUNCATED]
To get the complete diff run:
svnlook diff /svnroot/rcpp -r 3252
More information about the Rcpp-commits
mailing list