anchor.diff:          |> Seq.windowed 2
           |> Seq.map (fun a -> a.[1] - a.[0])
   
  -    let computeChiSquared (bwQuantile : float)  (m:float[,]) =
  +    let computeChiSquared (bwQuantile : float)  (m:Matrix<float>) =
                   
           let unfoldedEgv = 
  -            FSharp.Stats.Algebra.LinearAlgebra.EigenSpectrumWhenSymmetric (Matrix.ofArray2D m)
  +            FSharp.Stats.Algebra.LinearAlgebra.EigenSpectrumWhenSymmetric m
               |> fun (eigenvectors,eigenvalues) -> 
                   let spUnfold =
                       eigenvalues 
  
positive.code: 
      ///Computes the critical Threshold for which the NNSD of the matrix significantly abides from the Wigner-Surmise
      /// bwQuantile uses % data to calculate a more robust histogram //0.9 0.01 0.05
      let compute (bwQuantile : float) accuracy (sigCriterion : float) (m:float[,]) =
          computeWithInterval bwQuantile accuracy sigCriterion m (0.,1.)
                  
              
  
negative.code:     /// Computes the critical Threshold for which the NNSD of the matrix significantly abides from the Wigner-Surmise
      /// bwQuantile uses % data to calculate a more robust histogram //0.9 0.01 0.05
      /// to reduce the search space for the threshold you can restrict the range to [leftBorder,rightBorder]
      let computeWithInterval (bwQuantile : float) accuracy (sigCriterion : float) (m:Matrix<float>) (leftBorder,rightBorder) =
  
          let rec stepSearch previousChi left right =
              let thr = (left + right) / 2.
              let chi =
                  m
                  |> Matrix.map (fun v -> if abs v > thr then v else 0.)
                  |> computeChiSquared bwQuantile
  
              if right - left > accuracy then 
  