#include "Enum/EDbg.hpp"
#include "Basic/Utilities.hpp"
#include "Basic/VectorHelper.hpp"
#include "Basic/Law.hpp"
#include "Basic/Memory.hpp"
#include <cmath>
#include <map>
Macros | |
#define | LSTACK 1000 |
#define | MINI 10 |
Functions | |
bool | isInteger (double value, double eps) |
int | getClosestInteger (double value) |
bool | isMultiple (int nbig, int nsmall) |
bool | isOdd (int number) |
bool | isEven (int number) |
bool | isZero (double value, double eps) |
bool | areEqual (double v1, double v2, double eps) |
bool | isOne (double value, double eps) |
double | getMin (double val1, double val2) |
double | getMax (double val1, double val2) |
double | getTEST () |
int | getITEST () |
bool | FFFF (double value) |
bool | IFFFF (int value) |
double | ut_deg2rad (double angle) |
double | ut_rad2deg (double angle) |
void | ut_sort_double (int safe, int nech, int *ind, double *value) |
StatResults | ut_statistics (int nech, const double *tab, const double *sel, const double *wgt) |
void | ut_stats_mima_print (const char *title, int nech, double *tab, double *sel) |
void | ut_facies_statistics (int nech, double *tab, double *sel, int *nval, int *mini, int *maxi) |
void | ut_classify (int nech, const double *tab, double *sel, int nclass, double start, double pas, int *nmask, int *ntest, int *nout, int *classe) |
double | ut_median (double *tab, int ntab) |
double | ut_cnp (int n, int k) |
MatrixSquareGeneral | ut_pascal (int ndim) |
static void | st_combinations (int *v, int start, int n, int k, int maxk, int *ncomb, int **comb) |
int * | ut_combinations (int n, int maxk, int *ncomb) |
void | ut_shuffle_array (int nrow, int ncol, double *tab) |
VectorInt | getListActiveToAbsolute (const VectorDouble &sel) |
std::map< int, int > | getMapAbsoluteToRelative (const VectorDouble &sel, bool verbose) |
int | getRankMapAbsoluteToRelative (const std::map< int, int > &map, int iabs) |
int | getRankMapRelativeToAbsolute (const std::map< int, int > &map, int irel) |
operate_function | operate_Identify (int oper) |
double | operate_Identity (double x) |
double | operate_Inverse (double x) |
double | operate_Square (double x) |
double | operate_InverseSquare (double x) |
double | operate_Sqrt (double x) |
double | operate_InverseSqrt (double x) |
double | modifyOperator (const EOperator &oper, double oldval, double value) |
double | roundZero (double value, double eps) |
double | truncateDecimals (double value, int ndec) |
double | truncateDigits (double value, int ndigits) |
void | setInternalDebug (bool status) |
bool | isInternalDebug () |
void | print_range (const char *title, int ntab, const double *tab, const double *sel) |
Variables | |
static EDbg | _debugOptions = EDbg::DB |
static bool | _internalDebug = false |
#define LSTACK 1000 |
#define MINI 10 |
bool areEqual | ( | double | v1, |
double | v2, | ||
double | eps | ||
) |
bool FFFF | ( | double | value | ) |
Checks if a double value is TEST
[in] | value | Value to be tested |
int getClosestInteger | ( | double | value | ) |
int getITEST | ( | ) |
VectorInt getListActiveToAbsolute | ( | const VectorDouble & | sel | ) |
Returns the list of absolute indices for the only active samples A sample is active if its 'sel' value is equal to 1
sel | Vector giving the status of all samples (Dimension: absolute) |
std::map<int, int> getMapAbsoluteToRelative | ( | const VectorDouble & | sel, |
bool | verbose | ||
) |
Returns the map such that MAP[iabs] = iact. A sample is active if its 'sel' value is equal to 1
sel | Vector giving the status of all samples (Dimension: absolute) |
verbose | Verbose flag |
double getMax | ( | double | val1, |
double | val2 | ||
) |
double getMin | ( | double | val1, |
double | val2 | ||
) |
int getRankMapAbsoluteToRelative | ( | const std::map< int, int > & | map, |
int | iabs | ||
) |
Returns the rank of the relative grid node from its absolute index using the Map
map | The <int,int> map |
iabs | Absolute rank of the grid node |
int getRankMapRelativeToAbsolute | ( | const std::map< int, int > & | map, |
int | irel | ||
) |
double getTEST | ( | ) |
bool IFFFF | ( | int | value | ) |
Checks if an integer value is TEST
[in] | value | Value to be tested |
bool isEven | ( | int | number | ) |
bool isInteger | ( | double | value, |
double | eps | ||
) |
bool isInternalDebug | ( | ) |
bool isMultiple | ( | int | nbig, |
int | nsmall | ||
) |
bool isOdd | ( | int | number | ) |
bool isOne | ( | double | value, |
double | eps | ||
) |
bool isZero | ( | double | value, |
double | eps | ||
) |
double modifyOperator | ( | const EOperator & | oper, |
double | oldval, | ||
double | value | ||
) |
Update an Old by a New value according to 'oper'
oper | A keywork of EOperator enum |
oldval | Old value |
value | New value |
operate_function operate_Identify | ( | int | oper | ) |
Identify the pointer to a function with following functionality: y = f(x)
oper | Gives the type of operation to be performed 1: returns the value itslef (no change) -1: returns its inverse 2: returns the squared value -2: returns the inverse of the squared value 3: returns its square root -3: returns the inverse of the square root |
double operate_Identity | ( | double | x | ) |
double operate_Inverse | ( | double | x | ) |
double operate_InverseSqrt | ( | double | x | ) |
double operate_InverseSquare | ( | double | x | ) |
double operate_Sqrt | ( | double | x | ) |
double operate_Square | ( | double | x | ) |
void print_range | ( | const char * | title, |
int | ntab, | ||
const double * | tab, | ||
const double * | sel | ||
) |
Print the range of values in an array
[in] | title | optional title (NULL if not defined) |
[in] | ntab | number of values |
[in] | tab | array of values |
[in] | sel | (optional) selection |
double roundZero | ( | double | value, |
double | eps | ||
) |
Round off the value if close enough to zero. This ensures that the printout of a very small value does not come out with a non-significant negative sign This trick should only serve to make printouts similar on different platforms.
value | Input value |
eps | Tolerance to check that the value is considered as small |
void setInternalDebug | ( | bool | status | ) |
|
static |
Return all the combinations of k within n (local recursive routine)
[in] | v | Array of indices to be sorted |
[in] | start | Rank of the starting index |
[in] | n | Total number of objects (>= 1) |
[in] | k | Starting sorting index |
[in] | maxk | Selected number of objects (>= 1) |
[in,out] | ncomb | Current number of combinations |
[in,out] | comb | Current array of combinations |
double truncateDecimals | ( | double | value, |
int | ndec | ||
) |
Rounding a double to a given number of decimals (from: https://stackoverflow.com/questions/304011/truncate-a-decimal-value-in-c/304013#304013)
value | Value to be rounded up |
ndec | Number of significant decimals |
double truncateDigits | ( | double | value, |
int | ndigits | ||
) |
Rounding a double to a given number of decimals
value | Value to be rounded up |
ndigits | Number of significant digits |
void ut_classify | ( | int | nech, |
const double * | tab, | ||
double * | sel, | ||
int | nclass, | ||
double | start, | ||
double | pas, | ||
int * | nmask, | ||
int * | ntest, | ||
int * | nout, | ||
int * | classe | ||
) |
Classify the samples into integer sieves
[in] | nech | Number of samples |
[in] | tab | Array of values |
[in] | sel | Array containing the Selection or NULL |
[in] | nclass | Number of sieve classes |
[in] | start | Starting sieve value |
[in] | pas | Width of the sieve |
[out] | nmask | Number of masked values |
[out] | ntest | Number of undefined values |
[out] | nout | Number of values outside the classes |
[out] | classe | Array for number of samples per sieve |
double ut_cnp | ( | int | n, |
int | k | ||
) |
Compute combinations(n,k)
[in] | n | Total number of objects (>= 1) |
[in] | k | Selected number of objects (>= 1) |
int* ut_combinations | ( | int | n, |
int | maxk, | ||
int * | ncomb | ||
) |
Return all the combinations of k within n
[in] | n | Total number of objects (>1) |
[in] | maxk | Selected number of objects (1<=maxk<n) |
[out] | ncomb | Number of combinations |
double ut_deg2rad | ( | double | angle | ) |
Translates from degree to radian
[in] | angle | Angle in degrees |
void ut_facies_statistics | ( | int | nech, |
double * | tab, | ||
double * | sel, | ||
int * | nval, | ||
int * | mini, | ||
int * | maxi | ||
) |
double ut_median | ( | double * | tab, |
int | ntab | ||
) |
Calculate the median from a table of values
[in] | tab | Array of values |
[in] | ntab | Number of samples |
MatrixSquareGeneral ut_pascal | ( | int | ndim | ) |
Create the matrix containing the Pascal Triangle coefficients
[in] | ndim | Size of the matrix |
double ut_rad2deg | ( | double | angle | ) |
Translates from radian to degree
[in] | angle | Angle in radian |
void ut_shuffle_array | ( | int | nrow, |
int | ncol, | ||
double * | tab | ||
) |
Shuffle an array (by line)
[in] | nrow | Number of rows |
[in] | ncol | Number of columns |
[in,out] | tab | Array to be suffled |
void ut_sort_double | ( | int | safe, |
int | nech, | ||
int * | ind, | ||
double * | value | ||
) |
Sorts the (double) array value() and the array ind() in the ascending order of value
[in] | safe | 1 if the value array if preserved 0 if the value array is also sorted |
[in] | nech | number of samples |
[out] | ind | output int array |
[out] | value | input and output array |
StatResults ut_statistics | ( | int | nech, |
const double * | tab, | ||
const double * | sel, | ||
const double * | wgt | ||
) |
Returns the statistics of an array in a StatResults structure
void ut_stats_mima_print | ( | const char * | title, |
int | nech, | ||
double * | tab, | ||
double * | sel | ||
) |
|
static |
|
static |