FflasFfpack
Functions
ffpack.C File Reference

C functions calls for FFPACK in ffpack-c.h. More...

#include "fflas-ffpack/interfaces/libs/ffpack_c.h"
#include "fflas-ffpack/fflas/fflas.h"
#include "fflas-ffpack/ffpack/ffpack.h"
#include "givaro//modular-balanced.h"
#include "givaro//modular.h"

Functions

void LAPACKPerm2MathPerm (size_t *MathP, const size_t *LapackP, const size_t N)
 Conversion of a permutation from LAPACK format to Math format. More...
 
void MathPerm2LAPACKPerm (size_t *LapackP, const size_t *MathP, const size_t N)
 Conversion of a permutation from Maths format to LAPACK format. More...
 
void MatrixApplyS_modular_double (const double p, double *A, const size_t lda, const size_t width, const size_t M2, const size_t R1, const size_t R2, const size_t R3, const size_t R4, bool positive)
 
void PermApplyS_double (double *A, const size_t lda, const size_t width, const size_t M2, const size_t R1, const size_t R2, const size_t R3, const size_t R4)
 
void MatrixApplyT_modular_double (const double p, double *A, const size_t lda, const size_t width, const size_t N2, const size_t R1, const size_t R2, const size_t R3, const size_t R4, bool positive)
 
void PermApplyT_double (double *A, const size_t lda, const size_t width, const size_t N2, const size_t R1, const size_t R2, const size_t R3, const size_t R4)
 
void composePermutationsLLM (size_t *MathP, const size_t *P1, const size_t *P2, const size_t R, const size_t N)
 Computes P1 x Diag (I_R, P2) where P1 is a LAPACK and P2 a LAPACK permutation and store the result in MathP as a MathPermutation format. More...
 
void composePermutationsLLL (size_t *P1, const size_t *P2, const size_t R, const size_t N)
 Computes P1 x Diag (I_R, P2) where P1 is a LAPACK and P2 a LAPACK permutation and store the result in P1 as a LAPACK permutation. More...
 
void composePermutationsMLM (size_t *MathP1, const size_t *P2, const size_t R, const size_t N)
 Computes MathP1 x Diag (I_R, P2) where MathP1 is a MathPermutation and P2 a LAPACK permutation and store the result in MathP1 as a MathPermutation format. More...
 
void cyclic_shift_mathPerm (size_t *P, const size_t s)
 
void cyclic_shift_row_modular_double (const double p, double *A, size_t m, size_t n, size_t lda, bool positive)
 
void cyclic_shift_col_modular_double (const double p, double *A, size_t m, size_t n, size_t lda, bool positive)
 
void applyP_modular_double (const double p, const enum FFLAS::FFLAS_SIDE Side, const enum FFLAS::FFLAS_TRANSPOSE Trans, const size_t M, const size_t ibeg, const size_t iend, double *A, const size_t lda, const size_t *P, bool positive)
 
void fgetrsin_modular_double (const double p, const enum FFLAS::FFLAS_SIDE Side, const size_t M, const size_t N, const size_t R, double *A, const size_t lda, const size_t *P, const size_t *Q, double *B, const size_t ldb, int *info, bool positive)
 
double * fgetrsv_modular_double (const double p, const enum FFLAS::FFLAS_SIDE Side, const size_t M, const size_t N, const size_t NRHS, const size_t R, double *A, const size_t lda, const size_t *P, const size_t *Q, double *X, const size_t ldx, const double *B, const size_t ldb, int *info, bool positive)
 
size_t fgesvin_modular_double (const double p, const enum FFLAS::FFLAS_SIDE Side, const size_t M, const size_t N, double *A, const size_t lda, double *B, const size_t ldb, int *info, bool positive)
 
size_t fgesv_modular_double (const double p, const enum FFLAS::FFLAS_SIDE Side, const size_t M, const size_t N, const size_t NRHS, double *A, const size_t lda, double *X, const size_t ldx, const double *B, const size_t ldb, int *info, bool positive)
 
void ftrtri_modular_double (const double p, const enum FFLAS::FFLAS_UPLO Uplo, const enum FFLAS::FFLAS_DIAG Diag, const size_t N, double *A, const size_t lda, bool positive)
 
void trinv_left_modular_double (const double p, const size_t N, const double *L, const size_t ldl, double *X, const size_t ldx, bool positive)
 
void ftrtrm_modular_double (const double p, const FFLAS::FFLAS_SIDE side, const enum FFLAS::FFLAS_DIAG Diag, const size_t N, double *A, const size_t lda, bool positive)
 
size_t PLUQ_modular_double (const double p, const enum FFLAS::FFLAS_DIAG Diag, const size_t M, const size_t N, double *A, const size_t lda, size_t *P, size_t *Q, bool positive)
 
size_t LUdivine_modular_double (const double p, const enum FFLAS::FFLAS_DIAG Diag, const enum FFLAS::FFLAS_TRANSPOSE Trans, const size_t M, const size_t N, double *A, const size_t lda, size_t *P, size_t *Qt, const enum FFPACK_C_LU_TAG LuTag, const size_t cutoff, bool positive)
 
size_t ColumnEchelonForm_modular_double (const double p, const size_t M, const size_t N, double *A, const size_t lda, size_t *P, size_t *Qt, bool transform, const enum FFPACK_C_LU_TAG LuTag, bool positive)
 
