anchor.diff:      
       /// Add submatrix `b` to matrix `a`, where the upper left corner of `b` is positioned at row `i` and column `j`
       static member AddSubMatrix (a:DM, i:int, j:int, b:DM) =
  -        let inline ff(a:float32[,], bb:float32[,]) = 
  +        let inline ff(a:number[,], bb:number[,]) = 
               let aa = Array2D.copy a 
   //            Parallel.For(0, b.Rows, fun ii -> 
   //                Parallel.For(0, b.Cols, fun jj ->
  
positive.code:                             | Atan2_D_DMCons(a, cons) -> pushRec ((bx (DM.Sum(d.A .* cons ./ ((a.P * a.P) + (cons .* cons)))) a) :: t)
                              | Atan2_DCons_DM(cons, b) -> pushRec ((bx (d.A * (-cons) ./ ((cons * cons) + (b.P .* b.P))) b) :: t)
                              | Log_DM(a) -> pushRec ((bx (d.A ./ a.P) a) :: t)
                              | Log10_DM(a) -> pushRec ((bx (d.A ./ (a.P * log10ValFloat32)) a) :: t)
                              | Exp_DM(a) -> pushRec ((bx (d.A .* d.P) a) :: t) // d.P = exp a.P
                              | Sin_DM(a) -> pushRec ((bx (d.A .* cos a.P) a) :: t)
                              | Cos_DM(a) -> pushRec ((bx (-d.A .* sin a.P) a) :: t)
                              | Tan_DM(a) -> let seca = D 1.f / cos a.P in pushRec ((bx (d.A .* seca .* seca) a) :: t)
                              | Neg_DM(a) -> pushRec ((bx -d.A a) :: t)
                              | Sqrt_DM(a) -> pushRec ((bx (d.A ./ (2.f * d.P)) a) :: t) // d.P = sqrt a.P
                              | Sinh_DM(a) -> pushRec ((bx (d.A .* cosh a.P) a) :: t)
                              | Cosh_DM(a) -> pushRec ((bx (d.A .* sinh a.P) a) :: t)
                              | Tanh_DM(a) -> let secha = D 1.f / cosh a.P in pushRec ((bx (d.A .* secha .* secha) a) :: t)
                              | Asin_DM(a) -> pushRec ((bx (d.A ./ sqrt (D 1.f - (a.P .* a.P))) a) :: t)
                              | Acos_DM(a) -> pushRec ((bx (-d.A ./ sqrt (D 1.f - (a.P .* a.P))) a) :: t)
                              | Atan_DM(a) -> pushRec ((bx (d.A ./ (D 1.f + (a.P .* a.P))) a) :: t)
                              | Abs_DM(a) -> pushRec ((bx (d.A .* DM.Sign a.P) a) :: t)
                              | Sign_DM(a) -> pushRec ((bx DM.Zero a) :: t)
                              | Floor_DM(a) -> pushRec ((bx DM.Zero a) :: t)
  
negative.code:         sb.ToString()
      static member Zero = DV Array.empty
      static member ZeroN n = DV(Array.zeroCreate n)
      static member op_Explicit(d:DV):number[] =
          let rec prec x =
              match x with
              | DV(p) -> p
  