anchor.diff:          | true ->
               S * CND(d1) - X * (double(exp(-r * T))) * CND(d2)
           | false -> 
  -            X * double(exp(-r * T)) * CND(d2.Negate()) - S * CND(d1.Negate())
  +            X * double(exp(-r * T)) * CND(-d2) - S * CND(-d1)
   
       res
   
  
positive.code: 
      let L = X.Abs()
      let K = 1.0 / (1.0 + 0.2316419 * L)
      let w = 1.0 - 1.0 / ((double(sqrt(2.0 * System.Math.PI)))) * (L.Negate() * L / 2.0).Exp() * (a1 * K + a2 * (K.Pow(2.0)) + a3 * (K.Pow(3.0)) + a4 * (K.Pow(4.0)) + a5 * (K.Pow(5.0)));
              
      let mask1 = X.Apply<LessThan>()
      let mask2 = X.Apply<GreaterThanOrEqual>()
  
      w * mask2 + (NdArray(1.0) - w) * mask1
   
  
negative.code: ﻿module BlackScholesSolver
  
  open NumCIL.Double
  
  let CND(X:NdArray) =
      let a1 = 0.31938153
  