projects
/
LbmBenchmarkKernelsPublic.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
add single precision, add aa-vec-sl-soa kernel, updated doc
[LbmBenchmarkKernelsPublic.git]
/
src
/
BenchKernelD3Q19ListAaRia.c
diff --git
a/src/BenchKernelD3Q19ListAaRia.c
b/src/BenchKernelD3Q19ListAaRia.c
index 87addcccb4457a161e7faf77f06d659bd7c9a75e..245c2a539eda2c9fedd439b55d0db619dd64babd 100644
(file)
--- a/
src/BenchKernelD3Q19ListAaRia.c
+++ b/
src/BenchKernelD3Q19ListAaRia.c
@@
-55,19
+55,19
@@
void FNAME(D3Q19ListAaRiaKernel)(LatticeDesc * ld, KernelData * kernelData, Case
// 1/12: removes third-order advection error (best advection);
// 1/ 6: removes fourth-order diffusion error (best diffusion);
// 3/16: exact location of bounce back for poiseuille flow
// 1/12: removes third-order advection error (best advection);
// 1/ 6: removes fourth-order diffusion error (best diffusion);
// 3/16: exact location of bounce back for poiseuille flow
- PdfT magicParam =
1.0 / 12.0
;
- PdfT omegaOdd =
1.0 / (0.5 + magicParam / (1.0 / omega - 0.5
));
+ PdfT magicParam =
F(1.0) / F(12.0)
;
+ PdfT omegaOdd =
F(1.0) / (F(0.5) + magicParam / (F(1.0) / omega - F(0.5)
));
- PdfT evenPart =
0.0
;
- PdfT oddPart =
0.0
;
- PdfT dir_indep_trm =
0.0
;
+ PdfT evenPart =
F(0.0)
;
+ PdfT oddPart =
F(0.0)
;
+ PdfT dir_indep_trm =
F(0.0)
;
- const PdfT w_0 =
1.0 / 3.0
;
- const PdfT w_1 =
1.0 / 18.0
;
- const PdfT w_2 =
1.0 / 36.0
;
+ const PdfT w_0 =
F(1.0) / F(3.0)
;
+ const PdfT w_1 =
F(1.0) / F(18.0)
;
+ const PdfT w_2 =
F(1.0) / F(36.0)
;
- const PdfT w_1_x3 = w_1 *
3.0; const PdfT w_1_nine_half = w_1 * 9.0 / 2.0; PdfT w_1_indep = 0.0
;
- const PdfT w_2_x3 = w_2 *
3.0; const PdfT w_2_nine_half = w_2 * 9.0 / 2.0; PdfT w_2_indep = 0.0
;
+ const PdfT w_1_x3 = w_1 *
F(3.0); const PdfT w_1_nine_half = w_1 * F(9.0) / F(2.0); PdfT w_1_indep = F(0.0)
;
+ const PdfT w_2_x3 = w_2 *
F(3.0); const PdfT w_2_nine_half = w_2 * F(9.0) / F(2.0); PdfT w_2_indep = F(0.0)
;
PdfT ui;
PdfT ui;
@@
-134,6
+134,11
@@
void FNAME(D3Q19ListAaRiaKernel)(LatticeDesc * ld, KernelData * kernelData, Case
pdf_T, pdf_TN, pdf_TE, pdf_TS, pdf_TW, \
pdf_B, pdf_BN, pdf_BE, pdf_BS, pdf_BW)
#endif
pdf_T, pdf_TN, pdf_TE, pdf_TS, pdf_TW, \
pdf_B, pdf_BN, pdf_BE, pdf_BS, pdf_BW)
#endif
+ #ifdef INTEL_OPT_DIRECTIVES
+ #pragma ivdep
+ #pragma vector always
+ #pragma simd
+ #endif
for (int index = 0; index < nFluid; ++index) {
#define I(index, dir) P_INDEX_3((nCells), (index), (dir))
for (int index = 0; index < nFluid; ++index) {
#define I(index, dir) P_INDEX_3((nCells), (index), (dir))
@@
-154,9
+159,9
@@
void FNAME(D3Q19ListAaRiaKernel)(LatticeDesc * ld, KernelData * kernelData, Case
int z = kdl->Coords[C_INDEX_Z(index)];
if (z == nZ - 4 && x > 3 && x < (nX - 4) && y > 3 && y < (nY - 4)) {
int z = kdl->Coords[C_INDEX_Z(index)];
if (z == nZ - 4 && x > 3 && x < (nX - 4) && y > 3 && y < (nY - 4)) {
- ux =
0.1 * 0.5
77;
- uy =
0.0
;
- uz =
0.0
;
+ ux =
F(0.1) * F(0.5)
77;
+ uy =
F(0.0)
;
+ uz =
F(0.0)
;
} else {
#endif
ux = pdf_E + pdf_NE + pdf_SE + pdf_TE + pdf_BE -
} else {
#endif
ux = pdf_E + pdf_NE + pdf_SE + pdf_TE + pdf_BE -
@@
-175,7
+180,7
@@
void FNAME(D3Q19ListAaRiaKernel)(LatticeDesc * ld, KernelData * kernelData, Case
pdf_T + pdf_TN + pdf_TE + pdf_TS + pdf_TW +
pdf_B + pdf_BN + pdf_BE + pdf_BS + pdf_BW;
pdf_T + pdf_TN + pdf_TE + pdf_TS + pdf_TW +
pdf_B + pdf_BN + pdf_BE + pdf_BS + pdf_BW;
- dir_indep_trm = dens - (ux * ux + uy * uy + uz * uz)*
3.0/2.0
;
+ dir_indep_trm = dens - (ux * ux + uy * uy + uz * uz)*
F(3.0)/F(2.0)
;
// direction: w_0
src[I(index, D3Q19_C) ] = pdf_C - omegaEven*(pdf_C - w_0*dir_indep_trm);
// direction: w_0
src[I(index, D3Q19_C) ] = pdf_C - omegaEven*(pdf_C - w_0*dir_indep_trm);
@@
-184,20
+189,20
@@
void FNAME(D3Q19ListAaRiaKernel)(LatticeDesc * ld, KernelData * kernelData, Case
w_1_indep = w_1*dir_indep_trm;
ui = uy;
w_1_indep = w_1*dir_indep_trm;
ui = uy;
- evenPart = omegaEven*(
0.5
*(pdf_N + pdf_S) - ui*ui*w_1_nine_half - w_1_indep );
- oddPart = omegaOdd*(
0.5
*(pdf_N - pdf_S) - ui*w_1_x3 );
+ evenPart = omegaEven*(
F(0.5)
*(pdf_N + pdf_S) - ui*ui*w_1_nine_half - w_1_indep );
+ oddPart = omegaOdd*(
F(0.5)
*(pdf_N - pdf_S) - ui*w_1_x3 );
src[I(index, D3Q19_S)] = pdf_N - evenPart - oddPart;
src[I(index, D3Q19_N)] = pdf_S - evenPart + oddPart;
ui = ux;
src[I(index, D3Q19_S)] = pdf_N - evenPart - oddPart;
src[I(index, D3Q19_N)] = pdf_S - evenPart + oddPart;
ui = ux;
- evenPart = omegaEven*(
0.5
*(pdf_E + pdf_W) - ui*ui*w_1_nine_half - w_1_indep );
- oddPart = omegaOdd*(
0.5
*(pdf_E - pdf_W) - ui*w_1_x3 );
+ evenPart = omegaEven*(
F(0.5)
*(pdf_E + pdf_W) - ui*ui*w_1_nine_half - w_1_indep );
+ oddPart = omegaOdd*(
F(0.5)
*(pdf_E - pdf_W) - ui*w_1_x3 );
src[I(index, D3Q19_W)] = pdf_E - evenPart - oddPart;
src[I(index, D3Q19_E)] = pdf_W - evenPart + oddPart;
ui = uz;
src[I(index, D3Q19_W)] = pdf_E - evenPart - oddPart;
src[I(index, D3Q19_E)] = pdf_W - evenPart + oddPart;
ui = uz;
- evenPart = omegaEven*(
0.5
*(pdf_T + pdf_B) - ui*ui*w_1_nine_half - w_1_indep );
- oddPart = omegaOdd*(
0.5
*(pdf_T - pdf_B) - ui*w_1_x3 );
+ evenPart = omegaEven*(
F(0.5)
*(pdf_T + pdf_B) - ui*ui*w_1_nine_half - w_1_indep );
+ oddPart = omegaOdd*(
F(0.5)
*(pdf_T - pdf_B) - ui*w_1_x3 );
src[I(index, D3Q19_B)] = pdf_T - evenPart - oddPart;
src[I(index, D3Q19_T)] = pdf_B - evenPart + oddPart;
src[I(index, D3Q19_B)] = pdf_T - evenPart - oddPart;
src[I(index, D3Q19_T)] = pdf_B - evenPart + oddPart;
@@
-205,38
+210,38
@@
void FNAME(D3Q19ListAaRiaKernel)(LatticeDesc * ld, KernelData * kernelData, Case
w_2_indep = w_2*dir_indep_trm;
ui = -ux + uy;
w_2_indep = w_2*dir_indep_trm;
ui = -ux + uy;
- evenPart = omegaEven*(
0.5
*(pdf_NW + pdf_SE) - ui*ui*w_2_nine_half - w_2_indep );
- oddPart = omegaOdd*(
0.5
*(pdf_NW - pdf_SE) - ui*w_2_x3 );
+ evenPart = omegaEven*(
F(0.5)
*(pdf_NW + pdf_SE) - ui*ui*w_2_nine_half - w_2_indep );
+ oddPart = omegaOdd*(
F(0.5)
*(pdf_NW - pdf_SE) - ui*w_2_x3 );
src[I(index, D3Q19_SE)] = pdf_NW - evenPart - oddPart;
src[I(index, D3Q19_NW)] = pdf_SE - evenPart + oddPart;
ui = ux + uy;
src[I(index, D3Q19_SE)] = pdf_NW - evenPart - oddPart;
src[I(index, D3Q19_NW)] = pdf_SE - evenPart + oddPart;
ui = ux + uy;
- evenPart = omegaEven*(
0.5
*(pdf_NE + pdf_SW) - ui*ui*w_2_nine_half - w_2_indep );
- oddPart = omegaOdd*(
0.5
*(pdf_NE - pdf_SW) - ui*w_2_x3 );
+ evenPart = omegaEven*(
F(0.5)
*(pdf_NE + pdf_SW) - ui*ui*w_2_nine_half - w_2_indep );
+ oddPart = omegaOdd*(
F(0.5)
*(pdf_NE - pdf_SW) - ui*w_2_x3 );
src[I(index, D3Q19_SW)] = pdf_NE - evenPart - oddPart;
src[I(index, D3Q19_NE)] = pdf_SW - evenPart + oddPart;
ui = -ux + uz;
src[I(index, D3Q19_SW)] = pdf_NE - evenPart - oddPart;
src[I(index, D3Q19_NE)] = pdf_SW - evenPart + oddPart;
ui = -ux + uz;
- evenPart = omegaEven*(
0.5
*(pdf_TW + pdf_BE) - ui*ui*w_2_nine_half - w_2_indep );
- oddPart = omegaOdd*(
0.5
*(pdf_TW - pdf_BE) - ui*w_2_x3 );
+ evenPart = omegaEven*(
F(0.5)
*(pdf_TW + pdf_BE) - ui*ui*w_2_nine_half - w_2_indep );
+ oddPart = omegaOdd*(
F(0.5)
*(pdf_TW - pdf_BE) - ui*w_2_x3 );
src[I(index, D3Q19_BE)] = pdf_TW - evenPart - oddPart;
src[I(index, D3Q19_TW)] = pdf_BE - evenPart + oddPart;
ui = ux + uz;
src[I(index, D3Q19_BE)] = pdf_TW - evenPart - oddPart;
src[I(index, D3Q19_TW)] = pdf_BE - evenPart + oddPart;
ui = ux + uz;
- evenPart = omegaEven*(
0.5
*(pdf_TE + pdf_BW) - ui*ui*w_2_nine_half - w_2_indep );
- oddPart = omegaOdd*(
0.5
*(pdf_TE - pdf_BW) - ui*w_2_x3 );
+ evenPart = omegaEven*(
F(0.5)
*(pdf_TE + pdf_BW) - ui*ui*w_2_nine_half - w_2_indep );
+ oddPart = omegaOdd*(
F(0.5)
*(pdf_TE - pdf_BW) - ui*w_2_x3 );
src[I(index, D3Q19_BW)] = pdf_TE - evenPart - oddPart;
src[I(index, D3Q19_TE)] = pdf_BW - evenPart + oddPart;
ui = -uy + uz;
src[I(index, D3Q19_BW)] = pdf_TE - evenPart - oddPart;
src[I(index, D3Q19_TE)] = pdf_BW - evenPart + oddPart;
ui = -uy + uz;
- evenPart = omegaEven*(
0.5
*(pdf_TS + pdf_BN) - ui*ui*w_2_nine_half - w_2_indep );
- oddPart = omegaOdd*(
0.5
*(pdf_TS - pdf_BN) - ui*w_2_x3 );
+ evenPart = omegaEven*(
F(0.5)
*(pdf_TS + pdf_BN) - ui*ui*w_2_nine_half - w_2_indep );
+ oddPart = omegaOdd*(
F(0.5)
*(pdf_TS - pdf_BN) - ui*w_2_x3 );
src[I(index, D3Q19_BN)] = pdf_TS - evenPart - oddPart;
src[I(index, D3Q19_TS)] = pdf_BN - evenPart + oddPart;
ui = uy + uz;
src[I(index, D3Q19_BN)] = pdf_TS - evenPart - oddPart;
src[I(index, D3Q19_TS)] = pdf_BN - evenPart + oddPart;
ui = uy + uz;
- evenPart = omegaEven*(
0.5
*(pdf_TN + pdf_BS) - ui*ui*w_2_nine_half - w_2_indep );
- oddPart = omegaOdd*(
0.5
*(pdf_TN - pdf_BS) - ui*w_2_x3 );
+ evenPart = omegaEven*(
F(0.5)
*(pdf_TN + pdf_BS) - ui*ui*w_2_nine_half - w_2_indep );
+ oddPart = omegaOdd*(
F(0.5)
*(pdf_TN - pdf_BS) - ui*w_2_x3 );
src[I(index, D3Q19_BS)] = pdf_TN - evenPart - oddPart;
src[I(index, D3Q19_TN)] = pdf_BS - evenPart + oddPart;
src[I(index, D3Q19_BS)] = pdf_TN - evenPart - oddPart;
src[I(index, D3Q19_TN)] = pdf_BS - evenPart + oddPart;
@@
-290,6
+295,7
@@
void FNAME(D3Q19ListAaRiaKernel)(LatticeDesc * ld, KernelData * kernelData, Case
int indexStart = threadIndices[threadId];
int indexStop = threadIndices[threadId] + nFluidThread;
int indexStart = threadIndices[threadId];
int indexStop = threadIndices[threadId] + nFluidThread;
+ // Because of runlength coding iterations are not independent.
for (int index = indexStart; index < indexStop; ++index) {
#define I(index, dir) P_INDEX_3((nCells), (index), (dir))
for (int index = indexStart; index < indexStop; ++index) {
#define I(index, dir) P_INDEX_3((nCells), (index), (dir))
@@
-346,9
+352,9
@@
void FNAME(D3Q19ListAaRiaKernel)(LatticeDesc * ld, KernelData * kernelData, Case
int z = kdl->Coords[C_INDEX_Z(index)];
if (z == nZ - 4 && x > 3 && x < (nX - 4) && y > 3 && y < (nY - 4)) {
int z = kdl->Coords[C_INDEX_Z(index)];
if (z == nZ - 4 && x > 3 && x < (nX - 4) && y > 3 && y < (nY - 4)) {
- ux =
0.1 * 0.5
77;
- uy =
0.0
;
- uz =
0.0
;
+ ux =
F(0.1) * F(0.5)
77;
+ uy =
F(0.0)
;
+ uz =
F(0.0)
;
} else {
#endif
ux = pdf_E + pdf_NE + pdf_SE + pdf_TE + pdf_BE -
} else {
#endif
ux = pdf_E + pdf_NE + pdf_SE + pdf_TE + pdf_BE -
@@
-367,7
+373,7
@@
void FNAME(D3Q19ListAaRiaKernel)(LatticeDesc * ld, KernelData * kernelData, Case
pdf_T + pdf_TN + pdf_TE + pdf_TS + pdf_TW +
pdf_B + pdf_BN + pdf_BE + pdf_BS + pdf_BW;
pdf_T + pdf_TN + pdf_TE + pdf_TS + pdf_TW +
pdf_B + pdf_BN + pdf_BE + pdf_BS + pdf_BW;
- dir_indep_trm = dens - (ux * ux + uy * uy + uz * uz)*
3.0/2.0
;
+ dir_indep_trm = dens - (ux * ux + uy * uy + uz * uz)*
F(3.0)/F(2.0)
;
adjListIndex = index * N_D3Q19_IDX;
adjListIndex = index * N_D3Q19_IDX;
@@
-378,20
+384,20
@@
void FNAME(D3Q19ListAaRiaKernel)(LatticeDesc * ld, KernelData * kernelData, Case
w_1_indep = w_1*dir_indep_trm;
ui = uy;
w_1_indep = w_1*dir_indep_trm;
ui = uy;
- evenPart = omegaEven*(
0.5
*(pdf_N + pdf_S) - ui*ui*w_1_nine_half - w_1_indep );
- oddPart = omegaOdd*(
0.5
*(pdf_N - pdf_S) - ui*w_1_x3 );
+ evenPart = omegaEven*(
F(0.5)
*(pdf_N + pdf_S) - ui*ui*w_1_nine_half - w_1_indep );
+ oddPart = omegaOdd*(
F(0.5)
*(pdf_N - pdf_S) - ui*w_1_x3 );
*ppdf_S = pdf_N - evenPart - oddPart;
*ppdf_N = pdf_S - evenPart + oddPart;
ui = ux;
*ppdf_S = pdf_N - evenPart - oddPart;
*ppdf_N = pdf_S - evenPart + oddPart;
ui = ux;
- evenPart = omegaEven*(
0.5
*(pdf_E + pdf_W) - ui*ui*w_1_nine_half - w_1_indep );
- oddPart = omegaOdd*(
0.5
*(pdf_E - pdf_W) - ui*w_1_x3 );
+ evenPart = omegaEven*(
F(0.5)
*(pdf_E + pdf_W) - ui*ui*w_1_nine_half - w_1_indep );
+ oddPart = omegaOdd*(
F(0.5)
*(pdf_E - pdf_W) - ui*w_1_x3 );
*ppdf_W = pdf_E - evenPart - oddPart;
*ppdf_E = pdf_W - evenPart + oddPart;
ui = uz;
*ppdf_W = pdf_E - evenPart - oddPart;
*ppdf_E = pdf_W - evenPart + oddPart;
ui = uz;
- evenPart = omegaEven*(
0.5
*(pdf_T + pdf_B) - ui*ui*w_1_nine_half - w_1_indep );
- oddPart = omegaOdd*(
0.5
*(pdf_T - pdf_B) - ui*w_1_x3 );
+ evenPart = omegaEven*(
F(0.5)
*(pdf_T + pdf_B) - ui*ui*w_1_nine_half - w_1_indep );
+ oddPart = omegaOdd*(
F(0.5)
*(pdf_T - pdf_B) - ui*w_1_x3 );
*ppdf_B = pdf_T - evenPart - oddPart;
*ppdf_T = pdf_B - evenPart + oddPart;
*ppdf_B = pdf_T - evenPart - oddPart;
*ppdf_T = pdf_B - evenPart + oddPart;
@@
-399,38
+405,38
@@
void FNAME(D3Q19ListAaRiaKernel)(LatticeDesc * ld, KernelData * kernelData, Case
w_2_indep = w_2*dir_indep_trm;
ui = -ux + uy;
w_2_indep = w_2*dir_indep_trm;
ui = -ux + uy;
- evenPart = omegaEven*(
0.5
*(pdf_NW + pdf_SE) - ui*ui*w_2_nine_half - w_2_indep );
- oddPart = omegaOdd*(
0.5
*(pdf_NW - pdf_SE) - ui*w_2_x3 );
+ evenPart = omegaEven*(
F(0.5)
*(pdf_NW + pdf_SE) - ui*ui*w_2_nine_half - w_2_indep );
+ oddPart = omegaOdd*(
F(0.5)
*(pdf_NW - pdf_SE) - ui*w_2_x3 );
*ppdf_SE = pdf_NW - evenPart - oddPart;
*ppdf_NW = pdf_SE - evenPart + oddPart;
ui = ux + uy;
*ppdf_SE = pdf_NW - evenPart - oddPart;
*ppdf_NW = pdf_SE - evenPart + oddPart;
ui = ux + uy;
- evenPart = omegaEven*(
0.5
*(pdf_NE + pdf_SW) - ui*ui*w_2_nine_half - w_2_indep );
- oddPart = omegaOdd*(
0.5
*(pdf_NE - pdf_SW) - ui*w_2_x3 );
+ evenPart = omegaEven*(
F(0.5)
*(pdf_NE + pdf_SW) - ui*ui*w_2_nine_half - w_2_indep );
+ oddPart = omegaOdd*(
F(0.5)
*(pdf_NE - pdf_SW) - ui*w_2_x3 );
*ppdf_SW = pdf_NE - evenPart - oddPart;
*ppdf_NE = pdf_SW - evenPart + oddPart;
ui = -ux + uz;
*ppdf_SW = pdf_NE - evenPart - oddPart;
*ppdf_NE = pdf_SW - evenPart + oddPart;
ui = -ux + uz;
- evenPart = omegaEven*(
0.5
*(pdf_TW + pdf_BE) - ui*ui*w_2_nine_half - w_2_indep );
- oddPart = omegaOdd*(
0.5
*(pdf_TW - pdf_BE) - ui*w_2_x3 );
+ evenPart = omegaEven*(
F(0.5)
*(pdf_TW + pdf_BE) - ui*ui*w_2_nine_half - w_2_indep );
+ oddPart = omegaOdd*(
F(0.5)
*(pdf_TW - pdf_BE) - ui*w_2_x3 );
*ppdf_BE = pdf_TW - evenPart - oddPart;
*ppdf_TW = pdf_BE - evenPart + oddPart;
ui = ux + uz;
*ppdf_BE = pdf_TW - evenPart - oddPart;
*ppdf_TW = pdf_BE - evenPart + oddPart;
ui = ux + uz;
- evenPart = omegaEven*(
0.5
*(pdf_TE + pdf_BW) - ui*ui*w_2_nine_half - w_2_indep );
- oddPart = omegaOdd*(
0.5
*(pdf_TE - pdf_BW) - ui*w_2_x3 );
+ evenPart = omegaEven*(
F(0.5)
*(pdf_TE + pdf_BW) - ui*ui*w_2_nine_half - w_2_indep );
+ oddPart = omegaOdd*(
F(0.5)
*(pdf_TE - pdf_BW) - ui*w_2_x3 );
*ppdf_BW = pdf_TE - evenPart - oddPart;
*ppdf_TE = pdf_BW - evenPart + oddPart;
ui = -uy + uz;
*ppdf_BW = pdf_TE - evenPart - oddPart;
*ppdf_TE = pdf_BW - evenPart + oddPart;
ui = -uy + uz;
- evenPart = omegaEven*(
0.5
*(pdf_TS + pdf_BN) - ui*ui*w_2_nine_half - w_2_indep );
- oddPart = omegaOdd*(
0.5
*(pdf_TS - pdf_BN) - ui*w_2_x3 );
+ evenPart = omegaEven*(
F(0.5)
*(pdf_TS + pdf_BN) - ui*ui*w_2_nine_half - w_2_indep );
+ oddPart = omegaOdd*(
F(0.5)
*(pdf_TS - pdf_BN) - ui*w_2_x3 );
*ppdf_BN = pdf_TS - evenPart - oddPart;
*ppdf_TS = pdf_BN - evenPart + oddPart;
ui = uy + uz;
*ppdf_BN = pdf_TS - evenPart - oddPart;
*ppdf_TS = pdf_BN - evenPart + oddPart;
ui = uy + uz;
- evenPart = omegaEven*(
0.5
*(pdf_TN + pdf_BS) - ui*ui*w_2_nine_half - w_2_indep );
- oddPart = omegaOdd*(
0.5
*(pdf_TN - pdf_BS) - ui*w_2_x3 );
+ evenPart = omegaEven*(
F(0.5)
*(pdf_TN + pdf_BS) - ui*ui*w_2_nine_half - w_2_indep );
+ oddPart = omegaOdd*(
F(0.5)
*(pdf_TN - pdf_BS) - ui*w_2_x3 );
*ppdf_BS = pdf_TN - evenPart - oddPart;
*ppdf_TN = pdf_BS - evenPart + oddPart;
*ppdf_BS = pdf_TN - evenPart - oddPart;
*ppdf_TN = pdf_BS - evenPart + oddPart;
This page took
0.063973 seconds
and
5
git commands to generate.