public void Add(IFrontend <T> trgt, IFrontend <T> src1, IFrontend <T> src2) { var(dataLayoutTrgt, dataLayoutA, dataLayoutB) = ElemwiseDataAndLayout <T, T, T>(trgt, src1, src2); if (VectorOps.CanUse(dataLayoutTrgt, dataLayoutA, dataLayoutB)) { VectorOps.Add(dataLayoutTrgt, dataLayoutA, dataLayoutB); } else { ScalarOps.Add(dataLayoutTrgt, dataLayoutA, dataLayoutB); } }