Lines Matching refs:n

48 static int CeedChebyshevPolynomialsAtPoint(CeedScalar x, CeedInt n, CeedScalar *chebyshev_x) {  in CeedChebyshevPolynomialsAtPoint()  argument
51 for (CeedInt i = 2; i < n; i++) chebyshev_x[i] = 2 * x * chebyshev_x[i - 1] - chebyshev_x[i - 2]; in CeedChebyshevPolynomialsAtPoint()
66 static int CeedChebyshevDerivativeAtPoint(CeedScalar x, CeedInt n, CeedScalar *chebyshev_dx) { in CeedChebyshevDerivativeAtPoint() argument
73 for (CeedInt i = 2; i < n; i++) { in CeedChebyshevDerivativeAtPoint()
99 …eflect(CeedScalar *A, const CeedScalar *v, CeedScalar b, CeedInt m, CeedInt n, CeedInt row, CeedIn… in CeedHouseholderReflect() argument
100 for (CeedInt j = 0; j < n; j++) { in CeedHouseholderReflect()
129 …CeedScalar c, CeedScalar s, CeedTransposeMode t_mode, CeedInt i, CeedInt k, CeedInt m, CeedInt n) { in CeedGivensRotation() argument
130 CeedInt stride_j = 1, stride_ik = m, num_its = n; in CeedGivensRotation()
133 stride_j = n; in CeedGivensRotation()
163 static int CeedScalarView(const char *name, const char *fp_fmt, CeedInt m, CeedInt n, const CeedSca… in CeedScalarView() argument
174 …for (CeedInt j = 0; j < n; j++) fprintf(stream, fp_fmt, fabs(a[i * n + j]) > 1E-14 ? a[i * n + j] … in CeedScalarView()
1146 … CeedScalar *mat_A, const CeedScalar *mat_B, CeedScalar *mat_C, CeedInt m, CeedInt n, CeedInt kk) { in CeedMatrixMatrixMultiply() argument
1148 for (CeedInt j = 0; j < n; j++) { in CeedMatrixMatrixMultiply()
1151 for (CeedInt k = 0; k < kk; k++) sum += mat_A[k + i * kk] * mat_B[j + k * n]; in CeedMatrixMatrixMultiply()
1152 mat_C[j + i * n] = sum; in CeedMatrixMatrixMultiply()
1171 int CeedQRFactorization(Ceed ceed, CeedScalar *mat, CeedScalar *tau, CeedInt m, CeedInt n) { in CeedQRFactorization() argument
1175 CeedCheck(n <= m, ceed, CEED_ERROR_UNSUPPORTED, "Cannot compute QR factorization with n > m"); in CeedQRFactorization()
1177 for (CeedInt i = 0; i < n; i++) { in CeedQRFactorization()
1185 v[i] = mat[i + n * i]; in CeedQRFactorization()
1187 v[j] = mat[i + n * j]; in CeedQRFactorization()
1201 CeedHouseholderReflect(&mat[i * n + i + 1], &v[i], tau[i], m - i, n - i - 1, n, 1); in CeedQRFactorization()
1203 mat[i + n * i] = R_ii; in CeedQRFactorization()
1204 for (CeedInt j = i + 1; j < m; j++) mat[i + n * j] = v[j]; in CeedQRFactorization()
1228 …_A, const CeedScalar *mat_Q, const CeedScalar *tau, CeedTransposeMode t_mode, CeedInt m, CeedInt n, in CeedHouseholderApplyQ() argument
1237 CeedCall(CeedHouseholderReflect(&mat_A[i * row], &v[i], tau[i], m - i, n, row, col)); in CeedHouseholderApplyQ()
1256 int CeedMatrixPseudoinverse(Ceed ceed, const CeedScalar *mat, CeedInt m, CeedInt n, CeedScalar *mat… in CeedMatrixPseudoinverse() argument
1261 CeedCall(CeedCalloc(m * n, &mat_copy)); in CeedMatrixPseudoinverse()
1262 memcpy(mat_copy, mat, m * n * sizeof mat[0]); in CeedMatrixPseudoinverse()
1265 CeedCall(CeedQRFactorization(ceed, mat_copy, tau, m, n)); in CeedMatrixPseudoinverse()
1269 CeedCall(CeedHouseholderApplyQ(I, mat_copy, tau, CEED_TRANSPOSE, m, m, n, m, 1)); in CeedMatrixPseudoinverse()
1272 mat_pinv[j + m * (n - 1)] = I[j + m * (n - 1)] / mat_copy[n * n - 1]; in CeedMatrixPseudoinverse()
1273 for (CeedInt i = n - 2; i >= 0; i--) { // Row i in CeedMatrixPseudoinverse()
1275 …for (CeedInt k = i + 1; k < n; k++) mat_pinv[j + m * i] -= mat_copy[k + n * i] * mat_pinv[j + m * … in CeedMatrixPseudoinverse()
1276 mat_pinv[j + m * i] /= mat_copy[i + n * i]; in CeedMatrixPseudoinverse()
1300 int CeedSymmetricSchurDecomposition(Ceed ceed, CeedScalar *mat, CeedScalar *lambda, CeedInt n) { in CeedSymmetricSchurDecomposition() argument
1302 …CeedCheck(n > 1, ceed, CEED_ERROR_UNSUPPORTED, "Cannot compute symmetric Schur decomposition of sc… in CeedSymmetricSchurDecomposition()
1304 CeedScalar v[n - 1], tau[n - 1], mat_T[n * n]; in CeedSymmetricSchurDecomposition()
1307 memcpy(mat_T, mat, n * n * sizeof(mat[0])); in CeedSymmetricSchurDecomposition()
1308 for (CeedInt i = 0; i < n; i++) { in CeedSymmetricSchurDecomposition()
1309 for (CeedInt j = 0; j < n; j++) mat[j + n * i] = (i == j) ? 1 : 0; in CeedSymmetricSchurDecomposition()
1313 for (CeedInt i = 0; i < n - 1; i++) { in CeedSymmetricSchurDecomposition()
1317 v[i] = mat_T[i + n * (i + 1)]; in CeedSymmetricSchurDecomposition()
1318 for (CeedInt j = i + 1; j < n - 1; j++) { in CeedSymmetricSchurDecomposition()
1319 v[j] = mat_T[i + n * (j + 1)]; in CeedSymmetricSchurDecomposition()
1329 tau[i] = i == n - 2 ? 2 : 2 * v[i] * v[i] / (v[i] * v[i] + sigma); in CeedSymmetricSchurDecomposition()
1330 for (CeedInt j = i + 1; j < n - 1; j++) v[j] /= v[i]; in CeedSymmetricSchurDecomposition()
1333 for (CeedInt j = i + 2; j < n; j++) { in CeedSymmetricSchurDecomposition()
1334 mat_T[i + n * j] = 0; in CeedSymmetricSchurDecomposition()
1335 mat_T[j + n * i] = 0; in CeedSymmetricSchurDecomposition()
1338 …CeedHouseholderReflect(&mat_T[(i + 1) + n * (i + 1)], &v[i], tau[i], n - (i + 1), n - (i + 1), n, … in CeedSymmetricSchurDecomposition()
1339 …CeedHouseholderReflect(&mat_T[(i + 1) + n * (i + 1)], &v[i], tau[i], n - (i + 1), n - (i + 1), 1, in CeedSymmetricSchurDecomposition()
1342 mat_T[i + n * (i + 1)] = R_ii; in CeedSymmetricSchurDecomposition()
1343 mat_T[(i + 1) + n * i] = R_ii; in CeedSymmetricSchurDecomposition()
1344 for (CeedInt j = i + 1; j < n - 1; j++) { in CeedSymmetricSchurDecomposition()
1345 mat_T[i + n * (j + 1)] = v[j]; in CeedSymmetricSchurDecomposition()
1349 for (CeedInt i = n - 2; i >= 0; i--) { in CeedSymmetricSchurDecomposition()
1352 for (CeedInt j = i + 1; j < n - 1; j++) { in CeedSymmetricSchurDecomposition()
1353 v[j] = mat_T[i + n * (j + 1)]; in CeedSymmetricSchurDecomposition()
1354 mat_T[i + n * (j + 1)] = 0; in CeedSymmetricSchurDecomposition()
1356 …CeedHouseholderReflect(&mat[(i + 1) + n * (i + 1)], &v[i], tau[i], n - (i + 1), n - (i + 1), n, 1); in CeedSymmetricSchurDecomposition()
1361 CeedInt p = 0, q = 0, itr = 0, max_itr = n * n * n * n; in CeedSymmetricSchurDecomposition()
1368 for (CeedInt i = n - 2; i >= 0; i--) { in CeedSymmetricSchurDecomposition()
1369 if (fabs(mat_T[i + n * (i + 1)]) < tol) q += 1; in CeedSymmetricSchurDecomposition()
1372 for (CeedInt i = 0; i < n - q - 1; i++) { in CeedSymmetricSchurDecomposition()
1373 if (fabs(mat_T[i + n * (i + 1)]) < tol) p += 1; in CeedSymmetricSchurDecomposition()
1376 if (q == n - 1) break; // Finished reducing in CeedSymmetricSchurDecomposition()
1379 …CeedScalar t_nn = mat_T[(n - 1 - q) + n * (n - 1 - q)], t_nnm1 = mat_T[(n - 2 - q) + n * (n - 1 - … in CeedSymmetricSchurDecomposition()
1380 CeedScalar d = (mat_T[(n - 2 - q) + n * (n - 2 - q)] - t_nn) / 2; in CeedSymmetricSchurDecomposition()
1382 CeedScalar x = mat_T[p + n * p] - mu; in CeedSymmetricSchurDecomposition()
1383 CeedScalar z = mat_T[p + n * (p + 1)]; in CeedSymmetricSchurDecomposition()
1385 for (CeedInt k = p; k < n - q - 1; k++) { in CeedSymmetricSchurDecomposition()
1404 CeedGivensRotation(mat_T, c, s, CEED_NOTRANSPOSE, k, k + 1, n, n); in CeedSymmetricSchurDecomposition()
1405 CeedGivensRotation(mat_T, c, s, CEED_TRANSPOSE, k, k + 1, n, n); in CeedSymmetricSchurDecomposition()
1408 CeedGivensRotation(mat, c, s, CEED_NOTRANSPOSE, k, k + 1, n, n); in CeedSymmetricSchurDecomposition()
1411 if (k < n - q - 2) { in CeedSymmetricSchurDecomposition()
1412 x = mat_T[k + n * (k + 1)]; in CeedSymmetricSchurDecomposition()
1413 z = mat_T[k + n * (k + 2)]; in CeedSymmetricSchurDecomposition()
1420 for (CeedInt i = 0; i < n; i++) lambda[i] = mat_T[i + n * i]; in CeedSymmetricSchurDecomposition()
1423 CeedCheck(itr < max_itr || q > n, ceed, CEED_ERROR_MINOR, "Symmetric QR failed to converge"); in CeedSymmetricSchurDecomposition()
1447 …eed ceed, CeedScalar *mat_A, CeedScalar *mat_B, CeedScalar *mat_X, CeedScalar *lambda, CeedInt n) { in CeedSimultaneousDiagonalization() argument
1450 CeedCall(CeedCalloc(n * n, &mat_C)); in CeedSimultaneousDiagonalization()
1451 CeedCall(CeedCalloc(n * n, &mat_G)); in CeedSimultaneousDiagonalization()
1452 CeedCall(CeedCalloc(n, &vec_D)); in CeedSimultaneousDiagonalization()
1455 memcpy(mat_G, mat_B, n * n * sizeof(mat_B[0])); in CeedSimultaneousDiagonalization()
1456 CeedCall(CeedSymmetricSchurDecomposition(ceed, mat_G, vec_D, n)); in CeedSimultaneousDiagonalization()
1459 for (CeedInt i = n - 1; i >= 0; i--) { in CeedSimultaneousDiagonalization()
1463 for (CeedInt k = 0; k < n; k++) CeedScalarSwap(mat_G[k * n + j], mat_G[k * n + j + 1]); in CeedSimultaneousDiagonalization()
1471 for (CeedInt i = 0; i < n; i++) vec_D[i] = 1. / sqrt(vec_D[i]); in CeedSimultaneousDiagonalization()
1474 for (CeedInt i = 0; i < n; i++) { in CeedSimultaneousDiagonalization()
1475 for (CeedInt j = 0; j < n; j++) { in CeedSimultaneousDiagonalization()
1476 mat_G[i * n + j] *= vec_D[j]; in CeedSimultaneousDiagonalization()
1477 mat_C[j * n + i] = mat_G[i * n + j]; in CeedSimultaneousDiagonalization()
1481 …dMatrixMatrixMultiply(ceed, (const CeedScalar *)mat_C, (const CeedScalar *)mat_A, mat_X, n, n, n)); in CeedSimultaneousDiagonalization()
1483 …dMatrixMatrixMultiply(ceed, (const CeedScalar *)mat_X, (const CeedScalar *)mat_G, mat_C, n, n, n)); in CeedSimultaneousDiagonalization()
1486 CeedCall(CeedSymmetricSchurDecomposition(ceed, mat_C, lambda, n)); in CeedSimultaneousDiagonalization()
1489 for (CeedInt i = n - 1; i >= 0; i--) { in CeedSimultaneousDiagonalization()
1493 for (CeedInt k = 0; k < n; k++) CeedScalarSwap(mat_C[k * n + j], mat_C[k * n + j + 1]); in CeedSimultaneousDiagonalization()
1500 …dMatrixMatrixMultiply(ceed, (const CeedScalar *)mat_G, (const CeedScalar *)mat_C, mat_X, n, n, n)); in CeedSimultaneousDiagonalization()