public NArrayBool LogicalOperation(NArrayBool operand1, NArrayBool operand2, LogicalBinaryElementWiseOperation op) { var result = NewNArrayLike(operand1) as NArrayBool; Provider(operand1, operand2).LogicalOperation(operand1, operand2, result, op); return(result); }
public abstract void LogicalOperation(NArrayBool a, NArrayBool b, NArrayBool result, LogicalBinaryElementWiseOperation operation);
public override void LogicalOperation(NArrayBool a, NArrayBool b, NArrayBool result, LogicalBinaryElementWiseOperation operation) { bool[] 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); if (operation == LogicalBinaryElementWiseOperation.And) { for (int i = 0; i < result.Length; ++i) { resultArray[resultStart + i] = aArray[aStart + i] && bArray[bStart + i]; } } else if (operation == LogicalBinaryElementWiseOperation.Or) { for (int i = 0; i < result.Length; ++i) { resultArray[resultStart + i] = aArray[aStart + i] || bArray[bStart + i]; } } }
public NArrayBool LogicalOperation(NArrayBool operand1, NArrayBool operand2, LogicalBinaryElementWiseOperation op) { throw new NotImplementedException(); }