size_t RowEchelonForm_modular_double (const double p, const size_t M, const size_t N, double *A, const size_t lda, size_t *P, size_t *Qt, const bool transform, const enum FFPACK_C_LU_TAG LuTag, bool positive)
 
size_t ReducedColumnEchelonForm_modular_double (const double p, const size_t M, const size_t N, double *A, const size_t lda, size_t *P, size_t *Qt, const bool transform, const enum FFPACK_C_LU_TAG LuTag, bool positive)
 
size_t ReducedRowEchelonForm_modular_double (const double p, const size_t M, const size_t N, double *A, const size_t lda, size_t *P, size_t *Qt, const bool transform, const enum FFPACK_C_LU_TAG LuTag, bool positive)
 
size_t ColumnEchelonForm_modular_float (const float p, const size_t M, const size_t N, float *A, const size_t lda, size_t *P, size_t *Qt, bool transform, const enum FFPACK_C_LU_TAG LuTag, bool positive)
 
size_t RowEchelonForm_modular_float (const float p, const size_t M, const size_t N, float *A, const size_t lda, size_t *P, size_t *Qt, const bool transform, const enum FFPACK_C_LU_TAG LuTag, bool positive)
 
size_t ReducedColumnEchelonForm_modular_float (const float p, const size_t M, const size_t N, float *A, const size_t lda, size_t *P, size_t *Qt, const bool transform, const enum FFPACK_C_LU_TAG LuTag, bool positive)
 
size_t ReducedRowEchelonForm_modular_float (const float p, const size_t M, const size_t N, float *A, const size_t lda, size_t *P, size_t *Qt, const bool transform, const enum FFPACK_C_LU_TAG LuTag, bool positive)
 
size_t ColumnEchelonForm_modular_int32_t (const int32_t p, const size_t M, const size_t N, int32_t *A, const size_t lda, size_t *P, size_t *Qt, bool transform, const enum FFPACK_C_LU_TAG LuTag, bool positive)
 
size_t RowEchelonForm_modular_int32_t (const int32_t p, const size_t M, const size_t N, int32_t *A, const size_t lda, size_t *P, size_t *Qt, const bool transform, const enum FFPACK_C_LU_TAG LuTag, bool positive)
 
size_t ReducedColumnEchelonForm_modular_int32_t (const int32_t p, const size_t M, const size_t N, int32_t *A, const size_t lda, size_t *P, size_t *Qt, const bool transform, const enum FFPACK_C_LU_TAG LuTag, bool positive)
 
size_t ReducedRowEchelonForm_modular_int32_t (const int32_t p, const size_t M, const size_t N, int32_t *A, const size_t lda, size_t *P, size_t *Qt, const bool transform, const enum FFPACK_C_LU_TAG LuTag, bool positive)
 
size_t pColumnEchelonForm_modular_double (const double p, const size_t M, const size_t N, double *A, const size_t lda, size_t *P, size_t *Qt, bool transform, const enum FFPACK_C_LU_TAG LuTag, bool positive)
 
size_t pRowEchelonForm_modular_double (const double p, const size_t M, const size_t N, double *A, const size_t lda, size_t *P, size_t *Qt, const bool transform, const enum FFPACK_C_LU_TAG LuTag, bool positive)
 
size_t pReducedColumnEchelonForm_modular_double (const double p, const size_t M, const size_t N, double *A, const size_t lda, size_t *P, size_t *Qt, const bool transform, const enum FFPACK_C_LU_TAG LuTag, bool positive)
 
size_t pReducedRowEchelonForm_modular_double (const double p, const size_t M, const size_t N, double *A, const size_t lda, size_t *P, size_t *Qt, const bool transform, const enum FFPACK_C_LU_TAG LuTag, bool positive)
 
size_t pColumnEchelonForm_modular_float (const float p, const size_t M, const size_t N, float *A, const size_t lda, size_t *P, size_t *Qt, bool transform, const enum FFPACK_C_LU_TAG LuTag, bool positive)
 
size_t pRowEchelonForm_modular_float (const float p, const size_t M, const size_t N, float *A, const size_t lda, size_t *P, size_t *Qt, const bool transform, const enum FFPACK_C_LU_TAG LuTag, bool positive)
 
size_t pReducedColumnEchelonForm_modular_float (const float p, const size_t M, const size_t N, float *A, const size_t lda, size_t *P, size_t *Qt, const bool transform, const enum FFPACK_C_LU_TAG LuTag, bool positive)
 
size_t pReducedRowEchelonForm_modular_float (const float p, const size_t M, const size_t N, float *A, const size_t lda, size_t *P, size_t *Qt, const bool transform, const enum FFPACK_C_LU_TAG LuTag, bool positive)
 
size_t pColumnEchelonForm_modular_int32_t (const int32_t p, const size_t M, const size_t N, int32_t *A, const size_t lda, size_t *P, size_t *Qt, bool transform, const enum FFPACK_C_LU_TAG LuTag, bool positive)
 
size_t pRowEchelonForm_modular_int32_t (const int32_t p, const size_t M, const size_t N, int32_t *A, const size_t lda, size_t *P, size_t *Qt, const bool transform, const enum FFPACK_C_LU_TAG LuTag, bool positive)
 
size_t pReducedColumnEchelonForm_modular_int32_t (const int32_t p, const size_t M, const size_t N, int32_t *A, const size_t lda, size_t *P, size_t *Qt, const bool transform, const enum FFPACK_C_LU_TAG LuTag, bool positive)
 
