packages feed

hmatrix-morpheus-0.1.0.0: src/matrix_reduce.h

/*! \file matrix_reduce.h
  \brief Matrix reduce by column/row operations.
*/

#ifndef MORPHEPUS_MATRIX_REDUCE_H
#define MORPHEPUS_MATRIX_REDUCE_H

#include "simple_blas.h"

/*! \defgroup matrix_reduce matrix_reduce
  \brief Matrix reduce by column/row operations.
  \{
*/

/*! Scan every column of the matrix x.
  Pred takes and accumulator and next value of the column, returns new accumulator.
  Returns accumulator values for every column.
 */
void morpheus_column_predicate(double (*pred)(double, double),
                               morpheus_layout_e layout,
                               int nrows,
                               int ncols,
                               const double *x,
                               double *y                  /*!< vector of size ncols */);

/*! Scan every row of the matrix x.
 Pred takes and accumulator and next value of the row, returns new accumulator.
 Returns accumulator values for every row.
*/
void morpheus_row_predicate(double (*pred)(double, double),
                            morpheus_layout_e layout,
                            int nrows, int ncols,
                            const double *x,
                            double *y             /*!< vector of size ncols */);


/*! Finds maximum values and their indices of every column of the matrix x */
void morpheus_column_max_index(morpheus_layout_e layout,
                               int nrows, int ncols,
                               const double *x,
                               double *y,     /*!< vector of maximum values of size ncols */
                               int *is        /*!< vector of indices of size ncols */);

/*! Finds minimum values and their indices of every column of the matrix x */
void morpheus_column_min_index(morpheus_layout_e layout,
                               int nrows, int ncols,
                               const double *x,
                               double *y,     /*!< vector of minimum values of size ncols */
                               int *is        /*!< vector of indices of size ncols */);

/*! Finds maximum values and their indices of every row of the matrix x */
void morpheus_row_max_index(morpheus_layout_e layout,
                            int nrows, int ncols,
                            const double *x,
                            double *y,        /*!< vector of maximum values of size nrows */
                            int *is           /*!< vector of indices of size nrows */);

/*! Finds minimum values and their indices of every row of the matrix x */
void morpheus_row_min_index(morpheus_layout_e layout,
                            int nrows, int ncols,
                            const double *x,
                            double *y,        /*!< vector of minimum values of size nrows */
                            int *is           /*!< vector of indices of size nrows */);

/*! Calculates sums of elements of every column of the matrix x */
void morpheus_column_sum(morpheus_layout_e layout,
                         int nrows, int ncols,
                         const double *x,
                         double *y           /*!< vector of sums of size ncols */);

/*! Calculates sums of elements of every row of the matrix x */
void morpheus_row_sum(morpheus_layout_e layout,
                      int nrows, int ncols,
                      const double *x,
                      double *y              /*!< vector of sums of size nrows */);
/*! \} */

#endif /* MORPHEPUS_MATRIX_REDUCE_H */