The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.

Strider

Timothy H. Keitt 2018-09-13

“I don’t think he knows about second breakfast” - Meriadoc ‘Merry’ Brandybuck

Adapting multidimensional legacy buffers to the C++ standard library is difficult owing to a lack of strided (address-skipping) iterators. Strider provides an address-skipping pointer adapter. It can be used to scan multidimensional data along any desired margin using the standard library algorithms.

This code snippet computes row sums of a matrix.

  for_each(make_strided(begin(x), nr), make_strided(end(x)), [&](const double& y) {
    transform(&y, &y + nr, begin(res), begin(res), plus<double>()); });

It is cache and compiler friendly and runs nearly four times faster than R’s built-in rowSums function. See the vignette for details.

The header file is stand-alone and can be used separate from R. It relies on the Boost iterator library.

Installation

devtools::install_github("thk686/strider")

Travis build status AppVeyor Build Status Coverage status DOI

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.