anchor.diff:          | DMF(ap,at,ai) -> DVF(ap.[rowStart..rowFinish, col], at.[rowStart..rowFinish, col], ai)
           | DMR(ap,_,_,_,ai) -> let cp = ap.[rowStart..rowFinish, col] in DVR(cp, ref (DV.ZeroN cp.Length), SliceCol_DM(d, rowStart, col), ref 0u, ai)
   
  -    member d.Sum() =
  -        match d with
  -        | DM(ap) -> D(NonBLAS.m_sum(ap))
  -        | DMF(ap,at,ai) -> DF(ap.Sum(), at.Sum(), ai)
  -        | DMR(ap,_,_,_,ai) -> DR(ap.Sum(), ref (D 0.), Sum_DM(d), ref 0u, ai)
  -    member d.Transpose() =
  -        match d with
  -        | DM(ap) -> DM(NonBLAS.m_transpose(ap))
  -        | DMF(ap,at,ai) -> DMF(ap.Transpose(), at.Transpose(), ai)
  -        | DMR(ap,_,_,_,ai) -> DMR(ap.Transpose(), ref (DM.ZeroMN d.Cols d.Rows), Transpose_DM(d), ref 0u, ai)
       member d.GetRows() =
           seq {for i = 0 to d.Rows - 1 do yield d.[i,*]}
       member d.GetCols() =
  
positive.code:     let inline ofArray2D a = DM.ofArray2D(a)
      let inline ofArray m a = DM.ofArray(m, a)
      let inline ofRows s = DM.ofRows(s)
      let inline transpose (m:DM) = m.Transpose()
      let inline ofCols (s:seq<DV>) = s |> ofRows |> transpose
      let inline toRows (m:DM) = m.GetRows()
      let inline toCols (m:DM) = m.GetCols()
  
negative.code:     let inline zeroCreate n = DV.ZeroN n
      let inline init n f = DV.ofArray(Array.init n f)
      let inline copy (v:DV) = v.Copy()
      let inline l1norm (v:DV) = DV.L1Norm(v)
      let inline l2norm (v:DV) = DV.L2Norm(v)
      let inline l2normSq (v:DV) = DV.L2NormSq(v)
      let inline norm (v:DV) = DV.L2Norm(v)
      let inline normSq(v:DV) = DV.L2NormSq(v)
      // TODO: implement supNorm (infinity norm, with BLAS IDAMAX)
      let inline append (v1:DV) (v2:DV) = DV.Append(v1, v2)
      let inline prepend (v1:DV) (v2:DV) = DV.Append(v2, v1)
      let inline split (n:seq<int>) (v:DV) = v.Split(n)
      let inline sum (v:DV) = DV.Sum(v)
      let inline standardBasis (n:int) (i:int) = DV(Array.init n (fun j -> if i = j then 1. else 0.))
  
  [<RequireQualifiedAccess>]
  