simple-squiggle

A restricted subset of Squiggle
Log | Files | Refs | README

bitwise.js (1460B)


      1 import { isInteger } from '../../utils/number.js';
      2 var n1 = 'number';
      3 var n2 = 'number, number';
      4 export function bitAndNumber(x, y) {
      5   if (!isInteger(x) || !isInteger(y)) {
      6     throw new Error('Integers expected in function bitAnd');
      7   }
      8 
      9   return x & y;
     10 }
     11 bitAndNumber.signature = n2;
     12 export function bitNotNumber(x) {
     13   if (!isInteger(x)) {
     14     throw new Error('Integer expected in function bitNot');
     15   }
     16 
     17   return ~x;
     18 }
     19 bitNotNumber.signature = n1;
     20 export function bitOrNumber(x, y) {
     21   if (!isInteger(x) || !isInteger(y)) {
     22     throw new Error('Integers expected in function bitOr');
     23   }
     24 
     25   return x | y;
     26 }
     27 bitOrNumber.signature = n2;
     28 export function bitXorNumber(x, y) {
     29   if (!isInteger(x) || !isInteger(y)) {
     30     throw new Error('Integers expected in function bitXor');
     31   }
     32 
     33   return x ^ y;
     34 }
     35 bitXorNumber.signature = n2;
     36 export function leftShiftNumber(x, y) {
     37   if (!isInteger(x) || !isInteger(y)) {
     38     throw new Error('Integers expected in function leftShift');
     39   }
     40 
     41   return x << y;
     42 }
     43 leftShiftNumber.signature = n2;
     44 export function rightArithShiftNumber(x, y) {
     45   if (!isInteger(x) || !isInteger(y)) {
     46     throw new Error('Integers expected in function rightArithShift');
     47   }
     48 
     49   return x >> y;
     50 }
     51 rightArithShiftNumber.signature = n2;
     52 export function rightLogShiftNumber(x, y) {
     53   if (!isInteger(x) || !isInteger(y)) {
     54     throw new Error('Integers expected in function rightLogShift');
     55   }
     56 
     57   return x >>> y;
     58 }
     59 rightLogShiftNumber.signature = n2;