anchor.diff:      for i in 0 .. rows * columns - 1 do
           if System.Math.Abs(float32 (cParallel.[i] - cNormal.[i])) > 0.00001f
           then
  -            sprintf "Expected: %A Actual: %A Error = %A" cNormal.[i] cParallel.[i]
  -                                                         (System.Math.Abs(cParallel.[i] - cNormal.[i]))
  +            sprintf "Expected: %A Actual: %A Error = %A" cNormal.[i] cParallel.[i] (System.Math.Abs(cParallel.[i] - cNormal.[i]))
               |> failwith
   
       printfn "done."
   
  -    Timer<string>.Global.Average(".NET") |> printfn "Avg. time, C#: %A" 
  -    Timer<string>.Global.Average("OpenCL") |> printfn "Avg. time, OpenCL: %A" 
  +    Timer<string>.Global.Average(".NET") |> printfn "Avg. time, C#: %A"
  +    Timer<string>.Global.Average("OpenCL") |> printfn "Avg. time, OpenCL: %A"
   
       aBuffer.Dispose()
       bBuffer.Dispose()
       cBuffer.Dispose()
   
       commandQueue.Dispose()
  -    provider.Dispose()   
  +    provider.Dispose()
   
  -do Main()        +do Main()
positive.code: 
      printfn "Multiplying two %Ax%A matrices %A times using .NET..." rows columns iterations
      let cNormal = Array.zeroCreate (rows * columns)
      for i in 0 .. iterations - 1 do    
          Timer<string>.Global.Start()
          Multiply aValues rows columns bValues rows columns cNormal
          Timer<string>.Global.Lap(".NET")
  
negative.code:     printfn "Multiplying two %Ax%A matrices %A times using Brahma.OpenCL and selected platform/device..." rows columns iterations
      for i in 0 .. iterations - 1 do
          Timer<string>.Global.Start()
          commandQueue <-
              commandQueue.Add(kernel.Run(new _2D(rows, columns, localWorkSize, localWorkSize), aBuffer, bBuffer, cBuffer)).Finish()
              :?> CommandQueue
          Timer<string>.Global.Lap("OpenCL")
  