size_t pReducedRowEchelonForm_modular_int32_t (const int32_t p, const size_t M, const size_t N, int32_t *A, const size_t lda, size_t *P, size_t *Qt, const bool transform, const enum FFPACK_C_LU_TAG LuTag, bool positive)
 
double * Invertin_modular_double (const double p, const size_t M, double *A, const size_t lda, int *nullity, bool positive)
 
double * Invert_modular_double (const double p, const size_t M, const double *A, const size_t lda, double *X, const size_t ldx, int *nullity, bool positive)
 
double * Invert2_modular_double (const double p, const size_t M, double *A, const size_t lda, double *X, const size_t ldx, int *nullity, bool positive)
 
size_t KrylovElim_modular_double (const double p, const size_t M, const size_t N, double *A, const size_t lda, size_t *P, size_t *Q, const size_t deg, size_t *iterates, size_t *inviterates, const size_t maxit, size_t virt, bool positive)
 
size_t SpecRankProfile_modular_double (const double p, const size_t M, const size_t N, double *A, const size_t lda, const size_t deg, size_t *rankProfile, bool positive)
 
size_t Rank_modular_double (const double p, const size_t M, const size_t N, double *A, const size_t lda, bool positive)
 
bool IsSingular_modular_double (const double p, const size_t M, const size_t N, double *A, const size_t lda, bool positive)
 
double Det_modular_double (const double p, const size_t N, double *A, const size_t lda, bool positive)
 
double * Solve_modular_double (const double p, const size_t M, double *A, const size_t lda, double *x, const int incx, const double *b, const int incb, bool positive)
 
void solveLB_modular_double (const double p, const enum FFLAS::FFLAS_SIDE Side, const size_t M, const size_t N, const size_t R, double *L, const size_t ldl, const size_t *Q, double *B, const size_t ldb, bool positive)
 
void solveLB2_modular_double (const double p, const enum FFLAS::FFLAS_SIDE Side, const size_t M, const size_t N, const size_t R, double *L, const size_t ldl, const size_t *Q, double *B, const size_t ldb, bool positive)
 
void RandomNullSpaceVector_modular_double (const double p, const enum FFLAS::FFLAS_SIDE Side, const size_t M, const size_t N, double *A, const size_t lda, double *X, const size_t incX, bool positive)
 
size_t NullSpaceBasis_modular_double (const double p, const enum FFLAS::FFLAS_SIDE Side, const size_t M, const size_t N, double *A, const size_t lda, double **NS, size_t *ldn, size_t *NSdim, bool positive)
 
size_t RowRankProfile_modular_double (const double p, const size_t M, const size_t N, double *A, const size_t lda, size_t **rkprofile, const enum FFPACK_C_LU_TAG LuTag, bool positive)
 
size_t ColumnRankProfile_modular_double (const double p, const size_t M, const size_t N, double *A, const size_t lda, size_t **rkprofile, const enum FFPACK_C_LU_TAG LuTag, bool positive)
 
void RankProfileFromLU (const size_t *P, const size_t N, const size_t R, size_t *rkprofile, const enum FFPACK_C_LU_TAG LuTag)
 
size_t LeadingSubmatrixRankProfiles (const size_t M, const size_t N, const size_t R, const size_t LSm, const size_t LSn, const size_t *P, const size_t *Q, size_t *RRP, size_t *CRP)
 Recovers the row and column rank profiles of any leading submatrix from the PLUQ decomposition. More...
 
size_t RowRankProfileSubmatrixIndices_modular_double (const double p, const size_t M, const size_t N, double *A, const size_t lda, size_t **rowindices, size_t **colindices, size_t *R, bool positive)
 
size_t ColRankProfileSubmatrixIndices_modular_double (const double p, const size_t M, const size_t N, double *A, const size_t lda, size_t **rowindices, size_t **colindices, size_t *R, bool positive)
 
size_t RowRankProfileSubmatrix_modular_double (const double p, const size_t M, const size_t N, double *A, const size_t lda, double **X, size_t *R, bool positive)
 
size_t ColRankProfileSubmatrix_modular_double (const double p, const size_t M, const size_t N, double *A, const size_t lda, double **X, size_t *R, bool positive)
 
void getTriangular_modular_double (const double p, const enum FFLAS::FFLAS_UPLO Uplo, const enum FFLAS::FFLAS_DIAG Diag, const size_t M, const size_t N, const size_t R, const double *A, const size_t lda, double *T, const size_t ldt, const bool OnlyNonZeroVectors, bool positive)
 
void getTriangularin_modular_double (const double p, const enum FFLAS::FFLAS_UPLO Uplo, const enum FFLAS::FFLAS_DIAG Diag, const size_t M, const size_t N, const size_t R, double *A, const size_t lda, bool positive)
 
void getEchelonForm_modular_double (const double p, const enum FFLAS::FFLAS_UPLO Uplo, const enum FFLAS::FFLAS_DIAG Diag, const size_t M, const size_t N, const size_t R, const size_t *P, const double *A, const size_t lda, double *T, const size_t ldt, const bool OnlyNonZeroVectors, const enum FFPACK_C_LU_TAG LuTag, bool positive)
 
void getEchelonFormin_modular_double (const double p, const enum FFLAS::FFLAS_UPLO Uplo, const enum FFLAS::FFLAS_DIAG Diag, const size_t M, const size_t N, const size_t R, const size_t *P, double *A, const size_t lda, const enum FFPACK_C_LU_TAG LuTag, bool positive)
 
