| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284 |
- //-------------------------------------------------------------------------------------------------------
- // Copyright (C) Microsoft. All rights reserved.
- // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
- //-------------------------------------------------------------------------------------------------------
- function TestMulSmall(){
- var i, x, y;
- var A = new Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
- // with OF check
- for (i = 0; i < A.length; i++){
- x = (A[i] * -3);
- WScript.Echo("TestMul(OF): " + A[i] + "*-3 = " + x);
- y = x;
- x = (x * -3);
- WScript.Echo("TestMul(OF): " + y + "*-3 = " + x);
- x = (A[i] * -2);
- WScript.Echo("TestMul(OF): " + A[i] + "*-2 = " + x);
- y = x;
- x = (x * -2);
- WScript.Echo("TestMul(OF): " + y + "*-2 = " + x);
- x = (A[i] * -1);
- WScript.Echo("TestMul(OF): " + A[i] + "*-1 = " + x);
- y = x;
- x = (x * -1);
- WScript.Echo("TestMul(OF): " + y + "*-1 = " + x);
- x = (A[i] * 0);
- WScript.Echo("TestMul(OF): " + A[i] + "*0 = " + x);
- y = x;
- x = (x * 0);
- WScript.Echo("TestMul(OF): " + y + "*0 = " + x);
- x = (A[i] * 1);
- WScript.Echo("TestMul(OF): " + A[i] + "*1 = " + x);
- y = x;
- x = (x * 1);
- WScript.Echo("TestMul(OF): " + y + "*1 = " + x);
- x = (A[i] * 2);
- WScript.Echo("TestMul(OF): " + A[i] + "*2 = " + x);
- y = x;
- x = (x * 2);
- WScript.Echo("TestMul(OF): " + y+ "*2 = " + x);
- x = (A[i] * 3);
- WScript.Echo("TestMul(OF): " + A[i] + "*3 = " + x);
- y = x;
- x = (x * 3);
- WScript.Echo("TestMul(OF): " + y+ "*3= " + x);
- }
- // without OF check
- for (i = 1; i < 10; i++){
- x = (i * -3);
- WScript.Echo("TestMul(NOF): " + i + "*-3 = " + x);
- y = x;
- x = (x * -3);
- WScript.Echo("TestMul(NOF): " + y + "*-3 = " + x);
- x = (i * -2);
- WScript.Echo("TestMul(NOF): " + i + "*-2 = " + x);
- y = x;
- x = (x * -2);
- WScript.Echo("TestMul(NOF): " + y + "*-2 = " + x);
- x = (i * -1);
- WScript.Echo("TestMul(NOF): " + i + "*-1 = " + x);
- y = x;
- x = (x * -1);
- WScript.Echo("TestMul(NOF): " + y + "*-1 = " + x);
- x = (i * 0);
- WScript.Echo("TestMul(NOF): " + i + "*0 = " + x);
- y = x;
- x = (x * -0);
- WScript.Echo("TestMul(NOF): " + y + "*-0 = " + x);
- x = (i * 1);
- WScript.Echo("TestMul(NOF): " + i + "*1 = " + x);
- y = x;
- x = (x * 1);
- WScript.Echo("TestMul(NOF): " + y + "*1 = " + x);
- x = (i * 2);
- WScript.Echo("TestMul(NOF): " + i + "*2 = " + x);
- y = x;
- x = (x * 2);
- WScript.Echo("TestMul(NOF): " + y + "*2 = " + x);
- x = (i * 3);
- WScript.Echo("TestMul(NOF): " + i + "*3 = " + x);
- y = x;
- x = (x * 3);
- WScript.Echo("TestMul(NOF): " + y + "*3 = " + x);
- }
- }
- function TestMulLarge(){
- var X = new Array();
- var Y = new Array();
- var y;
- var i, j;
- // All without OF check
- // -(2^i)
- for (i = 1; i < 10; i++){
- X[2] = i * -4;
- X[3] = i * -8;
- X[4] = i * -16;
- X[5] = i * -32;
- X[6] = i * -64;
- X[7] = i * -128;
- X[8] = i * -256;
- X[9] = i * -512;
- X[10] = i * -1024;
- X[11] = i * -2048;
- X[12] = i * -4096;
- X[13] = i * -8192;
- X[14] = i * -16384;
- for (j = 2; j < X.length; j++)
- WScript.Echo("TestMul(NOF): " + i + "*-" + Math.pow(2, j) + " = " + X[j]);
- }
- // 2 ^ i
- for (i = 1; i < 10; i++){
- X[2] = i * 4;
- X[3] = i * 8;
- X[4] = i * 16;
- X[5] = i * 32;
- X[6] = i * 64;
- X[7] = i * 128;
- X[8] = i * 256;
- X[9] = i * 512;
- X[10] = i * 1024;
- X[11] = i * 2048;
- X[12] = i * 4096;
- X[13] = i * 8192;
- X[14] = i * 16384;
- for (j = 2; j < X.length; j++)
- WScript.Echo("TestMul(NOF): " + i + "*" + Math.pow(2, j) + " = " + X[j]);
- }
- // 2 ^ i + 1
- for (i = 1; i < 10; i++){
- X[2] = i * 5;
- X[3] = i * 9;
- X[4] = i * 17;
- X[5] = i * 33;
- X[6] = i * 65;
- X[7] = i * 129;
- X[8] = i * 257;
- X[9] = i * 513;
- X[10] = i * 1025;
- X[11] = i * 2049;
- X[12] = i * 4097;
- X[13] = i * 8193;
- X[14] = i * 16385;
- for (j = 2; j < X.length; j++)
- WScript.Echo("TestMul(NOF): " + i + "*" + (Math.pow(2, j) + 1) + " = " + X[j]);
- }
- // 2 ^ i - 1
- for (i = 1; i < 10; i++){
- X[2] = i * 3;
- X[3] = i * 7;
- X[4] = i * 15;
- X[5] = i * 31;
- X[6] = i * 63;
- X[7] = i * 127;
- X[8] = i * 255;
- X[9] = i * 511;
- X[10] = i * 1023;
- X[11] = i * 2047;
- X[12] = i * 4095;
- X[13] = i * 8191;
- X[14] = i * 16383;
- for (j = 2; j < X.length; j++)
- WScript.Echo("TestMul(NOF): " + i + "*" + (Math.pow(2, j) - 1)+ " = " + X[j]);
- }
- }
- function TestRem(){
- var A = new Array(10243, -2238, 324, -153, 449, -1042, 999, -4408, 1022, -112);
- var X = new Array();
- var i, j;
- for (i = 0; i < A.length; i++){
- X[2] = A[i] % 4
- X[3] = A[i] % 8
- X[4] = A[i] % 16
- X[5] = A[i] % 32
- X[6] = A[i] % 64
- X[7] = A[i] % 128
- X[8] = A[i] % 256
- X[9] = A[i] % 512
- X[10] = A[i] % 1024
- X[11] = A[i] % 2048
- X[12] = A[i] % 4096
- X[13] = A[i] % 8192
- X[14] = A[i] % 16384
- for (j = 2; j < X.length; j++)
- WScript.Echo("TestRem: " + A[i] + "%" + Math.pow(2, j) +" = " + X[j]);
- }
- }
- function test0(){
- var e = 1;
- e =359356164.1;
- e >>=2;
- e *=3;
- WScript.Echo("e = " + (e|0));
- e =359356164.1;
- e >>=2;
- e *=-3;
- WScript.Echo("e = " + (e|0));
- e =359356164.1;
- e >>=4;
- e *=5;
- WScript.Echo("e = " + (e|0));
- e =359356164.1;
- e >>=4;
- e *=-5;
- WScript.Echo("e = " + (e|0));
- e =359356164.1;
- e >>=8;
- e *=7;
- WScript.Echo("e = " + (e|0));
- e =359356164.1;
- e >>=8;
- e *=-7;
- WScript.Echo("e = " + (e|0));
- e =359356164.1;
- e >>=10;
- e *=17;
- WScript.Echo("e = " + (e|0));
- e =359356164.1;
- e >>=10;
- e *=-17;
- WScript.Echo("e = " + (e|0));
- };
- TestMulSmall();
- TestMulSmall();
- WScript.Echo("TestMulSmall done");
- TestMulLarge();
- TestMulLarge();
- WScript.Echo("TestMulLarge done");
- TestRem();
- TestRem();
- WScript.Echo("TestRem done");
- test0()
- test0();
- WScript.Echo("Bug 326533 Test done");
|