class BlackFormulaRepository {

  public static double impliedStrike(double delta, boolean isCall, double forward, double time, double volatility) {
    ArgChecker.isTrue(delta > -1 && delta < 1, "Delta out of range");
    ArgChecker.isTrue(isCall ^ (delta < 0), "Delta incompatible with call/put: {}, {}", isCall, delta);
    ArgChecker.isTrue(forward > 0, "Forward negative");
    double omega = (isCall ? 1d : -1d);
    double strike = forward *
        Math.exp(-volatility * Math.sqrt(time) * omega * NORMAL.getInverseCDF(omega * delta) + volatility * volatility *
            time / 2);
    return strike;
  }

  private  BlackFormulaRepository();

}