void getEchelonTransform_modular_double (const double p, const enum FFLAS::FFLAS_UPLO Uplo, const enum FFLAS::FFLAS_DIAG Diag, const size_t M, const size_t N, const size_t R, const size_t *P, const size_t *Q, const double *A, const size_t lda, double *T, const size_t ldt, const enum FFPACK_C_LU_TAG LuTag, bool positive)
 
void getReducedEchelonForm_modular_double (const double p, const enum FFLAS::FFLAS_UPLO Uplo, const size_t M, const size_t N, const size_t R, const size_t *P, const double *A, const size_t lda, double *T, const size_t ldt, const bool OnlyNonZeroVectors, const enum FFPACK_C_LU_TAG LuTag, bool positive)
 
void getReducedEchelonFormin_modular_double (const double p, const enum FFLAS::FFLAS_UPLO Uplo, const size_t M, const size_t N, const size_t R, const size_t *P, double *A, const size_t lda, const enum FFPACK_C_LU_TAG LuTag, bool positive)
 
void getReducedEchelonTransform_modular_double (const double p, const enum FFLAS::FFLAS_UPLO Uplo, const size_t M, const size_t N, const size_t R, const size_t *P, const size_t *Q, const double *A, const size_t lda, double *T, const size_t ldt, const enum FFPACK_C_LU_TAG LuTag, bool positive)
 
void PLUQtoEchelonPermutation (const size_t N, const size_t R, const size_t *P, size_t *outPerm)
 Auxiliary routine: determines the permutation that changes a PLUQ decomposition into a echelon form revealing PLUQ decomposition. More...
 

Detailed Description

C functions calls for FFPACK in ffpack-c.h.

Author
Brice Boyer
See also
ffpack/ffpack.h

Function Documentation

◆ LAPACKPerm2MathPerm()

void LAPACKPerm2MathPerm ( size_t *  MathP,
const size_t *  LapackP,
const size_t  N 
)
inline

Conversion of a permutation from LAPACK format to Math format.

◆ MathPerm2LAPACKPerm()

void MathPerm2LAPACKPerm ( size_t *  LapackP,
const size_t *  MathP,
const size_t  N 
)
inline

Conversion of a permutation from Maths format to LAPACK format.

◆ MatrixApplyS_modular_double()

void MatrixApplyS_modular_double ( const double  p,
double *  A,
const size_t  lda,
const size_t  width,
const size_t  M2,
const size_t  R1,
const size_t  R2,
const size_t  R3,
const size_t  R4,
bool  positive 
)

◆ PermApplyS_double()

void PermApplyS_double ( double *  A,
const size_t  lda,
const size_t  width,
const size_t  M2,
const size_t  R1,
const size_t  R2,
const size_t  R3,
const size_t  R4 
)

◆ MatrixApplyT_modular_double()

void MatrixApplyT_modular_double ( const double  p,
double *  A,
const size_t  lda,
const size_t  width,
const size_t  N2,
const size_t  R1,
const size_t  R2,
const size_t  R3,
const size_t  R4,
bool  positive 
)

◆ PermApplyT_double()

void PermApplyT_double ( double *  A,
const size_t  lda,
const size_t  width,
const size_t  N2,
const size_t  R1,
const size_t  R2,
const size_t  R3,
const size_t  R4 
)

◆ composePermutationsLLM()

void composePermutationsLLM ( size_t *  MathP,
const size_t *  P1,
const size_t *  P2,
const size_t  R,
const size_t  N 
)
inline

Computes P1 x Diag (I_R, P2) where P1 is a LAPACK and P2 a LAPACK permutation and store the result in MathP as a MathPermutation format.

Parameters
[out]

◆ composePermutationsLLL()

void composePermutationsLLL ( size_t *  P1,
const size_t *  P2,
const size_t  R,
const size_t  N 
)
inline

Computes P1 x Diag (I_R, P2) where P1 is a LAPACK and P2 a LAPACK permutation and store the result in P1 as a LAPACK permutation.

Parameters
[in,out]P1a LAPACK permutation of size N
P2a LAPACK permutation of size N-R

◆ composePermutationsMLM()

void composePermutationsMLM ( size_t *  MathP1,
const size_t *  P2,
const size_t  R,
const size_t  N 
)
inline

Computes MathP1 x Diag (I_R, P2) where MathP1 is a MathPermutation and P2 a LAPACK permutation and store the result in MathP1 as a MathPermutation format.

Parameters
[in,out]MathP1a MathPermutation of size N
P2a LAPACK permutation of size N-R

◆ cyclic_shift_mathPerm()

void cyclic_shift_mathPerm ( size_t *  P,
const size_t  s 
)
inline

◆ cyclic_shift_row_modular_double()

void cyclic_shift_row_modular_double ( const double  p,
double *  A,
size_t  m,
size_t  n,
size_t  lda,
bool  positive 
)

◆ cyclic_shift_col_modular_double()

void cyclic_shift_col_modular_double ( const double  p,
double *  A,
size_t  m,
size_t  n,
size_t  lda,
bool  positive 
)

◆ applyP_modular_double()

void applyP_modular_double ( const double  p,
const enum FFLAS::FFLAS_SIDE  Side,
const enum FFLAS::FFLAS_TRANSPOSE  Trans,
const size_t  M,
const size_t  ibeg,
const size_t  iend,
double *  A,
const size_t  lda,
const size_t *  P,
bool  positive 
)

