anchor.diff:                      for d in 0 .. nd - 1 do
                           pos64.[d] <- int64 trgtPosIter.Pos.[d]
                       for i in 0 .. shape.[nd-1] - 1 do
  +                        //printfn "shape: %A pos64: %A" trgt.FastLayout.Shape pos64
                           trgt.Data.[trgtAddr] <- scalarOp pos64
                           trgtAddr <- trgtAddr + trgt.FastLayout.Stride.[nd-1]
                           pos64.[nd-1] <- pos64.[nd-1] + 1L
  
positive.code:         {Data=this.Data; FastLayout=this.FastLayout}
                
      /// gets DataAndLayout for specified tensors
      static member internal GetDataAndLayout (t: Tensor<'T>, a: Tensor<'TA>) =
          (t.Backend :?> TensorHostBackend<'T>).DataAndLayout, 
          (a.Backend :?> TensorHostBackend<'TA>).DataAndLayout 
  
      /// gets layouts for specified targets and sources, optimized for an element-wise operation
      static member internal ElemwiseLayouts (trgt: TensorLayout, srcs: TensorLayout list) =
  
negative.code:             ScalarOps.ApplyUnaryOp (scalarOp, trgt, a, isIndexed=false, useThreads=useThreads)
  
          member this.MapIndexed (fn, trgt, a, useThreads) = 
              let trgt, a = TensorHostBackend<_>.GetDataAndLayout (trgt, a)
              ScalarOps.ApplyUnaryOp (fn, trgt, a, isIndexed=true, useThreads=useThreads)
  
          member this.Map2 (fn, trgt, a, b, useThreads) = 
  