Skip to content

Commit

Permalink
Add files via upload
Browse files Browse the repository at this point in the history
  • Loading branch information
faosorios authored Jan 22, 2024
1 parent a4931f5 commit bee39e4
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 2 deletions.
6 changes: 5 additions & 1 deletion pkg/inst/include/fastmatrix.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* ID: fastmatrix.h, last updated 2022-08-01, F.Osorio */
/* ID: fastmatrix.h, last updated 2024-01-03, F.Osorio */

#ifndef FASTMATRIX_H
#define FASTMATRIX_H
Expand Down Expand Up @@ -103,8 +103,12 @@ void FM_gls_GQR(double *x, int ldx, int nrow, int ncol, double *y, double *cov,
double FM_pythag(double a, double b);
double FM_mahalanobis(double *x, int p, double *center, double *Root);
void FM_mahal_distances(double *x, int n, int p, double *center, double *cov, int inverted, double *distances);

/* Wilson-Hilferty transformation */
void FM_WH_chisq(double *distances, int n, int p, double *z);
void FM_WH_gamma(double *y, int n, double shape, double scale, double *z);
void FM_WH_F(double *distances, int n, int p, double eta, double *z);
void FM_WH_Laplace(double *distances, int n, int p, double *z);

/* products */
void FM_two_product_FMA(double a, double b, double *x, double *y);
Expand Down
20 changes: 19 additions & 1 deletion pkg/inst/include/fastmatrix_API.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* $ID: fastmatrix_API.h, last updated 2023-02-24, F.Osorio */
/* $ID: fastmatrix_API.h, last updated 2024-01-03, F.Osorio */

#ifndef FASTMATRIX_API_H
#define FASTMATRIX_API_H
Expand Down Expand Up @@ -636,6 +636,17 @@ void FM_mahal_distances(double *x, int n, int p, double *center, double *cov, in
fun(x, n, p, center, cov, inverted, distances);
}

/* ========================================================================== *
* Wilson-Hilferty transformation: external API
* ========================================================================== */

void FM_WH_gamma(double *y, int n, double shape, double scale, double *z) {
static void(*fun)(double *, int, double, double, double *) = NULL;
if (fun == NULL)
fun = (void(*)(double *, int, double, double, double *)) R_GetCCallable("fastmatrix", "FM_WH_gamma");
fun(y, n, shape, scale, z);
}

void FM_WH_chisq(double *distances, int n, int p, double *z) {
static void(*fun)(double *, int, int, double *) = NULL;
if (fun == NULL)
Expand All @@ -650,6 +661,13 @@ void FM_WH_F(double *distances, int n, int p, double eta, double *z) {
fun(distances, n, p, eta, z);
}

void FM_WH_Laplace(double *distances, int n, int p, double *z) {
static void(*fun)(double *, int, int, double *) = NULL;
if (fun == NULL)
fun = (void(*)(double *, int, int, double *)) R_GetCCallable("fastmatrix", "FM_WH_Laplace");
fun(distances, n, p, z);
}

/* ========================================================================== *
* Products: external API
* ========================================================================== */
Expand Down

0 comments on commit bee39e4

Please sign in to comment.