◆ fgetrsin_modular_double()

void fgetrsin_modular_double ( const double  p,
const enum FFLAS::FFLAS_SIDE  Side,
const size_t  M,
const size_t  N,
const size_t  R,
double *  A,
const size_t  lda,
const size_t *  P,
const size_t *  Q,
double *  B,
const size_t  ldb,
int *  info,
bool  positive 
)

◆ fgetrsv_modular_double()

double* fgetrsv_modular_double ( const double  p,
const enum FFLAS::FFLAS_SIDE  Side,
const size_t  M,
const size_t  N,
const size_t  NRHS,
const size_t  R,
double *  A,
const size_t  lda,
const size_t *  P,
const size_t *  Q,
double *  X,
const size_t  ldx,
const double *  B,
const size_t  ldb,
int *  info,
bool  positive 
)

◆ fgesvin_modular_double()

size_t fgesvin_modular_double ( const double  p,
const enum FFLAS::FFLAS_SIDE  Side,
const size_t  M,
const size_t  N,
double *  A,
const size_t  lda,
double *  B,
const size_t  ldb,
int *  info,
bool  positive 
)

◆ fgesv_modular_double()

size_t fgesv_modular_double ( const double  p,
const enum FFLAS::FFLAS_SIDE  Side,
const size_t  M,
const size_t  N,
const size_t  NRHS,
double *  A,
const size_t  lda,
double *  X,
const size_t  ldx,
const double *  B,
const size_t  ldb,
int *  info,
bool  positive 
)

◆ ftrtri_modular_double()

void ftrtri_modular_double ( const double  p,
const enum FFLAS::FFLAS_UPLO  Uplo,
const enum FFLAS::FFLAS_DIAG  Diag,
const size_t  N,
double *  A,
const size_t  lda,
bool  positive 
)

◆ trinv_left_modular_double()

void trinv_left_modular_double ( const double  p,
const size_t  N,
const double *  L,
const size_t  ldl,
double *  X,
const size_t  ldx,
bool  positive 
)

◆ ftrtrm_modular_double()

void ftrtrm_modular_double ( const double  p,
const FFLAS::FFLAS_SIDE  side,
const enum FFLAS::FFLAS_DIAG  Diag,
const size_t  N,
double *  A,
const size_t  lda,
bool  positive 
)

◆ PLUQ_modular_double()

size_t PLUQ_modular_double ( const double  p,
const enum FFLAS::FFLAS_DIAG  Diag,
const size_t  M,
const size_t  N,
double *  A,
const size_t  lda,
size_t *  P,
size_t *  Q,
bool  positive 
)

◆ LUdivine_modular_double()

size_t LUdivine_modular_double ( const double  p,
const enum FFLAS::FFLAS_DIAG  Diag,
const enum FFLAS::FFLAS_TRANSPOSE  Trans,
const size_t  M,
const size_t  N,
double *  A,
const size_t  lda,
size_t *  P,
size_t *  Qt,
const enum FFPACK_C_LU_TAG  LuTag,
const size_t  cutoff,
bool  positive 
)

◆ ColumnEchelonForm_modular_double()

size_t ColumnEchelonForm_modular_double ( const double  p,
const size_t  M,
const size_t  N,
double *  A,
const size_t  lda,
size_t *  P,
size_t *  Qt,
bool  transform,
const enum FFPACK_C_LU_TAG  LuTag,
bool  positive 
)

◆ RowEchelonForm_modular_double()

size_t RowEchelonForm_modular_double ( const double  p,
const size_t  M,
const size_t  N,
double *  A,
const size_t  lda,
size_t *  P,
size_t *  Qt,
const bool  transform,
const enum FFPACK_C_LU_TAG  LuTag,
bool  positive 
)

◆ ReducedColumnEchelonForm_modular_double()

size_t ReducedColumnEchelonForm_modular_double ( const double  p,
const size_t  M,
const size_t  N,
double *  A,
const size_t  lda,
size_t *  P,
size_t *  Qt,
const bool  transform,
const enum FFPACK_C_LU_TAG  LuTag,
bool  positive 
)

◆ ReducedRowEchelonForm_modular_double()

size_t ReducedRowEchelonForm_modular_double ( const double  p,
const size_t  M,
const size_t  N,
double *  A,
const size_t  lda,
size_t *  P,
size_t *  Qt,
const bool  transform,
const enum FFPACK_C_LU_TAG  LuTag,
bool  positive 
)

◆ ColumnEchelonForm_modular_float()

size_t ColumnEchelonForm_modular_float ( const float  p,
const size_t  M,
const size_t  N,
float *  A,
const size_t  lda,
size_t *  P,
size_t *  Qt,
bool  transform,
const enum FFPACK_C_LU_TAG  LuTag,
bool  positive 
)

◆ RowEchelonForm_modular_float()

size_t RowEchelonForm_modular_float ( const float  p,
const size_t  M,
const size_t  N,
float *  A,
const size_t  lda,
size_t *  P,
size_t *  Qt,
const bool  transform,
const enum FFPACK_C_LU_TAG  LuTag,
bool  positive 
)

◆ ReducedColumnEchelonForm_modular_float()

size_t ReducedColumnEchelonForm_modular_float ( const float  p,
const size_t  M,
const size_t  N,
float *  A,
const size_t  lda,
size_t *  P,
size_t *  Qt,
const bool  transform,
const enum FFPACK_C_LU_TAG  LuTag,
bool  positive 
)

