执行方阵 \(A=P*L*U\) 的 \(LU\) 分解(其中 \(P\) 是置换矩阵)并求解矩阵方程 \(A*X=B\)。函数通过参数 info 返回置换 \(P\) 的 \(sign\)。
- 参数
-
| src1 | 指向以行优先顺序存储的输入矩阵 \(A\) 的指针。工作完成后,src1 至少包含 \(LU\) 分解的 \(U\) 部分,适用于行列式计算:\(det(A)=sign*\prod_{j=1}^{M}a_{jj}\)。 |
| src1_step | 矩阵 \(A\) 中两个连续行之间的字节数。 |
| m | 方阵 \(A\) 的大小。 |
| src2 | 指向 \(M\times N\) 矩阵 \(B\) 的指针,它是系统 \(A*X=B\) 的右侧。 \(B\) 以行优先顺序存储。 如果 src2 是空指针,则仅执行 \(LU\) 分解。 工作完成后,src2 包含系统 \(A*X=B\) 的解 \(X\)。 |
| src2_step | 矩阵 \(B\) 中两个连续行之间的字节数。 |
| n | \(M\times N\) 矩阵 \(B\) 中右手向量的数量。 |
| info | 指示分解是否成功。 如果 *info 等于零,则分解失败,否则 *info 等于 \(sign\)。 |
|
| int | hal_ni_LU32f (float *src1, size_t src1_step, int m, float *src2, size_t src2_step, int n, int *info) |
| |
| int | hal_ni_LU64f (double *src1, size_t src1_step, int m, double *src2, size_t src2_step, int n, int *info) |
| |
◆ hal_ni_LU32f()
| int hal_ni_LU32f |
( |
float * | src1, |
|
|
size_t | src1_step, |
|
|
int | m, |
|
|
float * | src2, |
|
|
size_t | src2_step, |
|
|
int | n, |
|
|
int * | info ) |
|
inline |
◆ hal_ni_LU64f()
| int hal_ni_LU64f |
( |
如果传入NULL,则假定尺度参数c为1.0。否则,指向的变量将被设置为最优尺度。 | src1, |
|
|
size_t | src1_step, |
|
|
int | m, |
|
|
如果传入NULL,则假定尺度参数c为1.0。否则,指向的变量将被设置为最优尺度。 | src2, |
|
|
size_t | src2_step, |
|
|
int | n, |
|
|
int * | info ) |
|
inline |