if (min == Double.POSITIVE_INFINITY) min = max = 0.0;
  protected void setNumeric() {    m_isNumeric = true;    /*      m_maxC = mxC;	    m_minC = mnC; */    double min=Double.POSITIVE_INFINITY;    double max=Double.NEGATIVE_INFINITY;    double value;    for (int i=0;i<m_Instances.numInstances();i++) {      if (!m_Instances.instance(i).isMissing(m_cIndex)) {	value = m_Instances.instance(i).value(m_cIndex);	if (value < min) {	  min = value;	}	if (value > max) {	  max = value;	}      }    }         m_minC = min; m_maxC = max;    int whole = (int)Math.abs(m_maxC);    double decimal = Math.abs(m_maxC) - whole;    int nondecimal;    nondecimal = (whole > 0)       ? (int)(Math.log(whole) / Math.log(10))      : 1;        m_precisionC = (decimal > 0)       ? (int)Math.abs(((Math.log(Math.abs(m_maxC)) / 				      Math.log(10))))+2      : 1;    if (m_precisionC > VisualizeUtils.MAX_PRECISION) {      m_precisionC = 1;    }    String maxStringC = Utils.doubleToString(m_maxC,					     nondecimal+1+m_precisionC					     ,m_precisionC);    if (m_labelMetrics != null) {      m_HorizontalPad = m_labelMetrics.stringWidth(maxStringC);    }    whole = (int)Math.abs(m_minC);    decimal = Math.abs(m_minC) - whole;    nondecimal = (whole > 0)       ? (int)(Math.log(whole) / Math.log(10))      : 1;         m_precisionC = (decimal > 0)        ? (int)Math.abs(((Math.log(Math.abs(m_minC)) / 				      Math.log(10))))+2      : 1;     if (m_precisionC > VisualizeUtils.MAX_PRECISION) {       m_precisionC = 1;     }         maxStringC = Utils.doubleToString(m_minC,				       nondecimal+1+m_precisionC				       ,m_precisionC);     if (m_labelMetrics != null) {       if (m_labelMetrics.stringWidth(maxStringC) > m_HorizontalPad) {	 m_HorizontalPad = m_labelMetrics.stringWidth(maxStringC);       }     }    setOn(true);    this.repaint();  }