# RcppGSL v0.3.1

Monthly downloads

## 'Rcpp' Integration for 'GNU GSL' Vectors and Matrices

'Rcpp' integration for 'GNU GSL' vectors and matrices
The 'GNU Scientific Library' (or 'GSL') is a collection of numerical routines for
scientific computing. It is particularly useful for C and C++ programs as it
provides a standard C interface to a wide range of mathematical routines
such as special functions, permutations, combinations, fast fourier
transforms, eigensystems, random numbers, quadrature, random distributions,
quasi-random sequences, Monte Carlo integration, N-tuples, differential
equations, simulated annealing, numerical differentiation, interpolation,
series acceleration, Chebyshev approximations, root-finding, discrete
Hankel transforms physical constants, basis splines and wavelets. There
are over 1000 functions in total with an extensive test suite.
The 'RcppGSL' package provides an easy-to-use interface between 'GSL' data
structures and R using concepts from 'Rcpp' which is itself a package that
eases the interfaces between R and C++.
This package also serves as a prime example of how to build a package
that uses 'Rcpp' to connect to another third-party library. The 'autoconf'
script, 'inline' plugin and example package can all be used as a stanza to
write a similar package against another library.

## Readme

## RcppGSL

This package uses Rcpp to connect the R system to the GNU GSL, a collection of numerical routines for scientific computing, particularly its vector and matrix classes.

### Examples

#### Faster `lm()`

for OLS regression

The `fastLm()`

function included as file `src/fastLm.cpp`

in the package:

```
#include <RcppGSL.h>
#include <gsl/gsl_multifit.h>
#include <cmath>
// [[Rcpp::export]]
Rcpp::List fastLm(const RcppGSL::Matrix &X, const RcppGSL::Vector &y) {
int n = X.nrow(), k = X.ncol();
double chisq;
RcppGSL::Vector coef(k); // to hold the coefficient vector
RcppGSL::Matrix cov(k,k); // and the covariance matrix
// the actual fit requires working memory we allocate and free
gsl_multifit_linear_workspace *work = gsl_multifit_linear_alloc (n, k);
gsl_multifit_linear (X, y, coef, cov, &chisq, work);
gsl_multifit_linear_free (work);
// assign diagonal to a vector, then take square roots to get std.error
Rcpp::NumericVector std_err;
std_err = gsl_matrix_diagonal(cov); // need two step decl. and assignment
std_err = Rcpp::sqrt(std_err); // sqrt() is an Rcpp sugar function
return Rcpp::List::create(Rcpp::Named("coefficients") = coef,
Rcpp::Named("stderr") = std_err,
Rcpp::Named("df.residual") = n - k);
}
```

#### A simple column norm

This example comes from the complete example package included in RcppGSL
and is from the file `inst/examples/RcppGSLExample/src/colNorm.cpp`

```
#include <RcppGSL.h>
#include <gsl/gsl_matrix.h>
#include <gsl/gsl_blas.h>
// [[Rcpp::export]]
Rcpp::NumericVector colNorm(const RcppGSL::Matrix & G) {
int k = G.ncol();
Rcpp::NumericVector n(k); // to store results
for (int j = 0; j < k; j++) {
RcppGSL::VectorView colview = gsl_matrix_const_column (G, j);
n[j] = gsl_blas_dnrm2(colview);
}
return n; // return vector
}
```

### Dependencies

- GNU GSL library (eg libgsl0-dev on Debian or Ubuntu)
- Rcpp for seamless R and C++ integration

### Availabililty

On CRAN, here and on its package page.

### Authors

Dirk Eddelbuettel and Romain Francois

### License

GPL (>= 2)

## Functions in RcppGSL

Name | Description | |

RcppGSL-package | Glue between Rcpp and the GNU GSL | |

fastLm | Bare-bones linear model fitting function | |

LdFlags | Provide RcppGSL Compiler and Linker Flags | |

No Results! |

## Last month downloads

## Details

Type | Package |

Date | 2016-10-02 |

License | GPL (>= 2) |

LazyLoad | yes |

LinkingTo | Rcpp |

SystemRequirements | GNU GSL |

VignetteBuilder | highlight |

NeedsCompilation | yes |

Packaged | 2016-10-02 21:40:50.23505 UTC; edd |

Repository | CRAN |

Date/Publication | 2016-10-03 08:17:37 |

suggests | highlight , inline , RUnit |

imports | Rcpp (>= 0.11.0) , stats |

Contributors | Romain Francois, Dirk Eddelbuettel |

#### Include our badge in your README

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