anchor.diff:              let paramCount = solverOptions.InitialParamGuess.Length
               let dataPointCount = xData.Length
               let currentParamGuess = Vector.ofArray solverOptions.InitialParamGuess
  -            let newParamGuess     = Vector.zero paramCount
               let jacobian       = Matrix.create dataPointCount paramCount 0.
               let residualVector = Vector.create dataPointCount 0.
               ///
               currentValueRSS <- getRSS model xData yData currentParamGuess
               while (anotherIteration = true) do 
  -
                   /// 
                   let jacobian' = updateJacobianInplace model dataPointCount xData currentParamGuess jacobian            
                   ///
  
positive.code:                 let step = 
                       LinearAlgebra.SolveLinearSystem (LinearAlgebra.Cholesky hessian) (Matrix.mulV (Matrix.transpose jacobian') residualVector')     
                  ///
                  let newParamGuess = Vector.sub currentParamGuess step
                  /// 
                  newValueRSS <- getRSS model xData yData newParamGuess
                  ///
  
negative.code:                 ///
                  let step = LinearAlgebra.SolveLinearSystem ((hessian + Matrix.scale lambda diagonal) |> LinearAlgebra.Cholesky) (Matrix.mulV (Matrix.transpose jacobian') residualVector')
                  ///
                  let newParamGuess = currentParamGuess - step
                  /// 
                  newValueRSS <- getRSS model xData yData newParamGuess
                  //
                  paramsAtIteration.Add(newParamGuess)     
                  /// 
                  anotherIteration <- shouldTerminate currentValueRSS newValueRSS paramsAtIteration.Count currentParamGuess newParamGuess solverOptions
                  ///
                  if newValueRSS < currentValueRSS then
                      Vector.inplace_mapi (fun i _ -> newParamGuess.[i]) currentParamGuess
  