public override void BinaryElementWiseOperation(NArray <double> a, NArray <double> b, NArray <double> result, ExpressionType operation) { VectorVectorOperation vectorVectorOperation = null; switch (operation) { case ExpressionType.Add: vectorVectorOperation = IntelMathKernelLibrary.Add; break; case ExpressionType.Subtract: vectorVectorOperation = IntelMathKernelLibrary.Subtract; break; case ExpressionType.Multiply: vectorVectorOperation = IntelMathKernelLibrary.Multiply; break; case ExpressionType.Divide: vectorVectorOperation = IntelMathKernelLibrary.Divide; break; } VectorVectorOperation(a, b, result, vectorVectorOperation); }
private void VectorVectorOperation(NArray <double> a, NArray <double> b, NArray <double> result, VectorVectorOperation operation) { double[] aArray, bArray, resultArray; int aStart, bStart, resultStart; GetArray(a, out aArray, out aStart); GetArray(b, out bArray, out bStart); GetArray(result, out resultArray, out resultStart); operation(aArray, aStart, bArray, bStart, resultArray, resultStart, result.Length); }