@@ -382,8 +382,8 @@ class Spline2DSpec<DataT, YdimT, 0>
382382 const auto nYdim4 = nYdim * 4 ;
383383
384384 DataT *S = P,
385- *R = P + nYdim,
386- *Q = P + nYdim * 2 ,
385+ *Q = P + nYdim,
386+ *R = P + nYdim * 2 ,
387387 *W = P + nYdim * 3 ;
388388
389389 const DataT& u = u1;
@@ -425,28 +425,6 @@ class Spline2DSpec<DataT, YdimT, 0>
425425 }
426426 }
427427
428- // Derivative R = dS / du
429- // R = dRdSl * (dSdSd * A[0] + dSdDd * A[1]) + dRdDl * (dSdSd * A[2] + dSdDd * A[3]) +
430- // dRdSr * (dSdSd * A[4] + dSdDd * A[5]) + dRdDr * (dSdSd * A[6] + dSdDd * A[7]) +
431- // dRdSl * (dSdSu * B[0] + dSdDu * B[1]) + dRdDl * (dSdSu * B[2] + dSdDu * B[3]) +
432- // dRdSr * (dSdSu * B[4] + dSdDu * B[5]) + dRdDr * (dSdSu * B[6] + dSdDu * B[7]);
433-
434- {
435- DataT a[8 ] = {dRdSl * dSdSd, dRdSl * dSdDd, dRdDl * dSdSd, dRdDl * dSdDd,
436- dRdSr * dSdSd, dRdSr * dSdDd, dRdDr * dSdSd, dRdDr * dSdDd};
437- DataT b[8 ] = {dRdSl * dSdSu, dRdSl * dSdDu, dRdDl * dSdSu, dRdDl * dSdDu,
438- dRdSr * dSdSu, dRdSr * dSdDu, dRdDr * dSdSu, dRdDr * dSdDu};
439-
440- // R = sum a[i]*A[i] + b[i]*B[i]
441-
442- for (int32_t dim = 0 ; dim < nYdim; dim++) {
443- R[dim] = 0 ;
444- for (int32_t i = 0 ; i < 8 ; i++) {
445- R[dim] += a[i] * A[nYdim * i + dim] + b[i] * B[nYdim * i + dim];
446- }
447- }
448- }
449-
450428 // Derivative Q = dS / dv
451429 // Q = dSdSl * (dQdSd * A[0] + dQdDd * A[1]) + dSdDl * (dQdSd * A[2] + dQdDd * A[3]) +
452430 // dSdSr * (dQdSd * A[4] + dQdDd * A[5]) + dSdDr * (dQdSd * A[6] + dQdDd * A[7]) +
@@ -469,6 +447,28 @@ class Spline2DSpec<DataT, YdimT, 0>
469447 }
470448 }
471449
450+ // Derivative R = dS / du
451+ // R = dRdSl * (dSdSd * A[0] + dSdDd * A[1]) + dRdDl * (dSdSd * A[2] + dSdDd * A[3]) +
452+ // dRdSr * (dSdSd * A[4] + dSdDd * A[5]) + dRdDr * (dSdSd * A[6] + dSdDd * A[7]) +
453+ // dRdSl * (dSdSu * B[0] + dSdDu * B[1]) + dRdDl * (dSdSu * B[2] + dSdDu * B[3]) +
454+ // dRdSr * (dSdSu * B[4] + dSdDu * B[5]) + dRdDr * (dSdSu * B[6] + dSdDu * B[7]);
455+
456+ {
457+ DataT a[8 ] = {dRdSl * dSdSd, dRdSl * dSdDd, dRdDl * dSdSd, dRdDl * dSdDd,
458+ dRdSr * dSdSd, dRdSr * dSdDd, dRdDr * dSdSd, dRdDr * dSdDd};
459+ DataT b[8 ] = {dRdSl * dSdSu, dRdSl * dSdDu, dRdDl * dSdSu, dRdDl * dSdDu,
460+ dRdSr * dSdSu, dRdSr * dSdDu, dRdDr * dSdSu, dRdDr * dSdDu};
461+
462+ // R = sum a[i]*A[i] + b[i]*B[i]
463+
464+ for (int32_t dim = 0 ; dim < nYdim; dim++) {
465+ R[dim] = 0 ;
466+ for (int32_t i = 0 ; i < 8 ; i++) {
467+ R[dim] += a[i] * A[nYdim * i + dim] + b[i] * B[nYdim * i + dim];
468+ }
469+ }
470+ }
471+
472472 // cross-derivative W = (dS)^2 / du / dv
473473 // W = dRdSl * (dQdSd * A[0] + dQdDd * A[1]) + dRdDl * (dQdSd * A[2] + dQdDd * A[3]) +
474474 // dRdSr * (dQdSd * A[4] + dQdDd * A[5]) + dRdDr * (dQdSd * A[6] + dQdDd * A[7]) +
0 commit comments