/// <summary> /// Applies the operation to the input arrays /// </summary> /// <typeparam name="Ta">The type of input data to operate on</typeparam> /// <typeparam name="Tb">The type of output data to operate on</typeparam> /// <param name="op">The operation instance to use</param> /// <param name="in1">The left-hand-side input argument</param> /// <param name="in2">The right-hand-side input argument</param> /// <param name="out">The output target</param> public static NdArray <Tb> Apply <Ta, Tb>(IBinaryConvOp <Ta, Tb> op, NdArray <Ta> in1, NdArray <Ta> in2, NdArray <Tb> @out = null) { var method = typeof(UFunc).GetMethod("Apply_Entry_BinaryConv", System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic); var gm = method.MakeGenericMethod(typeof(Ta), typeof(Tb), op.GetType()); return((NdArray <Tb>)gm.Invoke(null, new object[] { op, in1, in2, @out })); }
/// <summary> /// Register a pending conversion operation on the underlying array /// </summary> /// <param name="operation">The operation performed</param> /// <param name="output">The output operand</param> /// <param name="in1">An input operand</param> /// <param name="in2">An input operand</param> public virtual void AddConversionOperation <Ta>(IBinaryConvOp <Ta, T> operation, NdArray <T> output, NdArray <Ta> in1, NdArray <Ta> in2) { m_clock = LazyAccessorCollector.AddOperation(new PendingBinaryConversionOperation <T, Ta>(operation, output, in1, in2)); }