12#ifndef O2_MCH_MATHUTIL_H
13#define O2_MCH_MATHUTIL_H
29inline static void vectorSetZero(
double* u,
int N)
31 for (
int i = 0;
i < N;
i++) {
37inline static void vectorSetZeroInt(
int* u,
int N)
39 for (
int i = 0;
i < N;
i++) {
45inline static void vectorSetZeroShort(
short* u,
int N)
47 for (
int i = 0;
i < N;
i++) {
53inline static void vectorSetZeroChar(
char* u,
int N)
55 for (
int i = 0;
i < N;
i++) {
61inline static void vectorSet(
double* u,
double value,
int N)
63 for (
int i = 0;
i < N;
i++) {
69inline static void vectorSetInt(
int* u,
int value,
int N)
71 for (
int i = 0;
i < N;
i++) {
77inline static void vectorSetShort(
short* u,
short value,
int N)
79 for (
int i = 0;
i < N;
i++) {
85inline static void vectorCopy(
const double*
src,
int N,
double* dest)
87 for (
int i = 0;
i < N;
i++) {
93inline static void vectorCopyShort(
const short*
src,
int N,
short* dest)
95 for (
int i = 0;
i < N;
i++) {
101inline static void vectorAddVector(
const double* u,
double cst,
const double*
v,
104 for (
int i = 0;
i < N;
i++) {
110inline static void vectorAbs(
const double* u,
int N,
double*
res)
112 for (
int i = 0;
i < N;
i++) {
118inline static void vectorAddScalar(
const double* u,
double cst,
int N,
121 for (
int i = 0;
i < N;
i++) {
127inline static void vectorMultVector(
const double* u,
const double*
v,
int N,
130 for (
int i = 0;
i < N;
i++) {
136inline static void vectorMultVectorShort(
const short* u,
const short*
v,
int N,
139 for (
int i = 0;
i < N;
i++) {
145inline static void vectorMultScalar(
const double* u,
double cst,
int N,
148 for (
int i = 0;
i < N;
i++) {
154inline static double vectorDotProd(
const double* u,
const double*
v,
int N)
157 for (
int i = 0;
i < N;
i++) {
163inline static double vectorNorm(
const double* u,
int N)
166 for (
int i = 0;
i < N;
i++) {
172inline static double vectorSum(
const double* u,
int N)
175 for (
int i = 0;
i < N;
i++) {
181inline static int vectorSumInt(
const int* u,
int N)
184 for (
int i = 0;
i < N;
i++) {
190inline static int vectorSumShort(
const short* u,
int N)
193 for (
int i = 0;
i < N;
i++) {
199inline static int vectorSumChar(
const char* u,
int N)
202 for (
int i = 0;
i < N;
i++) {
208inline static int vectorSumRowInt(
const int* matrix,
int N,
int M)
211 for (
int j = 0;
j < M;
j++) {
217inline static int vectorSumColumnInt(
const int* matrix,
int N,
int M)
220 for (
int i = 0;
i < N;
i++) {
221 res += matrix[
i * M];
226inline static int vectorSumRowChar(
const char* matrix,
int N,
int M)
229 for (
int j = 0;
j < M;
j++) {
235inline static int vectorSumColumnChar(
const char* matrix,
int N,
int M)
238 for (
int i = 0;
i < N;
i++) {
239 res += matrix[
i * M];
244inline static double vectorMin(
const double* u,
int N)
246 double res = DBL_MAX;
247 for (
int i = 0;
i < N;
i++) {
253inline static double vectorMax(
const double* u,
int N)
255 double res = -DBL_MAX;
256 for (
int i = 0;
i < N;
i++) {
262inline static short vectorMaxShort(
const short* u,
int N)
264 short res = SHRT_MIN;
265 for (
int i = 0;
i < N;
i++) {
271inline static void vectorMaxScalar(
const double* u,
double cst,
int N,
double*
res)
273 for (
int i = 0;
i < N;
i++) {
274 res[
i] = std::fmax(cst, u[
i]);
278inline static void vectorMinScalar(
const double* u,
double cst,
int N,
double*
res)
280 for (
int i = 0;
i < N;
i++) {
281 res[
i] = std::fmin(cst, u[
i]);
287inline static void vectorNotShort(
const short*
src,
int N,
short* dest)
289 for (
int i = 0;
i < N;
i++) {
298inline static int vectorSumOfGreater(
const double*
src,
double cmpValue,
302 for (
int i = 0;
i < N;
i++) {
308inline static int vectorArgMax(
const double* u,
int N)
311 double maxVal = DBL_MIN;
312 for (
int i = 0;
i < N;
i++) {
321inline static int vectorArgMin(
const double* u,
int N)
324 double minVal = DBL_MAX;
325 for (
int i = 0;
i < N;
i++) {
337inline static int vectorBuildMaskEqualShort(
const short*
src,
short value,
341 for (
int i = 0;
i < N;
i++) {
348inline static void vectorBuildMaskGreater(
const double*
src,
double value,
351 for (
int i = 0;
i < N;
i++) {
357inline static void vectorBuildMaskLess(
const double*
src,
double value,
360 for (
int i = 0;
i < N;
i++) {
366inline static void vectorBuildMaskEqual(
const double*
src,
double value,
int N,
369 for (
int i = 0;
i < N;
i++) {
375inline static int vectorGetIndexFromMaskInt(
const Mask_t*
mask,
int N,
379 for (
int i = 0;
i < N;
i++) {
390inline static void vectorAppyMapIdxInt(
const int* vect,
const int* map,
int N,
393 for (
int i = 0;
i < N;
i++) {
394 mappedVect[
i] = map[
vect[
i]];
399inline static int vectorGather(
const double*
v,
const Mask_t*
mask,
int N,
400 double* gatherVector)
403 for (
int i = 0;
i < N;
i++) {
405 gatherVector[k++] =
v[
i];
411inline static int vectorScatter(
const double*
v,
const Mask_t*
mask,
int N,
415 for (
int i = 0;
i < N;
i++) {
417 scatterVec[
i] =
v[k++];
422inline static int vectorScatterShort(
const short*
v,
const Mask_t*
mask,
int N,
426 for (
int i = 0;
i < N;
i++) {
428 scatterVec[
i] =
v[k++];
434inline static int vectorGatherShort(
const short*
v,
const Mask_t*
mask,
int N,
438 for (
int i = 0;
i < N;
i++) {
440 gatherVector[k++] =
v[
i];
446inline static int vectorGetIndexFromMaskShort(
const Mask_t*
mask,
int N,
450 for (
int i = 0;
i < N;
i++) {
458inline static int vectorGetIndexFromMask(
const Mask_t*
mask,
int N,
462 for (
int i = 0;
i < N;
i++) {
470inline static void vectorMaskedSet(
const Mask_t*
mask,
const double* vTrue,
471 const double* vFalse,
int N,
double* vR)
473 for (
int i = 0;
i < N;
i++) {
474 vR[
i] = (
mask[
i]) ? vTrue[
i] : vFalse[
i];
479inline static void vectorMaskedUpdate(
const Mask_t*
mask,
const double* vTrue,
482 for (
int i = 0;
i < N;
i++) {
483 vR[
i] = (
mask[
i]) ? vTrue[
i] : vR[
i];
488inline static double vectorMaskedSum(
const double*
v,
const Mask_t*
mask,
492 for (
int i = 0;
i < N;
i++) {
498inline static void vectorMaskedMult(
const double*
v,
const Mask_t*
mask,
int N,
501 for (
int i = 0;
i < N;
i++) {
507inline static void vectorMaskedMultScalar(
double*
v,
const Mask_t*
mask,
508 double trueVal,
double falseVal,
511 for (
int i = 0;
i < N;
i++) {
512 v[
i] = (
mask[
i]) ?
v[
i] * trueVal :
v[
i] * falseVal;
517inline static void vectorMapShort(
short*
array,
const short* map,
int N)
519 for (
int i = 0;
i < N;
i++) {
526 if (
ptr !=
nullptr) {
534 if (
ptr !=
nullptr) {
542 if (
ptr !=
nullptr) {
float sum(float s, o2::dcs::DataPointValue v)
GLsizei const GLfloat * value
void vectorPrintShort(const char *str, const short *x, int K)
void printMatrixInt(const char *str, const int *matrix, int N, int M)
void deleteDouble(double *ptr)
void vectorPrint2Columns(const char *str, const double *x, const double *y, int K)
void vectorPrint(const char *str, const double *x, int K)
void printMatrixShort(const char *str, const short *matrix, int N, int M)
void printInterMap(const char *str, const PadIdx_t *inter, int N)
void deleteShort(short *ptr)
void printMatrixChar(const char *str, const char *matrix, int N, int M)
void vectorPrintInt(const char *str, const int *x, int K)
value_T gpu::gpustd::array< value_T, 7 > & vect
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...