function [C] = binary(S,E,r,sigma,tau,B)
%
% Calcula o valor de uma cash-or-nothing-call.
%
% Input:  S (valor do activo em t)
%         E (preço de exercício)
%         r (taxa de juro)
%         sigma (volatilidade)
%         tau (distância à maturidade, tau=T-t)
%         B (recompensa quando S >= E na maturidade)
%
% Output: C (valor da call)
%         
% Adaptado por L. Nunes Vicente, Abril de 2006, de
% An Introduction to Financial Option Valuation: Mathematics, 
% Stochastics and Computation, D. J. Higham,
% Cambridge University Press, 2004,
% http://www.maths.strath.ac.uk/~aas96106/option_book.html.
%
if tau > 0
%
   d1 = (log(S/E) + (r + 0.5*sigma^2)*(tau))/(sigma*sqrt(tau));
   d2 = d1 - sigma*sqrt(tau);
   N2 = 0.5*( 1 + erf(d2/sqrt(2)) );
%
   C  = B*exp(-r*(tau))*N2;
%
else
%
   if S >= E
      C = B;
   else
      C = 0;
   end
%
end
%
% Fim - binary.
