public double[,] GetSNext()
 {
     sNext = MathOps.AddMatrices(MathOps.MatriXNegativeOne(gNext), MathOps.MultiplyMatrixByScalar(s, GetBuffer())); //the buffer here was returning zero
     return(sNext);                                                                                                 //the value of s here is not what it should be
 }
 public double[,] GetS()
 {
     s = MathOps.MatriXNegativeOne(g);
     return(s);
 }
 public double GetBuffer()
 {
     buffer = (MathOps.MultiplyMatrixByMatrix(MathOps.TransposeMatrix(gNext), gNext))
              / (MathOps.MultiplyMatrixByMatrix(MathOps.TransposeMatrix(g), g));
     return(buffer);
 }
 public double[,] GetGNext()
 {
     gNext[0, 0] = MathOps.DifferentiateWrtX1(a, b, c, d, e, f, x[0, 0], x[1, 0]);
     gNext[1, 0] = MathOps.DifferentiateWrtX2(a, b, c, d, e, f, x[0, 0], x[1, 0]);
     return(gNext);
 }