class ISDACompliantCurve extends DoublesCurve {

  public double getZeroRate(final double t) {
    ArgumentChecker.isTrue(t >= 0, "require t >= 0.0");
    // short-cut doing binary search
    if (t <= _t[0]) {
      return _rt[0] / _t[0];
    }
    final int n = _t.length;
    if (t > _t[n - 1]) {
      final double rt = getRT(t, n - 1);
      return rt / t;
    }
    final int index = Arrays.binarySearch(_t, t);
    if (index >= 0) {
      return _rt[index] / _t[index];
    }
    final int insertionPoint = -(1 + index);
    final double rt = getRT(t, insertionPoint);
    return rt / t;
  }

  protected  ISDACompliantCurve();
  public  ISDACompliantCurve(final double t, final double r);
  public  ISDACompliantCurve(final double[] t, final double[] r);
  protected  ISDACompliantCurve(final double[][] tAndRt);
  protected  ISDACompliantCurve(final ISDACompliantCurve from);
  protected  ISDACompliantCurve(final double[] timesFromBaseDate, final double[] r, final double newBaseFromOriginalBase);

}