swh:1:snp:8c443ee102a7f3a9fe0e834b4caec2f704d4d442
Tip revision: e10243fbd4eb0cbeaf518e67fbc5b8ad44889954 authored by Martin Schlather on 12 December 2019, 13:40:13 UTC
version 3.3.7
version 3.3.7
Tip revision: e10243f
auxiliary.h
/*
Authors
Martin Schlather, schlather@math.uni-mannheim.de
Copyright (C) 2015 -- 2017 Martin Schlather
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 3
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef AUXILIARY_H
#define AUXILIARY_H 1
#include "auxiliary2.h"
bool is_diag(double *aniso, int dim);
void Abbreviate(char *old, char *abbr);
double getMinimalAbsEigenValue(double *Aniso, int dim);
double getDet(double *Aniso, int dim); // arbitrary matrix
int addressbits(void *addr);
double SurfaceSphere(int d, double r);
double VolumeBall(int d, double r);
double intpow(double x, int p);
void analyse_matrix(double *aniso, int row, int col,
bool *diag, bool *quasidiag, int *idx,
bool *semiseparatelast, bool *separatelast);
double *EinheitsMatrix(int dim);
double incomplete_gamma(double start, double end, double s);
SEXP Mat(double* V, int row, int col);
SEXP Mat_t(double* V, int row, int col);
#define MIN(A,B) ((A) < (B) ? (A) : (B))
#define MAX(A,B) ((A) > (B) ? (A) : (B))
#define ATAN2 atan2
#define COSH cosh
#define SINH sinh
#define TANH tanh
#define FMIN fmin2
#define FMAX fmax2
#ifdef EVEN_NOT_USED_ON_SCHLATHERS_MACHINE
#define EXP2 exp2
#define LOGB logb
#define LOG_BASE2 log2
#define CBRT cbrt
#define FMOD fmod
#define REMAINDER remainder
#define FDIM fdim
#else
//#define EXPM1(X) (EXP(X) - 1.0)
#define LOGB(X) FLOOR(LOG(X) * INVLOG2) // EXP(X) - 1.0
#define EXP2(X) POW(2.0, X)
#define LOG_BASE2(X) (LOG(X) * INVLOG2)
#define CBRT(X) POW(X, ONETHIRD)
#define FMOD(X, Y) ((double) ((X) - (Y) * (int) ((X) / (Y))))
#define REMAINDER(X, Y) ((double) ((X) - (Y) * fround((X) / (Y), 0))) // ROUND(
#define FDIM(X, Y) FMAX((double) (X) - (Y), 0.0)
#endif
#define ERRSYS(N) ERR1("Function '%.50s' is not available on this system.", N)
#endif /* AUXILIARY_H */