Exemple #1
0
        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);
        }
Exemple #2
0
 public abstract void RelativeOperation(NArray <int> a, int b, NArrayBool result, RelativeOperator op);
Exemple #3
0
 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();
 }