Lines Matching +full:- +full:d
1 /* ----------------------------------------------------------------------
4 * Description: Floating-point LDL decomposition
9 * Target Processor: Cortex-M and Cortex-A cores
10 * -------------------------------------------------------------------- */
12 * Copyright (C) 2010-2021 ARM Limited or its affiliates. All rights reserved.
14 * SPDX-License-Identifier: Apache-2.0
20 * www.apache.org/licenses/LICENSE-2.0
45 * @brief Floating-point LDL^t decomposition of positive semi-definite matrix.
46 * @param[in] pSrc points to the instance of the input floating-point matrix structure.
47 …* @param[out] pl points to the instance of the output floating-point triangular matrix structure.
48 * @param[out] pd points to the instance of the output floating-point diagonal matrix structure.
49 * @param[out] pp points to the instance of the output floating-point permutation vector.
52 - \ref ARM_MATH_SUCCESS : Operation successful
53 - \ref ARM_MATH_SIZE_MISMATCH : Matrix size check failed
54 - \ref ARM_MATH_DECOMPOSITION_FAILURE : Input matrix cannot be decomposed
56 * Computes the LDL^t decomposition of a matrix A such that P A P^t = L D L^t.
72 if ((pSrc->numRows != pSrc->numCols) || in arm_mat_ldlt_f64()
73 (pl->numRows != pl->numCols) || in arm_mat_ldlt_f64()
74 (pd->numRows != pd->numCols) || in arm_mat_ldlt_f64()
75 (pl->numRows != pd->numRows) ) in arm_mat_ldlt_f64()
86 const int n=pSrc->numRows; in arm_mat_ldlt_f64()
90 memset(pd->pData,0,sizeof(float64_t)*n*n); in arm_mat_ldlt_f64()
92 memcpy(pl->pData,pSrc->pData,n*n*sizeof(float64_t)); in arm_mat_ldlt_f64()
93 pA = pl->pData; in arm_mat_ldlt_f64()
128 if (fabs(a) < 1.0e-18) in arm_mat_ldlt_f64()
140 pA[w*n+x] = pA[w*n+x] - pA[w*n+k] * pA[x*n+k] / a; in arm_mat_ldlt_f64()
158 diag--; in arm_mat_ldlt_f64()
166 pl->pData[row*n+col]=0.0; in arm_mat_ldlt_f64()
179 pl->pData[row*n+col] = 0.0; in arm_mat_ldlt_f64()
185 int d; in arm_mat_ldlt_f64() local
186 for(d=0; d < diag;d++) in arm_mat_ldlt_f64()
188 pd->pData[d*n+d] = pl->pData[d*n+d]; in arm_mat_ldlt_f64()
189 pl->pData[d*n+d] = 1.0; in arm_mat_ldlt_f64()