SpM Handbook 1.3.0
Loading...
Searching...
No Matches
spm_get_diagonal_zeros.c
Go to the documentation of this file.
1/**
2 *
3 * @file spm_get_diagonal_zeros.c
4 *
5 * SParse Matrix package routine to detect unknowns with zero or absent entry on
6 * the diagonal.
7 *
8 * @copyright 2016-2026 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria,
9 * Univ. Bordeaux. All rights reserved.
10 *
11 * @version 1.3.0
12 * @author Fatima-Zahra Salhi
13 * @date 2026-07-09
14 * @addtogroup spm
15 * @{
16 **/
17#include "common.h"
18
19/**
20 *******************************************************************************
21 *
22 * @ingroup spm
23 *
24 * @brief Detect unknowns whose diagonal entry is zero or absent
25 *
26 *******************************************************************************
27 *
28 * @param[in] spm
29 * The sparse matrix.
30 *
31 * @param[out] zeros_n
32 * The number of unknowns with a zero or missing diagonal entry.
33 *
34 * @param[out] zeros_list
35 * Array containing the indices of unknowns with a zero or missing
36 * diagonal entry. The caller is responsible for freeing this array.
37 *
38 *******************************************************************************
39 *
40 * @retval SPM_SUCCESS
41 * Success.
42 *
43 * @retval SPM_ERR_BADPARAMETER
44 * If the coefficient type or the sparse matrix format is unsupported.
45 *
46 * @retval SPM_ERR_OUTOFMEMORY
47 * If the internal allocation of zeros_list failed.
48 *
49 *******************************************************************************/
50
51int
53 spm_int_t *zeros_n,
54 spm_int_t **zeros_list )
55{
56 int ret;
57
58 *zeros_n = 0;
59 *zeros_list = NULL;
60
61 switch ( spm->flttype ) {
62 case SpmFloat:
63 ret = s_spmGetDiagonalZeros( spm, zeros_n, zeros_list );
64 break;
65
66 case SpmDouble:
67 ret = d_spmGetDiagonalZeros( spm, zeros_n, zeros_list );
68 break;
69
70 case SpmComplex32:
71 ret = c_spmGetDiagonalZeros( spm, zeros_n, zeros_list );
72 break;
73
74 case SpmComplex64:
75 ret = z_spmGetDiagonalZeros( spm, zeros_n, zeros_list );
76 break;
77
78 case SpmPattern:
79 default:
81 }
82
83 return ret;
84}
@ SPM_ERR_BADPARAMETER
Definition const.h:89
@ SpmComplex64
Definition const.h:66
@ SpmDouble
Definition const.h:64
@ SpmFloat
Definition const.h:63
@ SpmComplex32
Definition const.h:65
@ SpmPattern
Definition const.h:62
int z_spmGetDiagonalZeros(const spmatrix_t *spm, spm_int_t *zeros_n, spm_int_t **zeros_list)
Detect unknowns with a zero or missing diagonal entry.
int s_spmGetDiagonalZeros(const spmatrix_t *spm, spm_int_t *zeros_n, spm_int_t **zeros_list)
Detect unknowns with a zero or missing diagonal entry.
int d_spmGetDiagonalZeros(const spmatrix_t *spm, spm_int_t *zeros_n, spm_int_t **zeros_list)
Detect unknowns with a zero or missing diagonal entry.
int c_spmGetDiagonalZeros(const spmatrix_t *spm, spm_int_t *zeros_n, spm_int_t **zeros_list)
Detect unknowns with a zero or missing diagonal entry.
spm_coeftype_t flttype
Definition spm.h:68
int spmGetDiagonalZeros(const spmatrix_t *spm, spm_int_t *zeros_n, spm_int_t **zeros_list)
Detect unknowns whose diagonal entry is zero or absent.
struct spmatrix_s spmatrix_t
The sparse matrix data structure.
int spm_int_t
The main integer datatype used in spm arrays.
Definition datatypes.h:70