Lines Matching refs:k

75 PetscErrorCode PetscDTAltVApply(PetscInt N, PetscInt k, const PetscReal *w, const PetscReal *v, Pet…  in PetscDTAltVApply()  argument
79 PetscCheck(k >= 0 && k <= N, PETSC_COMM_SELF, PETSC_ERR_ARG_OUTOFRANGE, "invalid form degree"); in PetscDTAltVApply()
81 if (!k) { in PetscDTAltVApply()
87 if (k == 1) { in PetscDTAltVApply()
93 if (k == 1) { in PetscDTAltVApply()
95 } else if (k == 2) { in PetscDTAltVApply()
108 PetscCall(PetscDTFactorialInt(k, &Nf)); in PetscDTAltVApply()
109 PetscCall(PetscDTBinomialInt(N, k, &Nk)); in PetscDTAltVApply()
110 PetscCall(PetscMalloc2(k, &subset, k, &perm)); in PetscDTAltVApply()
114 PetscCall(PetscDTEnumSubset(N, k, i, subset)); in PetscDTAltVApply()
119 PetscCall(PetscDTEnumPerm(k, j, perm, &permOdd)); in PetscDTAltVApply()
121 for (l = 0; l < k; l++) prod *= v[perm[l] * N + subset[l]]; in PetscDTAltVApply()
150 PetscErrorCode PetscDTAltVWedge(PetscInt N, PetscInt j, PetscInt k, const PetscReal *a, const Petsc… in PetscDTAltVWedge() argument
156 PetscCheck(j >= 0 && k >= 0, PETSC_COMM_SELF, PETSC_ERR_ARG_OUTOFRANGE, "negative form degree"); in PetscDTAltVWedge()
157 PetscCheck(j + k <= N, PETSC_COMM_SELF, PETSC_ERR_ARG_OUTOFRANGE, "Wedge greater than dimension"); in PetscDTAltVWedge()
161 PetscCall(PetscDTBinomialInt(N, j + k, &Njk)); in PetscDTAltVWedge()
164 } else if (!k) { in PetscDTAltVWedge()
170 if (j + k == 2) { in PetscDTAltVWedge()
185 PetscCall(PetscDTBinomialInt(N, j + k, &Njk)); in PetscDTAltVWedge()
186 PetscCall(PetscDTBinomialInt(j + k, j, &JKj)); in PetscDTAltVWedge()
187 PetscCall(PetscMalloc4(j + k, &subset, j + k, &subsetjk, j, &subsetj, k, &subsetk)); in PetscDTAltVWedge()
192 PetscCall(PetscDTEnumSubset(N, j + k, i, subset)); in PetscDTAltVWedge()
197 PetscCall(PetscDTEnumSplit(j + k, j, l, subsetjk, &jkOdd)); in PetscDTAltVWedge()
199 for (m = 0; m < k; m++) subsetk[m] = subset[subsetjk[j + m]]; in PetscDTAltVWedge()
201 PetscCall(PetscDTSubsetIndex(N, k, subsetk, &kInd)); in PetscDTAltVWedge()
227 PetscErrorCode PetscDTAltVWedgeMatrix(PetscInt N, PetscInt j, PetscInt k, const PetscReal *a, Petsc… in PetscDTAltVWedgeMatrix() argument
233 PetscCheck(j >= 0 && k >= 0, PETSC_COMM_SELF, PETSC_ERR_ARG_OUTOFRANGE, "negative form degree"); in PetscDTAltVWedgeMatrix()
234 PetscCheck(j + k <= N, PETSC_COMM_SELF, PETSC_ERR_ARG_OUTOFRANGE, "Wedge greater than dimension"); in PetscDTAltVWedgeMatrix()
238 PetscCall(PetscDTBinomialInt(N, j + k, &Njk)); in PetscDTAltVWedgeMatrix()
242 } else if (!k) { in PetscDTAltVWedgeMatrix()
249 if (j + k == 2) { in PetscDTAltVWedgeMatrix()
272 PetscCall(PetscDTBinomialInt(N, k, &Nk)); in PetscDTAltVWedgeMatrix()
273 PetscCall(PetscDTBinomialInt(N, j + k, &Njk)); in PetscDTAltVWedgeMatrix()
274 PetscCall(PetscDTBinomialInt(j + k, j, &JKj)); in PetscDTAltVWedgeMatrix()
275 PetscCall(PetscMalloc4(j + k, &subset, j + k, &subsetjk, j, &subsetj, k, &subsetk)); in PetscDTAltVWedgeMatrix()
280 PetscCall(PetscDTEnumSubset(N, j + k, i, subset)); in PetscDTAltVWedgeMatrix()
285 PetscCall(PetscDTEnumSplit(j + k, j, l, subsetjk, &jkOdd)); in PetscDTAltVWedgeMatrix()
287 for (m = 0; m < k; m++) subsetk[m] = subset[subsetjk[j + m]]; in PetscDTAltVWedgeMatrix()
289 PetscCall(PetscDTSubsetIndex(N, k, subsetk, &kInd)); in PetscDTAltVWedgeMatrix()
323 PetscErrorCode PetscDTAltVPullback(PetscInt N, PetscInt M, const PetscReal *L, PetscInt k, const Pe… in PetscDTAltVPullback() argument
329 …PetscCheck(PetscAbsInt(k) <= N && PetscAbsInt(k) <= M, PETSC_COMM_SELF, PETSC_ERR_ARG_OUTOFRANGE, … in PetscDTAltVPullback()
331 PetscCall(PetscDTBinomialInt(M, PetscAbsInt(k), &Mk)); in PetscDTAltVPullback()
332 PetscCall(PetscDTBinomialInt(N, PetscAbsInt(k), &Nk)); in PetscDTAltVPullback()
333 if (!k) { in PetscDTAltVPullback()
335 } else if (k == 1) { in PetscDTAltVPullback()
342 } else if (k == -1) { in PetscDTAltVPullback()
351 } else if (k == 2) { in PetscDTAltVPullback()
363 } else if (k == -2) { in PetscDTAltVPullback()
392 PetscCall(PetscDTBinomialInt(M, PetscAbsInt(k), &Mk)); in PetscDTAltVPullback()
393 PetscCall(PetscDTBinomialInt(N, PetscAbsInt(k), &Nk)); in PetscDTAltVPullback()
394 PetscCall(PetscDTFactorialInt(PetscAbsInt(k), &Nf)); in PetscDTAltVPullback()
395 if (k < 0) { in PetscDTAltVPullback()
397 k = -k; in PetscDTAltVPullback()
399 PetscCall(PetscDTAltVStar(M, M - k, 1, w, walloc)); in PetscDTAltVPullback()
404 PetscCall(PetscMalloc5(k, &subsetw, k, &subsetv, k, &perm, N * k, &Lw, k * k, &Lwv)); in PetscDTAltVPullback()
407 PetscCall(PetscDTEnumSubset(M, k, i, subsetw)); in PetscDTAltVPullback()
409 PetscCall(PetscDTEnumSubset(N, k, j, subsetv)); in PetscDTAltVPullback()
414 PetscCall(PetscDTEnumPerm(k, p, perm, &isOdd)); in PetscDTAltVPullback()
416 for (l = 0; l < k; l++) prod *= L[subsetw[perm[l]] * N + subsetv[l]]; in PetscDTAltVPullback()
425 PetscCall(PetscDTAltVStar(N, N - k, -1, Lstarw, sLsw)); in PetscDTAltVPullback()
452 PetscErrorCode PetscDTAltVPullbackMatrix(PetscInt N, PetscInt M, const PetscReal *L, PetscInt k, Pe… in PetscDTAltVPullbackMatrix() argument
462 …PetscCheck(PetscAbsInt(k) <= N && PetscAbsInt(k) <= M, PETSC_COMM_SELF, PETSC_ERR_ARG_OUTOFRANGE, … in PetscDTAltVPullbackMatrix()
466 PetscCall(PetscDTBinomialInt(M, PetscAbsInt(k), &Mk)); in PetscDTAltVPullbackMatrix()
467 PetscCall(PetscDTBinomialInt(N, PetscAbsInt(k), &Nk)); in PetscDTAltVPullbackMatrix()
468 if (!k) { in PetscDTAltVPullbackMatrix()
470 } else if (k == 1) { in PetscDTAltVPullbackMatrix()
474 } else if (k == -1) { in PetscDTAltVPullbackMatrix()
478 } else if (k == 2) { in PetscDTAltVPullbackMatrix()
488 } else if (k == -2) { in PetscDTAltVPullbackMatrix()
506 if (k < 0) { in PetscDTAltVPullbackMatrix()
508 k = -k; in PetscDTAltVPullbackMatrix()
510 PetscCall(PetscDTBinomialInt(M, PetscAbsInt(k), &Mk)); in PetscDTAltVPullbackMatrix()
511 PetscCall(PetscDTBinomialInt(N, PetscAbsInt(k), &Nk)); in PetscDTAltVPullbackMatrix()
512 PetscCall(PetscDTFactorialInt(PetscAbsInt(k), &Nf)); in PetscDTAltVPullbackMatrix()
513 PetscCall(PetscMalloc5(M, &subsetw, N, &subsetv, k, &perm, N * k, &Lw, k * k, &Lwv)); in PetscDTAltVPullbackMatrix()
519 PetscCall(PetscDTEnumSplit(M, k, i, subsetw, &iOdd)); in PetscDTAltVPullbackMatrix()
521 iOdd = negative ? (PetscBool)(iOdd ^ ((k * (M - k)) & 1)) : PETSC_FALSE; in PetscDTAltVPullbackMatrix()
525 PetscCall(PetscDTEnumSplit(N, k, j, subsetv, &jOdd)); in PetscDTAltVPullbackMatrix()
527 jOdd = negative ? (PetscBool)(iOdd ^ jOdd ^ ((k * (N - k)) & 1)) : PETSC_FALSE; in PetscDTAltVPullbackMatrix()
532 PetscCall(PetscDTEnumPerm(k, p, perm, &isOdd)); in PetscDTAltVPullbackMatrix()
535 for (l = 0; l < k; l++) prod *= L[subsetw[perm[l]] * N + subsetv[l]]; in PetscDTAltVPullbackMatrix()
561 PetscErrorCode PetscDTAltVInterior(PetscInt N, PetscInt k, const PetscReal *w, const PetscReal *v, … in PetscDTAltVInterior() argument
566 PetscCheck(k > 0 && k <= N, PETSC_COMM_SELF, PETSC_ERR_ARG_OUTOFRANGE, "invalid form degree"); in PetscDTAltVInterior()
567 PetscCall(PetscDTBinomialInt(N, k, &Nk)); in PetscDTAltVInterior()
568 PetscCall(PetscDTBinomialInt(N, k - 1, &Nkm)); in PetscDTAltVInterior()
570 if (k == 1) { in PetscDTAltVInterior()
575 } else if (k == N) { in PetscDTAltVInterior()
587 PetscCall(PetscMalloc2(k, &subset, k, &work)); in PetscDTAltVInterior()
592 PetscCall(PetscDTEnumSubset(N, k, i, subset)); in PetscDTAltVInterior()
593 for (j = 0; j < k; j++) { in PetscDTAltVInterior()
597 for (l = 0, m = 0; l < k; l++) { in PetscDTAltVInterior()
600 PetscCall(PetscDTSubsetIndex(N, k - 1, work, &idx)); in PetscDTAltVInterior()
624 PetscErrorCode PetscDTAltVInteriorMatrix(PetscInt N, PetscInt k, const PetscReal *v, PetscReal *int… in PetscDTAltVInteriorMatrix() argument
629 PetscCheck(k > 0 && k <= N, PETSC_COMM_SELF, PETSC_ERR_ARG_OUTOFRANGE, "invalid form degree"); in PetscDTAltVInteriorMatrix()
630 PetscCall(PetscDTBinomialInt(N, k, &Nk)); in PetscDTAltVInteriorMatrix()
631 PetscCall(PetscDTBinomialInt(N, k - 1, &Nkm)); in PetscDTAltVInteriorMatrix()
633 if (k == 1) { in PetscDTAltVInteriorMatrix()
635 } else if (k == N) { in PetscDTAltVInteriorMatrix()
653 PetscCall(PetscMalloc2(k, &subset, k, &work)); in PetscDTAltVInteriorMatrix()
658 PetscCall(PetscDTEnumSubset(N, k, i, subset)); in PetscDTAltVInteriorMatrix()
659 for (j = 0; j < k; j++) { in PetscDTAltVInteriorMatrix()
663 for (l = 0, m = 0; l < k; l++) { in PetscDTAltVInteriorMatrix()
666 PetscCall(PetscDTSubsetIndex(N, k - 1, work, &idx)); in PetscDTAltVInteriorMatrix()
694 PetscErrorCode PetscDTAltVInteriorPattern(PetscInt N, PetscInt k, PetscInt (*indices)[3]) in PetscDTAltVInteriorPattern() argument
699 PetscCheck(k > 0 && k <= N, PETSC_COMM_SELF, PETSC_ERR_ARG_OUTOFRANGE, "invalid form degree"); in PetscDTAltVInteriorPattern()
700 PetscCall(PetscDTBinomialInt(N, k, &Nk)); in PetscDTAltVInteriorPattern()
701 PetscCall(PetscDTBinomialInt(N, k - 1, &Nkm)); in PetscDTAltVInteriorPattern()
703 if (k == 1) { in PetscDTAltVInteriorPattern()
709 } else if (k == N) { in PetscDTAltVInteriorPattern()
740 PetscCall(PetscMalloc2(k, &subset, k, &work)); in PetscDTAltVInteriorPattern()
744 PetscCall(PetscDTEnumSubset(N, k, i, subset)); in PetscDTAltVInteriorPattern()
745 for (j = 0; j < k; j++) { in PetscDTAltVInteriorPattern()
749 for (l = 0, m = 0; l < k; l++) { in PetscDTAltVInteriorPattern()
752 PetscCall(PetscDTSubsetIndex(N, k - 1, work, &idx)); in PetscDTAltVInteriorPattern()
753 indices[i * k + j][0] = idx; in PetscDTAltVInteriorPattern()
754 indices[i * k + j][1] = i; in PetscDTAltVInteriorPattern()
755 indices[i * k + j][2] = flip ? -(subset[j] + 1) : subset[j]; in PetscDTAltVInteriorPattern()
786 PetscErrorCode PetscDTAltVStar(PetscInt N, PetscInt k, PetscInt pow, const PetscReal *w, PetscReal … in PetscDTAltVStar() argument
791 PetscCheck(k >= 0 && k <= N, PETSC_COMM_SELF, PETSC_ERR_ARG_OUTOFRANGE, "invalid form degree"); in PetscDTAltVStar()
792 PetscCall(PetscDTBinomialInt(N, k, &Nk)); in PetscDTAltVStar()
804 if (pow > 1 && ((k * (N - k)) & 1)) { in PetscDTAltVStar()
812 PetscInt l = (pow == 1) ? k : N - k; in PetscDTAltVStar()
826 if (pow > 1 && (k * (N - k)) % 2) { in PetscDTAltVStar()