Something went wrong on our end
-
Mathieu Faverge authoredMathieu Faverge authored
z_spm_matrixvector.c 13.35 KiB
/**
*
* @file z_spm_matrixvector.c
*
* SParse Matrix package matrix-vector multiplication routines.
*
* @copyright 2016-2017 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria,
* Univ. Bordeaux. All rights reserved.
*
* @version 1.0.0
* @author Mathieu Faverge
* @author Theophile Terraz
* @date 2015-01-01
*
* @precisions normal z -> c d s
**/
#include "common.h"
#include "spm.h"
#include "z_spm.h"
/**
*******************************************************************************
*
* @ingroup spm_dev_matvec
*
* @brief compute the matrix-vector product:
* y = alpha * op( A ) * x + beta * y
*
* A is a PastixGeneral spm, where op( X ) is one of
*
* op( X ) = X or op( X ) = X' or op( X ) = conjg( X' )
*
* alpha and beta are scalars, and x and y are vectors.
*
*******************************************************************************
*
* @param[in] trans
* Specifies whether the matrix spm is transposed, not transposed or
* conjugate transposed:
* = PastixNoTrans: A is not transposed;
* = PastixTrans: A is transposed;
* = PastixConjTrans: A is conjugate transposed.
*
* @param[in] alpha
* alpha specifies the scalar alpha
*
* @param[in] spm
* The PastixGeneral spm.
*
* @param[in] x
* The vector x.
*
* @param[in] beta
* beta specifies the scalar beta
*
* @param[inout] y
* The vector y.
*
*******************************************************************************
*
* @retval PASTIX_SUCCESS if the y vector has been computed succesfully,
* @retval PASTIX_ERR_BADPARAMETER otherwise.
*
*******************************************************************************/
int
z_spmGeCSCv(const pastix_trans_t trans,
pastix_complex64_t alpha,
const pastix_spm_t *spm,
const pastix_complex64_t *x,
pastix_complex64_t beta,