intset

0.0.2 • Public • Published

IntSet.js

This library allows for an "efficient" storage mechanism for positive BigInt values in JavaScript. It allows for basic set-theoretic operations, like union and intersection as well.

Usage

You can create a new set pretty easily:

const IntSet = require('intset');

let set = new IntSet();

You can add elements to a set straightforward as well:

set.add(5n);

And remove them the same:

set.remove(5n);

Check for presence:

const is5inSet = set.contains(5n);

Or see if it's empty:

const isSetEmpty = set.isEmpty();

You can also do typical set operations on them as well:

const set6 = set1
    .union(set2)
    .intersection(set3)
    .symmetricDifference(set4)
    .difference(set5);

Implementation

Internally, the set is a series of BigInt's, where each one uses bit masking to determine the presence or lack thereof of other numbers. This allows a set that represents n numbers to actually take up n / m numbers of space, where m represents the amount of storage used per number. m defaults to 64 bits, as this has (through experimentation) seemed to be the fastest, but can be customized through an argument to new IntSet(customM).

This means that unions, intersections, and the like are implemented through bitwise operators on each masked number, rather than storing each number individually.

Contributing

Just make an issue, or file a pull request!

Package Sidebar

Install

npm i intset

Weekly Downloads

2

Version

0.0.2

License

BSD-3-Clause

Unpacked Size

31.2 kB

Total Files

8

Last publish

Collaborators

  • athanclark