public NArrayBool RelativeOperation(NArray operand1, NArray operand2, RelativeOperator op) { if (operand1.IsScalar) { throw new ArgumentException(); } var result = NArrayFactory.CreateLike <bool, double>(operand1) as NArrayBool; if (operand2.IsScalar) { Provider(operand1, operand2).RelativeOperation(operand1, operand2.First(), result, op); } else { Provider(operand1, operand2).RelativeOperation(operand1, operand2, result, op); } return(result); }
public abstract void RelativeOperation(NArray <int> a, int b, NArrayBool result, RelativeOperator op);
public abstract void RelativeOperation(NArray <double> a, double b, NArrayBool result, RelativeOperator op);
public override void RelativeOperation(NArray <int> a, int b, NArrayBool result, RelativeOperator op) { int[] aArray; bool[] resultArray; int aStart, resultStart; GetArray(a, out aArray, out aStart); GetArray(result, out resultArray, out resultStart); switch (op) { case RelativeOperator.LessThan: for (int i = 0; i < resultArray.Length; ++i) { resultArray[resultStart + i] = aArray[aStart + i] < b; } break; case RelativeOperator.LessThanEquals: for (int i = 0; i < resultArray.Length; ++i) { resultArray[resultStart + i] = aArray[aStart + i] <= b; } break; case RelativeOperator.Equals: for (int i = 0; i < resultArray.Length; ++i) { resultArray[resultStart + i] = aArray[aStart + i] == b; } break; case RelativeOperator.NotEquals: for (int i = 0; i < resultArray.Length; ++i) { resultArray[resultStart + i] = aArray[aStart + i] != b; } break; case RelativeOperator.GreaterThanEquals: for (int i = 0; i < resultArray.Length; ++i) { resultArray[resultStart + i] = aArray[aStart + i] >= b; } break; case RelativeOperator.GreaterThan: for (int i = 0; i < resultArray.Length; ++i) { resultArray[resultStart + i] = aArray[aStart + i] > b; } break; } }
public NArrayBool RelativeOperation <T>(NArray <T> operand1, NArray <T> operand2, RelativeOperator op) { if (operand1.IsScalar) { throw new ArgumentException(); } var result = NewNArrayLike <bool, T>(operand1) as NArrayBool; if (operand2.IsScalar) { ElementWise <T>(operand1).RelativeOperation(operand1, operand2.First(), result, op); } else { ElementWise <T>(operand1, operand2).RelativeOperation(operand1, operand2, result, op); } return(result); }
public NArrayBool RelativeOperation(NArray operand1, NArray operand2, RelativeOperator op) { throw new NotImplementedException(); }