◆ ReducedRowEchelonForm_modular_float()

size_t ReducedRowEchelonForm_modular_float ( const float  p,
const size_t  M,
const size_t  N,
float *  A,
const size_t  lda,
size_t *  P,
size_t *  Qt,
const bool  transform,
const enum FFPACK_C_LU_TAG  LuTag,
bool  positive 
)

◆ ColumnEchelonForm_modular_int32_t()

size_t ColumnEchelonForm_modular_int32_t ( const int32_t  p,
const size_t  M,
const size_t  N,
int32_t A,
const size_t  lda,
size_t *  P,
size_t *  Qt,
bool  transform,
const enum FFPACK_C_LU_TAG  LuTag,
bool  positive 
)

◆ RowEchelonForm_modular_int32_t()

size_t RowEchelonForm_modular_int32_t ( const int32_t  p,
const size_t  M,
const size_t  N,
int32_t A,
const size_t  lda,
size_t *  P,
size_t *  Qt,
const bool  transform,
const enum FFPACK_C_LU_TAG  LuTag,
bool  positive 
)

◆ ReducedColumnEchelonForm_modular_int32_t()

size_t ReducedColumnEchelonForm_modular_int32_t ( const int32_t  p,
const size_t  M,
const size_t  N,
int32_t A,
const size_t  lda,
size_t *  P,
size_t *  Qt,
const bool  transform,
const enum FFPACK_C_LU_TAG  LuTag,
bool  positive 
)

◆ ReducedRowEchelonForm_modular_int32_t()

size_t ReducedRowEchelonForm_modular_int32_t ( const int32_t  p,
const size_t  M,
const size_t  N,
int32_t A,
const size_t  lda,
size_t *  P,
size_t *  Qt,
const bool  transform,
const enum FFPACK_C_LU_TAG  LuTag,
bool  positive 
)

◆ pColumnEchelonForm_modular_double()

size_t pColumnEchelonForm_modular_double ( const double  p,
const size_t  M,
const size_t  N,
double *  A,
const size_t  lda,
size_t *  P,
size_t *  Qt,
bool  transform,
const enum FFPACK_C_LU_TAG  LuTag,
bool  positive 
)

◆ pRowEchelonForm_modular_double()

size_t pRowEchelonForm_modular_double ( const double  p,
const size_t  M,
const size_t  N,
double *  A,
const size_t  lda,
size_t *  P,
size_t *  Qt,
const bool  transform,
const enum FFPACK_C_LU_TAG  LuTag,
bool  positive 
)

◆ pReducedColumnEchelonForm_modular_double()

size_t pReducedColumnEchelonForm_modular_double ( const double  p,
const size_t  M,
const size_t  N,
double *  A,
const size_t  lda,
size_t *  P,
size_t *  Qt,
const bool  transform,
const enum FFPACK_C_LU_TAG  LuTag,
bool  positive 
)

◆ pReducedRowEchelonForm_modular_double()

size_t pReducedRowEchelonForm_modular_double ( const double  p,
const size_t  M,
const size_t  N,
double *  A,
const size_t  lda,
size_t *  P,
size_t *  Qt,
const bool  transform,
const enum FFPACK_C_LU_TAG  LuTag,
bool  positive 
)

◆ pColumnEchelonForm_modular_float()

size_t pColumnEchelonForm_modular_float ( const float  p,
const size_t  M,
const size_t  N,
float *  A,
const size_t  lda,
size_t *  P,
size_t *  Qt,
bool  transform,
const enum FFPACK_C_LU_TAG  LuTag,
bool  positive 
)

◆ pRowEchelonForm_modular_float()

size_t pRowEchelonForm_modular_float ( const float  p,
const size_t  M,
const size_t  N,
float *  A,
const size_t  lda,
size_t *  P,
size_t *  Qt,
const bool  transform,
const enum FFPACK_C_LU_TAG  LuTag,
bool  positive 
)

◆ pReducedColumnEchelonForm_modular_float()

size_t pReducedColumnEchelonForm_modular_float ( const float  p,
const size_t  M,
const size_t  N,
float *  A,
const size_t  lda,
size_t *  P,
size_t *  Qt,
const bool  transform,
const enum FFPACK_C_LU_TAG  LuTag,
bool  positive 
)

◆ pReducedRowEchelonForm_modular_float()

size_t pReducedRowEchelonForm_modular_float ( const float  p,
const size_t  M,
const size_t  N,
float *  A,
const size_t  lda,
size_t *  P,
size_t *  Qt,
const bool  transform,
const enum FFPACK_C_LU_TAG  LuTag,
bool  positive 
)

◆ pColumnEchelonForm_modular_int32_t()

size_t pColumnEchelonForm_modular_int32_t ( const int32_t  p,
const size_t  M,
const size_t  N,
int32_t A,
const size_t  lda,
size_t *  P,
size_t *  Qt,
bool  transform,
const enum FFPACK_C_LU_TAG  LuTag,
bool  positive 
)

◆ pRowEchelonForm_modular_int32_t()

size_t pRowEchelonForm_modular_int32_t ( const int32_t  p,
const size_t  M,
const size_t  N,
int32_t A,
const size_t  lda,
size_t *  P,
size_t *  Qt,
const bool  transform,
const enum FFPACK_C_LU_TAG  LuTag,
bool  positive 
)

◆ pReducedColumnEchelonForm_modular_int32_t()

