PaStiX Handbook  6.3.2
core_cgelrops_svd.c File Reference
#include "common.h"
#include <cblas.h>
#include <lapacke.h>
#include "flops.h"
#include "kernels_trace.h"
#include "blend/solver.h"
#include "pastix_ccores.h"
#include "pastix_clrcores.h"
#include "c_nan_check.h"
#include "common/frobeniusupdate.h"

Go to the source code of this file.

Functions

static float core_slassq (int n, const float *x, int incx)
 Compute the frobenius norm of a vector. More...
 
pastix_fixdbl_t core_cge2lr_svd (int use_reltol, pastix_fixdbl_t tol, pastix_int_t rklimit, pastix_int_t m, pastix_int_t n, const void *Avoid, pastix_int_t lda, pastix_lrblock_t *Alr)
 Convert a full rank matrix in a low rank matrix, using SVD. More...
 
pastix_fixdbl_t core_crradd_svd (const pastix_lr_t *lowrank, pastix_trans_t transA1, const void *alphaptr, pastix_int_t M1, pastix_int_t N1, const pastix_lrblock_t *A, pastix_int_t M2, pastix_int_t N2, pastix_lrblock_t *B, pastix_int_t offx, pastix_int_t offy)
 Add two LR structures A=(-u1) v1^T and B=u2 v2^T into u2 v2^T. More...
 

Detailed Description

PaStiX low-rank kernel routines using SVD based on Lapack CGESVD.

Version
6.3.2
Author
Gregoire Pichon
Esragul Korkmaz
Mathieu Faverge
Nolan Bredel
Date
2023-07-21
Generated arithmetic file
from /builds/solverstack/pastix/kernels/core_zgelrops_svd.c, normal z -> c, Wed Dec 13 12:09:11 2023

Definition in file core_cgelrops_svd.c.

Function Documentation

◆ core_slassq()

static float core_slassq ( int  n,
const float *  x,
int  incx 
)
inlinestatic

Compute the frobenius norm of a vector.

This routine is inspired from LAPACK classq function, and allows to accumulate the contribution backward for better accuracy as opposed to snrm2 which allows only positive increment.

Parameters
[in]nThe number of elemnts in the vector
[in]xThe vector of size n * incx
[in]incxThe increment between two elments in the vector x.
Returns
The frobenius norm of the vector x.

Definition at line 64 of file core_cgelrops_svd.c.

Referenced by core_cge2lr_svd().