anchor.diff:  
   
       module ProbabilityMatrix =
  -        type T(matrix: Probability.InnerType [], nrow: int, ncol: int) =
  +        type T(matrix: Probability.InnerType.T [], nrow: int, ncol: int) =
               let ncol = ncol
               let nrow = nrow
               let getSingleIndex (cell: Cell.T) = cell.Row * ncol + cell.Column
  
positive.code: 
      module Probability =
  //        type InnerType = bool
          type InnerType = float
          type T = FloatProbability of InnerType
  
          let innerValue (FloatProbability v) = v
          let fromInnerValue v = v |> FloatProbability
  
  //        let inline innerSumm v1 v2 = v1 || v2
  //        let inline innerMult v1 v2 = v1 && v2
          let innerSummQuote = <@ fun (v1: InnerType) (v2: InnerType) -> v1 + v2 @>
          let innerMultQuote = <@ fun (v1: InnerType) (v2: InnerType) -> v1 * v2 @>
          let innerTypeQuote = <@ float @>
          let innerZeroQuote = <@ (%innerTypeQuote) 0. @>
          
          let createInnerType = float
          let innerZero = createInnerType 0.
          let innerSumm v1 v2 = v1 + v2
          let innerMult v1 v2 = v1 * v2
  
          let create = createInnerType >> fromInnerValue
          let unwrap = innerValue >> double
          
          let isZero v = innerValue v = innerZero        
          let zero = fromInnerValue innerZero
          //todo: compile quote
  
          let summ (FloatProbability v1) (FloatProbability v2) = innerSumm v1 v2 |> fromInnerValue
  
negative.code: 
              member this.getInnerFromCell (cell: Cell.T) =
                  if isOutOfStorage cell
                  then Probability.InnerType.zero
                  else data.[getSingleIndex cell]
  
              member this.Item
                  with get cell = Probability.fromInnerValue <| this.getInnerFromCell cell    
                  
              member this.SubMatrixValuesGetter (submatrix: SubMatrix.T) isTransponed =
                  let leftCell = submatrix.Left 
  
                  if isTransponed then Cell.transpone else id 
                  >> Cell.shift leftCell.Row leftCell.Column
                  >> this.getInnerFromCell 
  //                >> Probability.InnerType.unwrap                             
  
              member this.GetSubArray fromInner (submatrix: SubMatrix.T) isTransponed  =
                  let valueGetter = this.SubMatrixValuesGetter submatrix isTransponed
                  Array.init (submatrix.Size * submatrix.Size) ((cellBySingleIndex submatrix.Size) >> valueGetter >> fromInner)
  
              member this.AddValueToCell cell prob = 
                  let x = getSingleIndex cell
  