size_t pReducedColumnEchelonForm_modular_int32_t ( const int32_t  p,
const size_t  M,
const size_t  N,
int32_t A,
const size_t  lda,
size_t *  P,
size_t *  Qt,
const bool  transform,
const enum FFPACK_C_LU_TAG  LuTag,
bool  positive 
)

◆ pReducedRowEchelonForm_modular_int32_t()

size_t pReducedRowEchelonForm_modular_int32_t ( const int32_t  p,
const size_t  M,
const size_t  N,
int32_t A,
const size_t  lda,
size_t *  P,
size_t *  Qt,
const bool  transform,
const enum FFPACK_C_LU_TAG  LuTag,
bool  positive 
)

◆ Invertin_modular_double()

double* Invertin_modular_double ( const double  p,
const size_t  M,
double *  A,
const size_t  lda,
int *  nullity,
bool  positive 
)

◆ Invert_modular_double()

double* Invert_modular_double ( const double  p,
const size_t  M,
const double *  A,
const size_t  lda,
double *  X,
const size_t  ldx,
int *  nullity,
bool  positive 
)

◆ Invert2_modular_double()

double* Invert2_modular_double ( const double  p,
const size_t  M,
double *  A,
const size_t  lda,
double *  X,
const size_t  ldx,
int *  nullity,
bool  positive 
)

◆ KrylovElim_modular_double()

size_t KrylovElim_modular_double ( const double  p,
const size_t  M,
const size_t  N,
double *  A,
const size_t  lda,
size_t *  P,
size_t *  Q,
const size_t  deg,
size_t *  iterates,
size_t *  inviterates,
const size_t  maxit,
size_t  virt,
bool  positive 
)

◆ SpecRankProfile_modular_double()

size_t SpecRankProfile_modular_double ( const double  p,
const size_t  M,
const size_t  N,
double *  A,
const size_t  lda,
const size_t  deg,
size_t *  rankProfile,
bool  positive 
)

◆ Rank_modular_double()

size_t Rank_modular_double ( const double  p,
const size_t  M,
const size_t  N,
double *  A,
const size_t  lda,
bool  positive 
)

◆ IsSingular_modular_double()

bool IsSingular_modular_double ( const double  p,
const size_t  M,
const size_t  N,
double *  A,
const size_t  lda,
bool  positive 
)

◆ Det_modular_double()

double Det_modular_double ( const double  p,
const size_t  N,
double *  A,
const size_t  lda,
bool  positive 
)

◆ Solve_modular_double()

double* Solve_modular_double ( const double  p,
const size_t  M,
double *  A,
const size_t  lda,
double *  x,
const int  incx,
const double *  b,
const int  incb,
bool  positive 
)

◆ solveLB_modular_double()

void solveLB_modular_double ( const double  p,
const enum FFLAS::FFLAS_SIDE  Side,
const size_t  M,
const size_t  N,
const size_t  R,
double *  L,
const size_t  ldl,
const size_t *  Q,
double *  B,
const size_t  ldb,
bool  positive 
)

◆ solveLB2_modular_double()

void solveLB2_modular_double ( const double  p,
const enum FFLAS::FFLAS_SIDE  Side,
const size_t  M,
const size_t  N,
const size_t  R,
double *  L,
const size_t  ldl,
const size_t *  Q,
double *  B,
const size_t  ldb,
bool  positive 
)

◆ RandomNullSpaceVector_modular_double()

void RandomNullSpaceVector_modular_double ( const double  p,
const enum FFLAS::FFLAS_SIDE  Side,
const size_t  M,
const size_t  N,
double *  A,
const size_t  lda,
double *  X,
const size_t  incX,
bool  positive 
)

◆ NullSpaceBasis_modular_double()

size_t NullSpaceBasis_modular_double ( const double  p,
const enum FFLAS::FFLAS_SIDE  Side,
const size_t  M,
const size_t  N,
double *  A,
const size_t  lda,
double **  NS,
size_t *  ldn,
size_t *  NSdim,
bool  positive 
)

◆ RowRankProfile_modular_double()

size_t RowRankProfile_modular_double ( const double  p,
const size_t  M,
const size_t  N,
double *  A,
const size_t  lda,
size_t **  rkprofile,
const enum FFPACK_C_LU_TAG  LuTag,
bool  positive 
)

◆ ColumnRankProfile_modular_double()

size_t ColumnRankProfile_modular_double ( const double  p,
const size_t  M,
const size_t  N,
double *  A,
const size_t  lda,
size_t **  rkprofile,
const enum FFPACK_C_LU_TAG  LuTag,
bool  positive 
)

◆ RankProfileFromLU()

void RankProfileFromLU ( const size_t *  P,
const size_t  N,
const size_t  R,
size_t *  rkprofile,
const enum FFPACK_C_LU_TAG  LuTag 
)

◆ LeadingSubmatrixRankProfiles()

size_t LeadingSubmatrixRankProfiles ( const size_t  M,
const size_t  N,
const size_t  R,
const size_t  LSm,
const size_t  LSn,
const size_t *  P,
const size_t *  Q,
size_t *  RRP,
size_t *  CRP 
)
inline

Recovers the row and column rank profiles of any leading submatrix from the PLUQ decomposition.

Only works with the PLUQ decomposition Assumes that the output vectors containing the rank profiles are already allocated.

