commit f11e1a62d03e91e51f31b5bf23f2ac5af198dc9f
parent 96f3253a1fd102b0056ff662258efc3225cba159
Author: Christophe Coustet <christophe.coustet@meso-star.com>
Date: Wed, 20 Apr 2016 14:54:54 +0200
Handle the nsample==0 case in smc_estimator_get_status
In this case fill the status E SE and V field with the zero of the type.
Diffstat:
1 file changed, 26 insertions(+), 19 deletions(-)
diff --git a/src/smc_estimator.c b/src/smc_estimator.c
@@ -376,26 +376,33 @@ smc_estimator_get_status
{
estimator->status.N = estimator->nsamples;
estimator->status.NF = estimator->nfailed;
- /* Variance */
- estimator->type.divi
- (estimator->status.E, estimator->square_value, estimator->nsamples);
- estimator->type.mul
- (estimator->status.V, estimator->value, estimator->value);
- estimator->type.divi
- (estimator->status.V,
- estimator->status.V,
- estimator->nsamples * estimator->nsamples);
- estimator->type.sub
- (estimator->status.V, estimator->status.E, estimator->status.V);
- /* Standard error */
- estimator->type.divi
- (estimator->status.SE, estimator->status.V, estimator->nsamples);
- estimator->type.sqrt(estimator->status.SE, estimator->status.SE);
- /* Expected value */
- estimator->type.divi
- (estimator->status.E, estimator->value, estimator->nsamples);
+
+ if(estimator->nsamples > 0) {
+ /* Variance */
+ estimator->type.divi
+ (estimator->status.E, estimator->square_value, estimator->nsamples);
+ estimator->type.mul
+ (estimator->status.V, estimator->value, estimator->value);
+ estimator->type.divi
+ (estimator->status.V,
+ estimator->status.V,
+ estimator->nsamples * estimator->nsamples);
+ estimator->type.sub
+ (estimator->status.V, estimator->status.E, estimator->status.V);
+ /* Standard error */
+ estimator->type.divi
+ (estimator->status.SE, estimator->status.V, estimator->nsamples);
+ estimator->type.sqrt(estimator->status.SE, estimator->status.SE);
+ /* Expected value */
+ estimator->type.divi
+ (estimator->status.E, estimator->value, estimator->nsamples);
+ }
+ else {
+ estimator->type.zero(estimator->status.E);
+ estimator->type.zero(estimator->status.SE);
+ estimator->type.zero(estimator->status.V);
+ }
}
*status = estimator->status;
return RES_OK;
}
-