EdgeAIG's picture
download
raw
2.05 kB
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
//#region src/generator/xoroshiro128plus.ts
const jumps = [
3639956645,
3750757012,
1261568508,
386426335
];
var XoroShiro128Plus = class XoroShiro128Plus {
constructor(s01, s00, s11, s10) {
this.s01 = s01;
this.s00 = s00;
this.s11 = s11;
this.s10 = s10;
}
clone() {
return new XoroShiro128Plus(this.s01, this.s00, this.s11, this.s10);
}
next() {
const out = this.s00 + this.s10 | 0;
const a0 = this.s10 ^ this.s00;
const a1 = this.s11 ^ this.s01;
const s00 = this.s00;
const s01 = this.s01;
this.s00 = s00 << 24 ^ s01 >>> 8 ^ a0 ^ a0 << 16;
this.s01 = s01 << 24 ^ s00 >>> 8 ^ a1 ^ (a1 << 16 | a0 >>> 16);
this.s10 = a1 << 5 ^ a0 >>> 27;
this.s11 = a0 << 5 ^ a1 >>> 27;
return out;
}
jump() {
let ns01 = 0;
let ns00 = 0;
let ns11 = 0;
let ns10 = 0;
let s01 = this.s01;
let s00 = this.s00;
let s11 = this.s11;
let s10 = this.s10;
for (let i = 0; i !== 4; ++i) {
const ji = jumps[i];
for (let mask = 1; mask; mask <<= 1) {
if (ji & mask) {
ns01 ^= s01;
ns00 ^= s00;
ns11 ^= s11;
ns10 ^= s10;
}
const a0 = s10 ^ s00;
const a1 = s11 ^ s01;
const s00_ = s00;
const s01_ = s01;
s00 = s00_ << 24 ^ s01_ >>> 8 ^ a0 ^ a0 << 16;
s01 = s01_ << 24 ^ s00_ >>> 8 ^ a1 ^ (a1 << 16 | a0 >>> 16);
s10 = a1 << 5 ^ a0 >>> 27;
s11 = a0 << 5 ^ a1 >>> 27;
}
}
this.s01 = ns01;
this.s00 = ns00;
this.s11 = ns11;
this.s10 = ns10;
}
getState() {
return [
this.s01,
this.s00,
this.s11,
this.s10
];
}
};
function xoroshiro128plusFromState(state) {
if (!(state.length === 4)) throw new Error("The state must have been produced by a xoroshiro128plus RandomGenerator");
return new XoroShiro128Plus(state[0], state[1], state[2], state[3]);
}
function xoroshiro128plus(seed) {
return new XoroShiro128Plus(-1, ~seed, seed | 0, 0);
}
//#endregion
exports.xoroshiro128plus = xoroshiro128plus;
exports.xoroshiro128plusFromState = xoroshiro128plusFromState;

Xet Storage Details

Size:
2.05 kB
·
Xet hash:
1a051228ea7dc5e6e04a8ed43491311873ae920f37a130fc3c363bda1e6c8e49

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.