Parameters
Pthe permutation carrying the rank profile information
Mthe row dimension of the initial matrix
Nthe column dimension of the initial matrix
Rthe rank of the initial matrix
LSmthe row dimension of the leading submatrix considered
LSnthe column dimension of the leading submatrix considered
Pthe row permutation of the PLUQ decomposition
Qthe column permutation of the PLUQ decomposition
RRPreturn the row rank profile of the leading submatrix
Returns
the rank of the LSm x LSn leading submatrix

A is modified

Bibliography:
  • Dumas J-G., Pernet C., and Sultan Z. Simultaneous computation of the row and column rank profiles , ISSAC'13.

◆ RowRankProfileSubmatrixIndices_modular_double()

size_t RowRankProfileSubmatrixIndices_modular_double ( const double  p,
const size_t  M,
const size_t  N,
double *  A,
const size_t  lda,
size_t **  rowindices,
size_t **  colindices,
size_t *  R,
bool  positive 
)

◆ ColRankProfileSubmatrixIndices_modular_double()

size_t ColRankProfileSubmatrixIndices_modular_double ( const double  p,
const size_t  M,
const size_t  N,
double *  A,
const size_t  lda,
size_t **  rowindices,
size_t **  colindices,
size_t *  R,
bool  positive 
)

◆ RowRankProfileSubmatrix_modular_double()

size_t RowRankProfileSubmatrix_modular_double ( const double  p,
const size_t  M,
const size_t  N,
double *  A,
const size_t  lda,
double **  X,
size_t *  R,
bool  positive 
)

◆ ColRankProfileSubmatrix_modular_double()

size_t ColRankProfileSubmatrix_modular_double ( const double  p,
const size_t  M,
const size_t  N,
double *  A,
const size_t  lda,
double **  X,
size_t *  R,
bool  positive 
)

◆ getTriangular_modular_double()

void getTriangular_modular_double ( const double  p,
const enum FFLAS::FFLAS_UPLO  Uplo,
const enum FFLAS::FFLAS_DIAG  Diag,
const size_t  M,
const size_t  N,
const size_t  R,
const double *  A,
const size_t  lda,
double *  T,
const size_t  ldt,
const bool  OnlyNonZeroVectors,
bool  positive 
)

◆ getTriangularin_modular_double()

void getTriangularin_modular_double ( const double  p,
const enum FFLAS::FFLAS_UPLO  Uplo,
const enum FFLAS::FFLAS_DIAG  Diag,
const size_t  M,
const size_t  N,
const size_t  R,
double *  A,
const size_t  lda,
bool  positive 
)

◆ getEchelonForm_modular_double()

void getEchelonForm_modular_double ( const double  p,
const enum FFLAS::FFLAS_UPLO  Uplo,
const enum FFLAS::FFLAS_DIAG  Diag,
const size_t  M,
const size_t  N,
const size_t  R,
const size_t *  P,
const double *  A,
const size_t  lda,
double *  T,
const size_t  ldt,
const bool  OnlyNonZeroVectors,
const enum FFPACK_C_LU_TAG  LuTag,
bool  positive 
)

◆ getEchelonFormin_modular_double()

void getEchelonFormin_modular_double ( const double  p,
const enum FFLAS::FFLAS_UPLO  Uplo,
const enum FFLAS::FFLAS_DIAG  Diag,
const size_t  M,
const size_t  N,
const size_t  R,
const size_t *  P,
double *  A,
const size_t  lda,
const enum FFPACK_C_LU_TAG  LuTag,
bool  positive 
)

◆ getEchelonTransform_modular_double()

void getEchelonTransform_modular_double ( const double  p,
const enum FFLAS::FFLAS_UPLO  Uplo,
const enum FFLAS::FFLAS_DIAG  Diag,
const size_t  M,
const size_t  N,
const size_t  R,
const size_t *  P,
const size_t *  Q,
const double *  A,
const size_t  lda,
double *  T,
const size_t  ldt,
const enum FFPACK_C_LU_TAG  LuTag,
bool  positive 
)

◆ getReducedEchelonForm_modular_double()

void getReducedEchelonForm_modular_double ( const double  p,
const enum FFLAS::FFLAS_UPLO  Uplo,
const size_t  M,
const size_t  N,
const size_t  R,
const size_t *  P,
const double *  A,
const size_t  lda,
double *  T,
const size_t  ldt,
const bool  OnlyNonZeroVectors,
const enum FFPACK_C_LU_TAG  LuTag,
bool  positive 
)

◆ getReducedEchelonFormin_modular_double()

void getReducedEchelonFormin_modular_double ( const double  p,
const enum FFLAS::FFLAS_UPLO  Uplo,
const size_t  M,
const size_t  N,
const size_t  R,
const size_t *  P,
double *  A,
const size_t  lda,
const enum FFPACK_C_LU_TAG  LuTag,
bool  positive 
)

◆ getReducedEchelonTransform_modular_double()

void getReducedEchelonTransform_modular_double ( const double  p,
const enum FFLAS::FFLAS_UPLO  Uplo,
const size_t  M,
const size_t  N,
const size_t  R,
const size_t *  P,
const size_t *  Q,
const double *  A,
const size_t  lda,
double *  T,
const size_t  ldt,
const enum FFPACK_C_LU_TAG  LuTag,
bool  positive 
)

◆ PLUQtoEchelonPermutation()

void PLUQtoEchelonPermutation ( const size_t  N,
const size_t  R,
const size_t *  P,
size_t *  outPerm 
)
inline

Auxiliary routine: determines the permutation that changes a PLUQ decomposition into a echelon form revealing PLUQ decomposition.