2
0

set.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. var RTL$ = {
  2. makeSet: function RTLMakeSet(/*...*/){
  3. var result = 0;
  4. function checkBit(b){
  5. if (b < 0 || b > 31)
  6. throw new Error("integes between 0 and 31 expected, got " + b);
  7. }
  8. function setBit(b){
  9. checkBit(b);
  10. result |= 1 << b;
  11. }
  12. for(var i = 0; i < arguments.length; ++i){
  13. var b = arguments[i];
  14. if (b instanceof Array){
  15. var from = b[0];
  16. var to = b[1];
  17. if (from < to)
  18. throw new Error("invalid SET diapason: " + from + ".." + to);
  19. for(var bi = from; bi <= to; ++bi)
  20. setBit(bi);
  21. }
  22. else
  23. setBit(b);
  24. }
  25. return result;
  26. },
  27. setInclL: function RTLSetInclL(l, r){
  28. return l & r == l;
  29. },
  30. setInclR: function RTLSetInclR(l, r){
  31. return l & r == r;
  32. }
  33. };
  34. var m = function (){
  35. var ci = 3;
  36. var cs1 = 6;
  37. var cs2 = 12;
  38. var cs3 = 2;
  39. var cs4 = 28;
  40. var cs5 = -3;
  41. var s1 = 0;var s2 = 0;
  42. var i1 = 0;
  43. var b = false;
  44. s1 = 0;
  45. s1 = 61;
  46. s1 = 8;
  47. s1 = 64;
  48. i1 = 3;
  49. s2 = RTL$.makeSet(i1, i1 + 2, [10 - i1, 15]);
  50. s2 = RTL$.makeSet(i1) | 4;
  51. b = 1 << i1 & s1;
  52. b = RTL$.setInclL(s1, s2);
  53. b = RTL$.setInclR(s1, s2);
  54. b = s1 == s2;
  55. b = s1 != s2;
  56. s1 = s1 | s2;
  57. s1 = s1 & ~s2;
  58. s1 = s1 & s2;
  59. s1 = s1 ^ s2;
  60. s1 = ~s2;
  61. s2 |= 1 << 3;
  62. s1 |= 1 << 9;
  63. s1 |= 1 << ci * 2 - i1 + 3;
  64. s2 &= ~(1 << 3);
  65. }();