GRASS GIS 8 Programmer's Manual  8.4.0dev(2024)-535c39c9fc
solvers_direct.c File Reference
#include <math.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>
#include <grass/gis.h>
#include <grass/gmath.h>
#include <grass/glocale.h>
Include dependency graph for solvers_direct.c:

Go to the source code of this file.

Macros

#define TINY   1.0e-20
 
#define COMP_PIVOT   100
 

Functions

int G_math_solver_gauss (double **A, double *x, double *b, int rows)
 The gauss elimination solver for quardatic matrices. More...
 
int G_math_solver_lu (double **A, double *x, double *b, int rows)
 The LU solver for quardatic matrices. More...
 
int G_math_solver_cholesky (double **A, double *x, double *b, int bandwidth, int rows)
 The choleksy decomposition solver for quardatic, symmetric positive definite matrices. More...
 
void G_math_gauss_elimination (double **A, double *b, int rows)
 Gauss elimination. More...
 
void G_math_lu_decomposition (double **A, double *b UNUSED, int rows)
 lu decomposition More...
 
int G_math_cholesky_decomposition (double **A, int rows, int bandwidth)
 cholesky decomposition for symmetric, positive definite matrices with bandwidth optimization More...
 
void G_math_backward_substitution (double **A, double *x, double *b, int rows)
 backward substitution More...
 
void G_math_forward_substitution (double **A, double *x, double *b, int rows)
 forward substitution More...
 

Macro Definition Documentation

◆ COMP_PIVOT

#define COMP_PIVOT   100

Definition at line 27 of file solvers_direct.c.

◆ TINY

#define TINY   1.0e-20

Definition at line 26 of file solvers_direct.c.

Function Documentation

◆ G_math_backward_substitution()

void G_math_backward_substitution ( double **  A,
double *  x,
double *  b,
int  rows 
)

backward substitution

Parameters
Adouble **
xdouble *
bdouble *
rowsint
Returns
void

Definition at line 285 of file solvers_direct.c.

◆ G_math_cholesky_decomposition()

int G_math_cholesky_decomposition ( double **  A,
int  rows,
int  bandwidth 
)

cholesky decomposition for symmetric, positive definite matrices with bandwidth optimization

The provided matrix will be overwritten with the lower and upper triangle matrix A = LL^T

Parameters
Adouble **
rowsint
bandwidthint – the bandwidth of the matrix (0 > bandwidth <= cols)
Returns
void

Definition at line 217 of file solvers_direct.c.

◆ G_math_forward_substitution()

void G_math_forward_substitution ( double **  A,
double *  x,
double *  b,
int  rows 
)

forward substitution

Parameters
Adouble **
xdouble *
bdouble *
rowsint
Returns
void

Definition at line 309 of file solvers_direct.c.

◆ G_math_gauss_elimination()

void G_math_gauss_elimination ( double **  A,
double *  b,
int  rows 
)

Gauss elimination.

To run this solver efficiently, no pivoting is supported. The matrix will be overwritten with the decomposite form

Parameters
Adouble **
bdouble *
rowsint
Returns
void

Definition at line 153 of file solvers_direct.c.

◆ G_math_lu_decomposition()

void G_math_lu_decomposition ( double **  A,
double *b  UNUSED,
int  rows 
)

lu decomposition

To run this solver efficiently, no pivoting is supported. The matrix will be overwritten with the decomposite form

Parameters
Adouble **
bdouble * – this vector is needed if its part of the linear equation system, otherwise set it to NULL
rowsint
Returns
void

Definition at line 186 of file solvers_direct.c.

◆ G_math_solver_cholesky()

int G_math_solver_cholesky ( double **  A,
double *  x,
double *  b,
int  bandwidth,
int  rows 
)

The choleksy decomposition solver for quardatic, symmetric positive definite matrices.

This solver does not support sparse matrices The matrix A will be overwritten. The result is written to the vector x

Parameters
Adouble **
xdouble *
bdouble *
bandwidthint – the bandwidth of the band matrix, if unsure set to rows
rowsint
Returns
int – 1 success

Definition at line 124 of file solvers_direct.c.

◆ G_math_solver_gauss()

int G_math_solver_gauss ( double **  A,
double *  x,
double *  b,
int  rows 
)

The gauss elimination solver for quardatic matrices.

This solver does not support sparse matrices The matrix A will be overwritten. The result is written to the vector x

Parameters
Adouble **
xdouble *
bdouble *
rowsint
Returns
int – 1 success

Definition at line 42 of file solvers_direct.c.

◆ G_math_solver_lu()

int G_math_solver_lu ( double **  A,
double *  x,
double *  b,
int  rows 
)

The LU solver for quardatic matrices.

This solver does not support sparse matrices The matrix A will be overwritten. The result is written to the vector x in the G_math_les structure

Parameters
Adouble **
xdouble *
bdouble *
rowsint
Returns
int – 1 success

Definition at line 66 of file solvers_direct.c.