anchor.diff:  
           compareBinaryOps (fun x y -> x.pow(y)) (fun x y -> x.powExt(y)) n (fun () -> dsharp.randn(10).abs(), dsharp.randn(10))
           compareBinaryOps (fun x y -> x.mul(y)) (fun x y -> x.mulExt(y)) n (fun () -> dsharp.randn(10), dsharp.randn(10))
  -        compareBinaryOps (fun x y -> x.matmul(y)) (fun x y -> x.matmulExt(y)) 10 (fun () -> dsharp.randn([4; 3]), dsharp.randn([3; 5]))+        compareBinaryOps (fun x y -> x.matmul(y)) (fun x y -> x.matmulExt(y)) 10 (fun () -> dsharp.randn([4; 3]), dsharp.randn([3; 5]))
  
positive.code:             let revx2 = x
              let revy2 = y.reverseDiff()
              let revz1 = op1 revx1 revy1
              let revz2 = op1 revx2 revy2
              revz1.reverse(zd)
              revz2.reverse(zd)
              let revxd1 = revx1.isNoDiff
  
negative.code:             let revx1 = x.reverseDiff()
              let revx2 = x.reverseDiff()
              let revz1 = op1 revx1
              let revz2 = op2 revx2
              revz1.reverse(zd)
              revz2.reverse(zd)
              let revxd1 = revx1.derivative
  