protected override double volatilityImpl(double strike) { double k = Math.Log(Math.Max(strike, 1E-6) / forward_); double totalVariance = Utils.sviTotalVariance(param_[0], param_[1], param_[2], param_[3], param_[4], k); return(Math.Sqrt(Math.Max(0.0, totalVariance / exerciseTime()))); }