From 5a986f2064cf0b2fbd94e636cc4fa56d9939ca42 Mon Sep 17 00:00:00 2001 From: Johannes Ranke Date: Tue, 3 Nov 2020 05:08:25 +0100 Subject: C implementation of the SFO function Only pays off for large time series with length >> 100 --- src/parent_solutions.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 src/parent_solutions.c (limited to 'src/parent_solutions.c') diff --git a/src/parent_solutions.c b/src/parent_solutions.c new file mode 100644 index 00000000..4881d708 --- /dev/null +++ b/src/parent_solutions.c @@ -0,0 +1,25 @@ +#include +#include + +SEXP SFO_solution(SEXP t, SEXP parent_0_, SEXP k_) { + + int n = length(t); + + double parent_0 = asReal(parent_0_); + double k = asReal(k_); + + double *pt, *pout; + + SEXP out = PROTECT(allocVector(REALSXP, n)); + + pt = REAL(t); + pout = REAL(out); + + for (int i = 0; i < n; i++) { + pout[i] = parent_0 * exp(- k * pt[i]); + } + + UNPROTECT(1); + + return out; +} -- cgit v1.2.1