package arkref.ext.fig.basic;
import java.util.*;
/**
* Handle NaN's and infinities separately.
*/
public class CarefulFullStatFig extends FullStatFig {
private int numNaN, numPosInf, numNegInf;
public CarefulFullStatFig() { }
public CarefulFullStatFig(Iterable<Double> c) {
super(c);
}
public int numNaN() { return numNaN; }
public int numPosInf() { return numPosInf; }
public int numNegInf() { return numNegInf; }
public void add(double x) {
if(Double.isNaN(x)) numNaN++;
else if(x == Double.NEGATIVE_INFINITY) numNegInf++;
else if(x == Double.POSITIVE_INFINITY) numPosInf++;
else super.add(x);
}
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(super.toString());
if(numNaN > 0) sb.append(" NaN:"+numNaN);
if(numPosInf > 0) sb.append(" +Inf:"+numPosInf);
if(numNegInf > 0) sb.append(" -Inf:"+numNegInf);
return sb.toString();
}
}