Example #1
0
        public static T[,] Cross <T>(this T[,] aX, T[,] bX, Func <T, T, T> zipper, Func <T, T, T> reducer)
        {
            int height = aX.Height(), width = bX.Width();
            var matrix  = new T[height, width];
            var rows    = matrix.RowsIter();
            var columns = matrix.ColumnsIter();

            rows.Iterate((i, row) => {
                columns.Iterate((j, column) => {
                    var zipped   = VecZippers.Zip(row, column, zipper);
                    var reduced  = VecReducers.Reduce(zipped, reducer);
                    matrix[i, j] = reduced;
                });
            });
            return(matrix);
        }
Example #2
0
        public static T[,] Cross <T>(T[,] aX, T[,] bX, Func <T, T, T> zipper, Func <T, T, T> reducer)
        {
            int height = aX.Height(), width = bX.Width();
            var matrix = new T[height, width];

            for (var i = 0; i < height; i++)
            {
                var row = aX.Row(i);
                for (var j = 0; j < width; j++)
                {
                    var column  = bX.Column(j);
                    var zipped  = VecZippers.Zip(row, column, zipper);
                    var reduced = VecReducers.Reduce(zipped, reducer);
                    matrix[i, j] = reduced;
                }
            }
            return(matrix);
        }