cinterpolate v1.0.0

0

Monthly downloads

0th

Percentile

Interpolation From C

Simple interpolation methods designed to be used from C code. Supports constant, linear and spline interpolation. An R wrapper is included but this package is primarily designed to be used from C code using 'LinkingTo'. The spline calculations are classical cubic interpolation, e.g., Forsythe, Malcolm and Moler (1977) <ISBN: 9780131653320>.

Readme

cinterpolate

Project Status: Active - The project has reached a stable, usable state and is being actively developed. Linux Build Status Windows Build status codecov.io

Simple interpolation functions designed to be used from C. There is essentially no R support in this package, save code designed to be used by the package's own testing. cinterpolate is designed to be used in package code only and modification for use outside of a package is not explicitly supported.

Installation

Despite being only C code, this package requires a fortran compiler because it uses LAPACK and BLAS.

  • macOS Install Xcode, confirm the command line tools are installed and then install gfortran following these instructions
  • windows Rtools includes gfortran
  • linux Something like apt-get install gfortran depending on your platform

After that, install with

drat:::add("mrc-ide")
install.packages("cinterpolate")

Usage

#include <cinterpolate/cinterpolate.h>

Allocate an object to perform interpolation with. nx and x are the size and values of the function to be interpolated, while ny is the number of functions to be simultaneously (but independently) interpolateed and y is the values for these. If ny > 1, then the values of y are as an R matrix with nx rows and ny columns (the first nx values are the first function, the second nx are the second, and so on).

void *obj = cinterpolate_alloc(type, nx, ny, x, y);

With the interpolation function, an input value of xout and given some storage yout of length ny, determine f(xout) with

cinterpolate_eval(xout, obj, yout);

Once done the object must be freed with

cinterpolate_free(obj);

Further package setup

Somewhere in the package you must include cinterpolate.c as

#include <cinterpolate/cinterpolate.h>

but this must be included only once or linking will fail. If you only use the interpolation in one place, you can use cinterpolate.c rather than cinterpolate.h. If you use interpolation in more than once place, I recommend a file src/cinterpolate.c containing

#include <cinterpolate/cinterpolate.c>

Be sure to include in your DESCRIPTION a line

LinkingTo: cinterpolate

cinterpolate takes advantage of BLAS for matrix multiplication, so you may need a Makevars that includes

PKG_LIBS = ${LAPACK_LIBS} ${BLAS_LIBS} ${FLIBS}

Example

See inst/example for a full example of using cinterpolate within a package

License

MIT + file LICENSE © Rich FitzJohn.

Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.

Functions in cinterpolate

Name Description
interpolation_function Create an interpolation function
No Results!

Vignettes of cinterpolate

Name
cinterpolate.Rmd
No Results!

Last month downloads

Details

License MIT + file LICENSE
Encoding UTF-8
URL https://github.com/mrc-ide/cinterpolate
BugReports https://github.com/mrc-ide/cinterpolate/issues
RoxygenNote 6.1.1
VignetteBuilder knitr
Language en-GB
NeedsCompilation yes
Packaged 2019-04-09 18:08:48 UTC; rfitzjoh
Repository CRAN
Date/Publication 2019-04-10 17:05:44 UTC
suggests knitr , rmarkdown , testthat
Contributors

Include our badge in your README

[![Rdoc](http://www.rdocumentation.org/badges/version/cinterpolate)](http://www.rdocumentation.org/packages/cinterpolate)