ScatterDraw: Improved Null data handling

git-svn-id: svn://ultimatepp.org/upp/trunk@8829 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
koldo 2015-08-21 21:20:26 +00:00
parent 3655e1f3d8
commit 3123221e44
3 changed files with 84 additions and 6 deletions

View file

@ -11,6 +11,8 @@ double DataSource::Min(Getdatafun getdata) {
if (!IsNull(d) && minVal > d)
minVal = d;
}
if (minVal == -DOUBLE_NULL)
return Null;
return minVal;
}
@ -21,25 +23,44 @@ double DataSource::Max(Getdatafun getdata) {
if (!IsNull(d) && maxVal < d)
maxVal = d;
}
if (maxVal == DOUBLE_NULL)
return Null;
return maxVal;
}
double DataSource::Avg(Getdatafun getdata) {
double ret = 0;
for (int64 i = 0; i < GetCount(); ++i)
ret += Membercall(getdata)(i);
return ret/GetCount();
int count = 0;
for (int64 i = 0; i < GetCount(); ++i) {
double d = Membercall(getdata)(i);
if (!IsNull(d)) {
ret += d;
count++;
}
}
if (count == 0)
return Null;
return ret/count;
}
double DataSource::Variance(Getdatafun getdata, double avg) {
if (IsNull(avg))
avg = Avg(getdata);
if (IsNull(avg))
return Null;
double ret = 0;
int count = 0;
for (int64 i = 0; i < GetCount(); ++i) {
double val = Membercall(getdata)(i) - avg;
ret += val*val;
double d = Membercall(getdata)(i);
if (!IsNull(d)) {
d -= avg;
ret += d*d;
count++;
}
}
return ret/(GetCount() - 1);
if (count <= 0)
return Null;
return ret/(count - 1);
}
double DataSource::StdDev(Getdatafun getdata, double avg) {