class ISDACompliantCurve extends DoublesCurve {

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

  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);

}