📄 dilog.java
字号:
Prod[0] = Prod0;
Prod[1] = Prod1;
Prod[2] = Prod2;
Prod[3] = Prod3;
Prod[4] = Prod4;
Prod[5] = Prod5;
Prod[6] = Prod6;
Prod[7] = Prod7;
break;
case 9:
Prod0 = Prod1 = Prod2 = Prod3 = Prod4 = Prod5 = Prod6 = Prod7 =
Prod8 = 0;
TestNbr2 = TestNbr[2];
TestNbr3 = TestNbr[3];
TestNbr4 = TestNbr[4];
TestNbr5 = TestNbr[5];
TestNbr6 = TestNbr[6];
TestNbr7 = TestNbr[7];
TestNbr8 = TestNbr[8];
Nbr2_0 = Nbr2[0];
Nbr2_1 = Nbr2[1];
Nbr2_2 = Nbr2[2];
Nbr2_3 = Nbr2[3];
Nbr2_4 = Nbr2[4];
Nbr2_5 = Nbr2[5];
Nbr2_6 = Nbr2[6];
Nbr2_7 = Nbr2[7];
Nbr2_8 = Nbr2[8];
i = 0;
do {
Nbr = Nbr1[i];
Pr = Nbr*Nbr2_0 + Prod0;
ProdB0 = Pr & DosALa32_1;
Pr = (Pr >>> 32) + Nbr*Nbr2_1 + Prod1;
Prod0 = Pr & DosALa32_1;
Pr = (Pr >>> 32) + Nbr*Nbr2_2 + Prod2;
Prod1 = Pr & DosALa32_1;
Pr = (Pr >>> 32) + Nbr*Nbr2_3 + Prod3;
Prod2 = Pr & DosALa32_1;
Pr = (Pr >>> 32) + Nbr*Nbr2_4 + Prod4;
Prod3 = Pr & DosALa32_1;
Pr = (Pr >>> 32) + Nbr*Nbr2_5 + Prod5;
Prod4 = Pr & DosALa32_1;
Pr = (Pr >>> 32) + Nbr*Nbr2_6 + Prod6;
Prod5 = Pr & DosALa32_1;
Pr = (Pr >>> 32) + Nbr*Nbr2_7 + Prod7;
Prod6 = Pr & DosALa32_1;
Pr = (Pr >>> 32) + Nbr*Nbr2_8 + Prod8;
Prod7 = Pr & DosALa32_1;
Prod8 = (Pr >>> 32);
Nbr = (ProdB0 * MontgomeryMultN) & DosALa32_1;
Pr = ((Nbr*TestNbr0 + ProdB0) >>> 32) + Nbr*TestNbr1 + Prod0;
Prod0 = Pr & DosALa32_1;
Pr = (Pr >>> 32) + Nbr*TestNbr2 + Prod1;
Prod1 = Pr & DosALa32_1;
Pr = (Pr >>> 32) + Nbr*TestNbr3 + Prod2;
Prod2 = Pr & DosALa32_1;
Pr = (Pr >>> 32) + Nbr*TestNbr4 + Prod3;
Prod3 = Pr & DosALa32_1;
Pr = (Pr >>> 32) + Nbr*TestNbr5 + Prod4;
Prod4 = Pr & DosALa32_1;
Pr = (Pr >>> 32) + Nbr*TestNbr6 + Prod5;
Prod5 = Pr & DosALa32_1;
Pr = (Pr >>> 32) + Nbr*TestNbr7 + Prod6;
Prod6 = Pr & DosALa32_1;
Pr = (Pr >>> 32) + Nbr*TestNbr8 + Prod7;
Prod7 = Pr & DosALa32_1;
Prod8 += (Pr >>> 32);
i++;
} while (i<9);
if (Prod8 > TestNbr8 || Prod8 == TestNbr8 &&
(Prod7 > TestNbr7 || Prod7 == TestNbr7 &&
(Prod6 > TestNbr6 || Prod6 == TestNbr6 &&
(Prod5 > TestNbr5 || Prod5 == TestNbr5 &&
(Prod4 > TestNbr4 || Prod4 == TestNbr4 &&
(Prod3 > TestNbr3 || Prod3 == TestNbr3 &&
(Prod2 > TestNbr2 || Prod2 == TestNbr2 &&
(Prod1 > TestNbr1 || Prod1 == TestNbr1 &&
(Prod0 >= TestNbr0))))))))) {
Pr = Prod0 - TestNbr0;
Prod0 = Pr & DosALa32_1;
Pr = (Pr>=0?0:-1) + Prod1 - TestNbr1;
Prod1 = Pr & DosALa32_1;
Pr = (Pr>=0?0:-1) + Prod2 - TestNbr2;
Prod2 = Pr & DosALa32_1;
Pr = (Pr>=0?0:-1) + Prod3 - TestNbr3;
Prod3 = Pr & DosALa32_1;
Pr = (Pr>=0?0:-1) + Prod4 - TestNbr4;
Prod4 = Pr & DosALa32_1;
Pr = (Pr>=0?0:-1) + Prod5 - TestNbr5;
Prod5 = Pr & DosALa32_1;
Pr = (Pr>=0?0:-1) + Prod6 - TestNbr6;
Prod6 = Pr & DosALa32_1;
Pr = (Pr>=0?0:-1) + Prod7 - TestNbr7;
Prod7 = Pr & DosALa32_1;
Pr = (Pr>=0?0:-1) + Prod8 - TestNbr8;
Prod8 = Pr & DosALa32_1;
}
Prod[0] = Prod0;
Prod[1] = Prod1;
Prod[2] = Prod2;
Prod[3] = Prod3;
Prod[4] = Prod4;
Prod[5] = Prod5;
Prod[6] = Prod6;
Prod[7] = Prod7;
Prod[8] = Prod8;
break;
case 10:
Prod0 = Prod1 = Prod2 = Prod3 = Prod4 = Prod5 = Prod6 = Prod7 =
Prod8 = Prod9 = 0;
TestNbr2 = TestNbr[2];
TestNbr3 = TestNbr[3];
TestNbr4 = TestNbr[4];
TestNbr5 = TestNbr[5];
TestNbr6 = TestNbr[6];
TestNbr7 = TestNbr[7];
TestNbr8 = TestNbr[8];
TestNbr9 = TestNbr[9];
Nbr2_0 = Nbr2[0];
Nbr2_1 = Nbr2[1];
Nbr2_2 = Nbr2[2];
Nbr2_3 = Nbr2[3];
Nbr2_4 = Nbr2[4];
Nbr2_5 = Nbr2[5];
Nbr2_6 = Nbr2[6];
Nbr2_7 = Nbr2[7];
Nbr2_8 = Nbr2[8];
Nbr2_9 = Nbr2[9];
i = 0;
do {
Nbr = Nbr1[i];
Pr = Nbr*Nbr2_0 + Prod0;
ProdB0 = Pr & DosALa32_1;
Pr = (Pr >>> 32) + Nbr*Nbr2_1 + Prod1;
Prod0 = Pr & DosALa32_1;
Pr = (Pr >>> 32) + Nbr*Nbr2_2 + Prod2;
Prod1 = Pr & DosALa32_1;
Pr = (Pr >>> 32) + Nbr*Nbr2_3 + Prod3;
Prod2 = Pr & DosALa32_1;
Pr = (Pr >>> 32) + Nbr*Nbr2_4 + Prod4;
Prod3 = Pr & DosALa32_1;
Pr = (Pr >>> 32) + Nbr*Nbr2_5 + Prod5;
Prod4 = Pr & DosALa32_1;
Pr = (Pr >>> 32) + Nbr*Nbr2_6 + Prod6;
Prod5 = Pr & DosALa32_1;
Pr = (Pr >>> 32) + Nbr*Nbr2_7 + Prod7;
Prod6 = Pr & DosALa32_1;
Pr = (Pr >>> 32) + Nbr*Nbr2_8 + Prod8;
Prod7 = Pr & DosALa32_1;
Pr = (Pr >>> 32) + Nbr*Nbr2_9 + Prod9;
Prod8 = Pr & DosALa32_1;
Prod9 = (Pr >>> 32);
Nbr = (ProdB0 * MontgomeryMultN) & DosALa32_1;
Pr = ((Nbr*TestNbr0 + ProdB0) >>> 32) + Nbr*TestNbr1 + Prod0;
Prod0 = Pr & DosALa32_1;
Pr = (Pr >>> 32) + Nbr*TestNbr2 + Prod1;
Prod1 = Pr & DosALa32_1;
Pr = (Pr >>> 32) + Nbr*TestNbr3 + Prod2;
Prod2 = Pr & DosALa32_1;
Pr = (Pr >>> 32) + Nbr*TestNbr4 + Prod3;
Prod3 = Pr & DosALa32_1;
Pr = (Pr >>> 32) + Nbr*TestNbr5 + Prod4;
Prod4 = Pr & DosALa32_1;
Pr = (Pr >>> 32) + Nbr*TestNbr6 + Prod5;
Prod5 = Pr & DosALa32_1;
Pr = (Pr >>> 32) + Nbr*TestNbr7 + Prod6;
Prod6 = Pr & DosALa32_1;
Pr = (Pr >>> 32) + Nbr*TestNbr8 + Prod7;
Prod7 = Pr & DosALa32_1;
Pr = (Pr >>> 32) + Nbr*TestNbr9 + Prod8;
Prod8 = Pr & DosALa32_1;
Prod9 += (Pr >>> 32);
i++;
} while (i<10);
if (Prod9 > TestNbr9 || Prod9 == TestNbr9 &&
(Prod8 > TestNbr8 || Prod8 == TestNbr8 &&
(Prod7 > TestNbr7 || Prod7 == TestNbr7 &&
(Prod6 > TestNbr6 || Prod6 == TestNbr6 &&
(Prod5 > TestNbr5 || Prod5 == TestNbr5 &&
(Prod4 > TestNbr4 || Prod4 == TestNbr4 &&
(Prod3 > TestNbr3 || Prod3 == TestNbr3 &&
(Prod2 > TestNbr2 || Prod2 == TestNbr2 &&
(Prod1 > TestNbr1 || Prod1 == TestNbr1 &&
(Prod0 >= TestNbr0)))))))))) {
Pr = Prod0 - TestNbr0;
Prod0 = Pr & DosALa32_1;
Pr = (Pr>=0?0:-1) + Prod1 - TestNbr1;
Prod1 = Pr & DosALa32_1;
Pr = (Pr>=0?0:-1) + Prod2 - TestNbr2;
Prod2 = Pr & DosALa32_1;
Pr = (Pr>=0?0:-1) + Prod3 - TestNbr3;
Prod3 = Pr & DosALa32_1;
Pr = (Pr>=0?0:-1) + Prod4 - TestNbr4;
Prod4 = Pr & DosALa32_1;
Pr = (Pr>=0?0:-1) + Prod5 - TestNbr5;
Prod5 = Pr & DosALa32_1;
Pr = (Pr>=0?0:-1) + Prod6 - TestNbr6;
Prod6 = Pr & DosALa32_1;
Pr = (Pr>=0?0:-1) + Prod7 - TestNbr7;
Prod7 = Pr & DosALa32_1;
Pr = (Pr>=0?0:-1) + Prod8 - TestNbr8;
Prod8 = Pr & DosALa32_1;
Pr = (Pr>=0?0:-1) + Prod9 - TestNbr9;
Prod9 = Pr & DosALa32_1;
}
Prod[0] = Prod0;
Prod[1] = Prod1;
Prod[2] = Prod2;
Prod[3] = Prod3;
Prod[4] = Prod4;
Prod[5] = Prod5;
Prod[6] = Prod6;
Prod[7] = Prod7;
Prod[8] = Prod8;
Prod[9] = Prod9;
break;
case 11:
Prod0 = Prod1 = Prod2 = Prod3 = Prod4 = Prod5 = Prod6 = Prod7 =
Prod8 = Prod9 = Prod10 = 0;
TestNbr2 = TestNbr[2];
TestNbr3 = TestNbr[3];
TestNbr4 = TestNbr[4];
TestNbr5 = TestNbr[5];
TestNbr6 = TestNbr[6];
TestNbr7 = TestNbr[7];
TestNbr8 = TestNbr[8];
TestNbr9 = TestNbr[9];
TestNbr10 = TestNbr[10];
Nbr2_0 = Nbr2[0];
Nbr2_1 = Nbr2[1];
Nbr2_2 = Nbr2[2];
Nbr2_3 = Nbr2[3];
Nbr2_4 = Nbr2[4];
Nbr2_5 = Nbr2[5];
Nbr2_6 = Nbr2[6];
Nbr2_7 = Nbr2[7];
Nbr2_8 = Nbr2[8];
Nbr2_9 = Nbr2[9];
Nbr2_10 = Nbr2[10];
i = 0;
do {
Nbr = Nbr1[i];
Pr = Nbr*Nbr2_0 + Prod0;
ProdB0 = Pr & DosALa32_1;
Pr = (Pr >>> 32) + Nbr*Nbr2_1 + Prod1;
Prod0 = Pr & DosALa32_1;
Pr = (Pr >>> 32) + Nbr*Nbr2_2 + Prod2;
Prod1 = Pr & DosALa32_1;
Pr = (Pr >>> 32) + Nbr*Nbr2_3 + Prod3;
Prod2 = Pr & DosALa32_1;
Pr = (Pr >>> 32) + Nbr*Nbr2_4 + Prod4;
Prod3 = Pr & DosALa32_1;
Pr = (Pr >>> 32) + Nbr*Nbr2_5 + Prod5;
Prod4 = Pr & DosALa32_1;
Pr = (Pr >>> 32) + Nbr*Nbr2_6 + Prod6;
Prod5 = Pr & DosALa32_1;
Pr = (Pr >>> 32) + Nbr*Nbr2_7 + Prod7;
Prod6 = Pr & DosALa32_1;
Pr = (Pr >>> 32) + Nbr*Nbr2_8 + Prod8;
Prod7 = Pr & DosALa32_1;
Pr = (Pr >>> 32) + Nbr*Nbr2_9 + Prod9;
Prod8 = Pr & DosALa32_1;
Pr = (Pr >>> 32) + Nbr*Nbr2_10 + Prod10;
Prod9 = Pr & DosALa32_1;
Prod10 = (Pr >>> 32);
Nbr = (ProdB0 * MontgomeryMultN) & DosALa32_1;
Pr = ((Nbr*TestNbr0 + ProdB0) >>> 32) + Nbr*TestNbr1 + Prod0;
Prod0 = Pr & DosALa32_1;
Pr = (Pr >>> 32) + Nbr*TestNbr2 + Prod1;
Prod1 = Pr & DosALa32_1;
Pr = (Pr >>> 32) + Nbr*TestNbr3 + Prod2;
Prod2 = Pr & DosALa32_1;
Pr = (Pr >>> 32) + Nbr*TestNbr4 + Prod3;
Prod3 = Pr & DosALa32_1;
Pr = (Pr >>> 32) + Nbr*TestNbr5 + Prod4;
Prod4 = Pr & DosALa32_1;
Pr = (Pr >>> 32) + Nbr*TestNbr6 + Prod5;
Prod5 = Pr & DosALa32_1;
Pr = (Pr >>> 32) + Nbr*TestNbr7 + Prod6;
Prod6 = Pr & DosALa32_1;
Pr = (Pr >>> 32) + Nbr*TestNbr8 + Prod7;
Prod7 = Pr & DosALa32_1;
Pr = (Pr >>> 32) + Nbr*TestNbr9 + Prod8;
Prod8 = Pr & DosALa32_1;
Pr = (Pr >>> 32) + Nbr*TestNbr10 + Prod9;
Prod9 = Pr & DosALa32_1;
Prod10 += (Pr >>> 32);
i++;
} while (i<11);
if (Prod10 > TestNbr10 || Prod10 == TestNbr10 &&
(Prod9 > TestNbr9 || Prod9 == TestNbr9 &&
(Prod8 > TestNbr8 || Prod8 == TestNbr8 &&
(Prod7 > TestNbr7 || Prod7 == TestNbr7 &&
(Prod6 > TestNbr6 || Prod6 == TestNbr6 &&
(Prod5 > TestNbr5 || Prod5 == TestNbr5 &&
(Prod4 > TestNbr4 || Prod4 == TestNbr4 &&
(Prod3 > TestNbr3 || Prod3 == TestNbr3 &&
(Prod2 > TestNbr2 || Prod2 == TestNbr2 &&
(Prod1 > TestNbr1 || Prod1 == TestNbr1 &&
(Prod0 >= TestNbr0))))))))))) {
Pr = Prod0 - TestNbr0;
Prod0 = Pr & DosALa32_1;
Pr = (Pr>=0?0:-1) + Prod1 - TestNbr1;
Prod1 = Pr & DosALa32_1;
Pr = (Pr>=0?0:-1) + Prod2 - TestNbr2;
Prod2 = Pr & DosALa32_1;
Pr = (Pr>=0?0:-1) + Prod3 - TestNbr3;
Prod3 = Pr & DosALa32_1;
Pr = (Pr>=0?0:-1) + Prod4 - TestNbr4;
Prod4 = Pr & DosALa32_1;
Pr = (Pr>=0?0:-1) + Prod5 - TestNbr5;
Prod5 = Pr & DosALa32_1;
Pr = (Pr>=0?0:-1) + Prod6 - TestNbr6;
Prod6 = Pr & DosALa32_1;
Pr = (Pr>=0?0:-1) + Prod7 - TestNbr7;
Prod7 = Pr & DosALa32_1;
Pr = (Pr>=0?0:-1) + Prod8 - TestNbr8;
Prod8 = Pr & DosALa32_1;
Pr = (Pr>=0?0:-1) + Prod9 - TestNbr9;
Prod9 = Pr & DosALa32_1;
Pr = (Pr>=0?0:-1) + Prod10 - TestNbr10;
Prod10 = Pr & DosALa32_1;
}
Prod[0] = Prod0;
Prod[1] = Prod1;
Prod[2] = Prod2;
Prod[3] = Prod3;
Prod[4] = Prod4;
Prod[5] = Prod5;
Prod[6] = Prod6;
Prod[7] = Prod7;
Prod[8] = Prod8;
Prod[9] = Prod9;
Prod[10] = Prod10;
break;
default:
for (j=0; j<NumberLength; j++) {
Prod[j] = 0;
}
i = 0;
do {
Nbr = Nbr1[i];
Pr = Nbr*Nbr2[0] + Prod[0];
ProdB0 = Pr & DosALa32_1;
for (j=1; j<NumberLength; j++) {
Pr = (Pr >>> 32) + Nbr*Nbr2[j] + Prod[j];
Prod[j-1] = Pr & DosALa32_1;
}
Prod[j-1] = (Pr >>> 32);
Nbr = (ProdB0 * MontgomeryMultN) & DosALa32_1;
Pr = ((Nbr*TestNbr0 + ProdB0) >>> 32) + Nbr*TestNbr1 + Prod[0];
Prod[0] = Pr & DosALa32_1;
for (j=1; j<NumberLength-1; j++) {
Pr = (Pr >>> 32) + Nbr*TestNbr[j+1] + Prod[j];
Prod[j] = Pr & DosALa32_1;
}
Prod[j] += (Pr >>> 32);
i++;
} while (i<NumberLength);
for (j=NumberLength-1; j>=0; j--) {
if (Prod[j] != TestNbr[j]) {
break;
}
}
if (j<0 || j>=0 && Prod[j] >= TestNbr[j]) {
Pr = 0;
for (j=0; j<NumberLength; j++) {
Pr = (Pr>=0?0:-1) + Prod[j] - TestNbr[j];
Prod[j] = Pr & DosALa32_1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -