%description: merging two weighted cStdDev objects Note: MSVC prints NaN as -1.#IND and 1.#QNAN, so we need to %subst them to their gcc equivalent. %global: void print(cStdDev& s) { EV << s.getName() << " n=" << s.getCount() << " w=" << s.getSumWeights() << " min=" << s.getMin() << " max=" << s.getMax() << " mean=" << s.getMean() << " stddev=" << s.getStddev() << " var=" << s.getVariance() << endl; } void collect(cModule *mod, int na, int nb) { cStdDev a("a", true); cStdDev b("b", true); cStdDev s("ref", true); for (int i=0; idblrand()+8; double weight = mod->dblrand(); s.collectWeighted(d, weight); a.collectWeighted(d, weight); } for (int i=0; idblrand()*10; double weight = 1+5*mod->dblrand(); s.collectWeighted(d, weight); b.collectWeighted(d, weight); } print(a); print(b); a.merge(&b); a.setName("a+b"); print(a); print(s); EV << "---\n"; } %activity: collect(this,10,20); // corner cases collect(this,0,0); collect(this,0,1); collect(this,0,5); collect(this,1,0); collect(this,5,0); %subst: /-?1\.#INF/inf/ %subst: /-?1\.#IND/nan/ %subst: /-?1\.#QNAN/nan/ %subst: /-?NaN/nan/ %subst: /-?\-nan/nan/ %contains: stdout a n=10 w=5.25482 min=9.91721 max=12.8183 mean=10.8993 stddev=0.753895 var=0.568357 b n=20 w=77.4722 min=0.202184 max=9.78618 mean=5.98712 stddev=3.25594 var=10.6012 a+b n=30 w=82.727 min=0.202184 max=12.8183 mean=6.29914 stddev=3.37705 var=11.4045 ref n=30 w=82.727 min=0.202184 max=12.8183 mean=6.29914 stddev=3.37705 var=11.4045 --- a n=0 w=0 min=nan max=nan mean=nan stddev=nan var=nan b n=0 w=0 min=nan max=nan mean=nan stddev=nan var=nan a+b n=0 w=0 min=nan max=nan mean=nan stddev=nan var=nan ref n=0 w=0 min=nan max=nan mean=nan stddev=nan var=nan --- a n=0 w=0 min=nan max=nan mean=nan stddev=nan var=nan b n=1 w=1.93166 min=2.64556 max=2.64556 mean=2.64556 stddev=inf var=inf a+b n=1 w=1.93166 min=2.64556 max=2.64556 mean=2.64556 stddev=inf var=inf ref n=1 w=1.93166 min=2.64556 max=2.64556 mean=2.64556 stddev=inf var=inf --- a n=0 w=0 min=nan max=nan mean=nan stddev=nan var=nan b n=5 w=12.8125 min=0.187898 max=7.74234 mean=5.19716 stddev=3.18406 var=10.1382 a+b n=5 w=12.8125 min=0.187898 max=7.74234 mean=5.19716 stddev=3.18406 var=10.1382 ref n=5 w=12.8125 min=0.187898 max=7.74234 mean=5.19716 stddev=3.18406 var=10.1382 --- a n=1 w=0.222321 min=11.0605 max=11.0605 mean=11.0605 stddev=nan var=nan b n=0 w=0 min=nan max=nan mean=nan stddev=nan var=nan a+b n=1 w=0.222321 min=11.0605 max=11.0605 mean=11.0605 stddev=nan var=nan ref n=1 w=0.222321 min=11.0605 max=11.0605 mean=11.0605 stddev=nan var=nan --- a n=5 w=3.25445 min=9.79754 max=12.7187 mean=11.0909 stddev=1.28883 var=1.66109 b n=0 w=0 min=nan max=nan mean=nan stddev=nan var=nan a+b n=5 w=3.25445 min=9.79754 max=12.7187 mean=11.0909 stddev=1.28883 var=1.66109 ref n=5 w=3.25445 min=9.79754 max=12.7187 mean=11.0909 stddev=1.28883 var=1.66109 ---