TPCCLIB
Toggle main menu visibility
Loading...
Searching...
No Matches
libtpcstatist
mean.c
Go to the documentation of this file.
1
4
/*****************************************************************************/
5
#include "tpcclibConfig.h"
6
/*****************************************************************************/
7
#include <stdio.h>
8
#include <stdlib.h>
9
#include <math.h>
10
#include <string.h>
11
/*****************************************************************************/
12
#include "
tpcextensions.h
"
13
/*****************************************************************************/
14
#include "
tpcstatist.h
"
15
/*****************************************************************************/
16
17
/*****************************************************************************/
25
int
statMeanSD
(
27
double
*data,
29
unsigned
int
n,
31
double
*mean,
33
double
*sd,
36
unsigned
int
*vn
37
) {
38
unsigned
int
i, m;
39
double
sumsqr=0.0, sqrsum=0.0;
40
41
if
(mean!=NULL) *mean=nan(
""
);
42
if
(sd!=NULL) *sd=nan(
""
);
43
if
(vn!=NULL) *vn=0;
44
if
(n<1 || data==NULL)
return
(1);
45
for
(i=m=0; i<n; i++)
if
(!isnan(data[i])) m++;
46
if
(m<1)
return
(2);
47
if
(vn!=NULL) *vn=m;
48
49
/* Calculate mean, and sum for possible SD calculation */
50
for
(i=0; i<n; i++)
if
(!isnan(data[i])) sqrsum+=data[i];
51
if
(mean!=NULL) *mean=sqrsum/(double)m;
52
53
/* Calculate SD, if required */
54
if
(sd==NULL)
return
(0);
55
if
(m==1) {*sd=0.0;
return
(0);}
56
sqrsum*=sqrsum;
57
58
for
(i=0; i<n; i++)
if
(!isnan(data[i])) sumsqr+=data[i]*data[i];
59
double
ff=sumsqr - sqrsum/(double)m;
if
(!(ff>0.0)) {*sd=0.0;
return
(0);}
60
*sd=sqrt( ff/(
double
)(m-1) );
61
62
return
(0);
63
}
64
/*****************************************************************************/
65
66
/*****************************************************************************/
73
int
fstatMeanSD
(
75
float
*data,
77
unsigned
int
n,
79
float
*mean,
81
float
*sd,
84
unsigned
int
*vn
85
) {
86
unsigned
int
i, m;
87
float
sumsqr=0.0, sqrsum=0.0;
88
89
if
(mean!=NULL) *mean=nanf(
""
);
90
if
(sd!=NULL) *sd=nanf(
""
);
91
if
(vn!=NULL) *vn=0;
92
if
(n<1 || data==NULL)
return
(1);
93
for
(i=m=0; i<n; i++)
if
(!isnan(data[i])) m++;
94
if
(m<1)
return
(2);
95
if
(vn!=NULL) *vn=m;
96
97
/* Calculate mean, and sum for possible SD calculation */
98
for
(i=0; i<n; i++)
if
(!isnan(data[i])) sqrsum+=data[i];
99
if
(mean!=NULL) *mean=sqrsum/(float)m;
100
101
/* Calculate SD, if required */
102
if
(sd==NULL)
return
(0);
103
if
(m==1) {*sd=0.0;
return
(0);}
104
sqrsum*=sqrsum;
105
106
for
(i=0; i<n; i++)
if
(!isnan(data[i])) sumsqr+=data[i]*data[i];
107
float
ff=sumsqr - sqrsum/(float)m;
if
(!(ff>0.0)) {*sd=0.0;
return
(0);}
108
*sd=sqrtf( ff/(
float
)(m-1) );
109
110
return
(0);
111
}
112
/*****************************************************************************/
113
114
/*****************************************************************************/
statMeanSD
int statMeanSD(double *data, unsigned int n, double *mean, double *sd, unsigned int *vn)
Definition
mean.c:25
fstatMeanSD
int fstatMeanSD(float *data, unsigned int n, float *mean, float *sd, unsigned int *vn)
Definition
mean.c:73
tpcextensions.h
Header file for library libtpcextensions.
tpcstatist.h
Header file for libtpcstatist.
Generated on
for TPCCLIB by
1.17.0