public void visit(CashOrNothingPayoff payoff)
{
black_.alpha_ = black_.DalphaDd1_ = 0.0;
black_.X_ = payoff.cashPayoff();
black_.DXDstrike_ = 0.0;
switch (payoff.optionType())
{
case Option.Type.Call:
black_.beta_ = black_.cum_d2_;
black_.DbetaDd2_ = black_.n_d2_;
break;
case Option.Type.Put:
black_.beta_ = 1.0 - black_.cum_d2_;
black_.DbetaDd2_ = -black_.n_d2_;
break;
default:
throw new ArgumentException("invalid option type");
}
}