Skip to content

Instantly share code, notes, and snippets.

View jweinst1's full-sized avatar
🎯
Focusing

Josh Weinstein jweinst1

🎯
Focusing
View GitHub Profile
@jweinst1
jweinst1 / bitsorter.cpp
Last active December 8, 2025 06:34
automatic bit sorting in C++
#include <array>
#include <cstdint>
#include <cstddef>
#include <cmath>
#include <cstdio>
#include <climits>
#include <vector>
#include <cassert>
/**
@jweinst1
jweinst1 / murur3.rs
Created November 29, 2025 22:26
murmur3 in rust
pub fn murmur3_x64_64(data: &[u8], seed: u64) -> u64 {
let mut h1 = seed;
let mut h2 = seed;
const C1: u64 = 0x87c37b91114253d5;
const C2: u64 = 0x4cf5ad432745937f;
let mut i = 0;
let len = data.len();
while i + 16 <= len {
@jweinst1
jweinst1 / forward_back_context.py
Created November 16, 2025 00:01
forward and back contexts of a word
class WordContext(object):
def __init__(self, direction, terms):
self.direction = direction
self.terms = terms
def __repr__(self):
return f"{self.direction} - {self.terms}"
def make_context_list(seq, target):
@jweinst1
jweinst1 / hamming_skip_gram.cpp
Created November 3, 2025 00:08
hamming in a skip gram context
#include <vector>
#include <cstdint>
#include <cstdio>
#include <cassert>
#include <iostream>
#include <bitset>
#include <queue>
#include <unordered_map>
#include <string>
@jweinst1
jweinst1 / next_ge_bitset.cpp
Created September 26, 2025 22:02
get the next greatest neighbor in bitset
#include <iostream>
#include <bitset>
int next_ge(uint64_t S, int k) {
uint64_t mask = ~((1ULL << k) - 1);
uint64_t candidates = S & mask;
return __builtin_ctzll(candidates);
}
@jweinst1
jweinst1 / add_not_bits.txt
Last active September 26, 2025 00:26
closest sub mask in a mash set
>>> bin(0b10100 & ~0b1111)
'0b10000'
>>> bin(0b11000 & 0b1111)
'0b1000'
>>> bin(0b11000 & ~0b1111)
'0b10000'
>>> bin(0b01000 & ~0b1111)
'0b0'
>>> bin(0b11000 & ~0b1111)
'0b10000'
@jweinst1
jweinst1 / down_up_submask_iter_bench.cpp
Last active September 21, 2025 08:23
Bench mark of neighbor iteration in submasks
#include <array>
#include <vector>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <ctime>
#include <cmath>
#include <algorithm>
#include <iostream>
#include <random>
@jweinst1
jweinst1 / iter_by_trail_zeros.txt
Last active September 20, 2025 19:22
a way to check for nearest neighbor with bit ops and xor sets with mash
>>> bin(8)
'0b1000'
>>> bin(12)
'0b1100'
>>> bin(16)
'0b10000'
>>> bin(16 + 0b100)
'0b10100'
>>> bin(16 + 0b100 + 0b100)
'0b11000'
@jweinst1
jweinst1 / bit_state_machine.txt
Created September 16, 2025 22:34
bit state machine
>>> bin(0b11011 & (~(1 << 0) | (1 << 1)))
'0b11010'
>>> bin(0b11011 & ~((1 << 0) | (1 << 1)))
'0b11000'
>>> bin(0b11011 & ~((1 << 0) | (1 << 1)))
'0b11000'
>>> bin(0b11011 & ~(1 << 3))
'0b10011'
>>> bin(0b11011 & ~((1 << 3) | (1 << 0)))
'0b10010'
@jweinst1
jweinst1 / bit_maybe_set.rs
Last active September 15, 2025 22:10
Bit set in rust that stores vectors for membership
fn sub_distance<const S: usize>(v1:&[u64;S], v2:&[u64;S]) -> u64 {
let mut total = 0;
for i in 0..S {
total += v1[i] - v2[i];
}
return total;
}