Skip to content

Commit 7808531

Browse files
committed
refactor: Fix definition and usage of alpha (and delta)
Signed-off-by: Sietze van Buuren <[email protected]>
1 parent 1bdcb90 commit 7808531

File tree

2 files changed

+5
-5
lines changed

2 files changed

+5
-5
lines changed

docs/theory/cubic.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,8 @@ in which the expressions $\delta^{(j,i)}_k$ read
7070
| | $i=0$ | $i=1$ | $i=2$ | $i=3$ |
7171
|--:|:-----:|:-----:|:-----:|:-----:|
7272
| $j=0$ | ${}^1x_k^2({}^1x_k-3{}^0x_k)$ | $+6{}^0x_k{}^1x_k$ | $-3({}^0x_k+{}^1x_k)$ | $+2$ |
73-
| $j=1$ | ${}^0x_k^2(3{}^1x_k-{}^0x_k)$ | $-6{}^0x_k{}^1x_k$ | $+3({}^0x_k+{}^1x_k)$ | $-2$ |
74-
| $j=2$ | $-{}^0x_k{}^1x_k^2$ | ${}^1x_k(2{}^0x_k+{}^1x_k)$ | $-({}^0x_k+2{}^1x_k)$ | $+1$ |
73+
| $j=1$ | $-{}^0x_k{}^1x_k^2$ | ${}^1x_k(2{}^0x_k+{}^1x_k)$ | $-({}^0x_k+2{}^1x_k)$ | $+1$ |
74+
| $j=2$ | ${}^0x_k^2(3{}^1x_k-{}^0x_k)$ | $-6{}^0x_k{}^1x_k$ | $+3({}^0x_k+{}^1x_k)$ | $-2$ |
7575
| $j=3$ | $-{}^1x_k{}^0x_k^2$ | ${}^0x_k({}^0x_k+2{}^1x_k)$ | $-(2{}^0x_k+{}^1x_k)$ | $+1$ |
7676

7777
Note that expression for $\alpha_i^{3,j}$ can be written even shorter by introducing a binary number $ij$, i.e. $00, 01, 10, 11 = 0, 1, 2, 3$:

include/cubic_spline.hpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -154,8 +154,8 @@ class CubicCell2D
154154
const T x02 = x0*x0;
155155
const T x12 = x1*x1;
156156
return {{{x12*(x1 - 3.0*x0), +6.0*x0*x1, -3.0*(x0 + x1), +2.0},
157-
{x02*(3.0*x1 - x0), -6.0*x0*x1, +3.0*(x0 + x1), -2.0},
158157
{-x0*x12, x1*(2.0*x0 + x1), -(x0 + 2.0*x1), +1.0},
158+
{x02*(3.0*x1 - x0), -6.0*x0*x1, +3.0*(x0 + x1), -2.0},
159159
{-x1*x02, x0*(x0 + 2.0*x1), -(2.0*x0 + x1), +1.0}}};
160160
}
161161

@@ -180,8 +180,8 @@ class CubicCell2D
180180
{
181181
std::size_t j1 = (j >> 0) & 1;
182182
std::size_t j2 = (j >> 1) & 1;
183-
std::size_t alpha_index1 = (j1 << 1) | i1;
184-
std::size_t alpha_index2 = (j2 << 1) | i2;
183+
std::size_t alpha_index1 = (i1 << 1) | j1;
184+
std::size_t alpha_index2 = (i2 << 1) | j2;
185185
double prod_h = (j1 ? h0 : 1.0)*(j2 ? h1 : 1.0);
186186
coeffs[k][l] += prod_h*F(i1,i2,j1,j2)*alphas[0][alpha_index1][k]*alphas[1][alpha_index2][l];
187187
}

0 commit comments

Comments
 (0)