Notes concerning “Algorithms”
Additive smoothing for Markov models
2007 to 2009 (updated 2019-05-19) (11 minutes)
Worst-case-logarithmic-time reduction over arbitrary intervals over arbitrary semigroups
2012-12-04 (5 minutes)
a logarithmic-time alternative to summed-area tables for reducing arbitrary semigroup operations over arbitrary ranges (a generalization of RMQ segment trees)
2012-12-06 (updated 2013-05-17) (11 minutes)
Alastair thesis review
2013-05-17 (1 minute)
Use crit-bit trees as the fundamental string-set data structure
2013-05-17 (3 minutes)
Cycle sort
2013-05-17 (1 minute)
Quadtree compression of terminal video RAM to do a megapixel windowing system in 6 KiB
2013-05-17 (9 minutes)
Distinguishing natural languages with 3-grams of characters
2013-05-17 (updated 2013-05-20) (8 minutes)
Constant-space grep
2014-02-24 (3 minutes)
Simple persistent in-memory dictionaries with log² lookups and logarithmic insertion
2014-02-24 (6 minutes)
Square wave synthesis
2014-02-24 (2 minutes)
Precisely how is 3 “optimal” for one-hot state machines, sparse FIR kernels, etc.?
2014-04-24 (8 minutes)
Polynomial-spline FIR kernels by integrating sparse kernels
2014-04-24 (13 minutes)
Randomizing delta-sigma conversion to eliminate aliasing
2014-04-24 (7 minutes)
Some speculative thoughts on DSP algorithms
2014-04-24 (20 minutes)
Rendering iterated function systems (IFSes) with interval arithmetic
2014-09-02 (6 minutes)
You can’t sort a file whose size is cubic in your RAM size in two passes, only quadratic
2015-05-28 (5 minutes)
Editor buffers
2015-07-15 (updated 2015-09-03) (16 minutes)
Cobstrings
2015-08-21 (updated 2015-08-31) (6 minutes)
Parsing a conservative approximation of a CFG with a FSM
2015-09-03 (7 minutes)
Incremental MapReduce for Abelian-group reduction functions
2015-09-03 (4 minutes)
Rhythm codes
2015-09-03 (4 minutes)
Very fast FIR filtering with time-domain zero stuffing and splines
2015-09-03 (updated 2015-09-07) (13 minutes)
Convolution applications
2015-09-07 (7 minutes)
Hash gossip exchange
2015-11-19 (4 minutes)
Improving LZ77 compression with a RET bytecode
2016-04-05 (updated 2016-04-06) (3 minutes)
Trees as code
2016-05-10 (4 minutes)
Gaussian spline reconstruction
2016-06-05 (updated 2016-06-06) (5 minutes)
Improving lossless image compression with basic machine learning algorithms
2016-07-27 (2 minutes)
Append only unique string pool
2016-07-27 (2 minutes)
Algorithm time capsule
2016-08-11 (1 minute)
Internal determinism
2016-08-17 (2 minutes)
Robust hashsplitting with sliding Range Minimum Query
2016-09-05 (7 minutes)
Intro to algorithms
2016-09-06 (5 minutes)
An almost-in-place mergesort
2016-09-07 (5 minutes)
Gradient rendering
2016-09-24 (12 minutes)
Counting the number of spaces to the left in parallel
2016-10-11 (6 minutes)
What’s the dumbest register allocator that might give you reasonable performance?
2016-10-11 (16 minutes)
Chintzy depth of field
2016-10-27 (1 minute)
Bitsliced operations with a hypercube of shuffle operations
2016-11-30 (2 minutes)
The paradoxical complexity of computing the top N
2017-01-04 (7 minutes)
Pulverizer algorithm
2017-01-06 (updated 2017-02-07) (4 minutes)
Constant time sets for pixel painting
2017-02-07 (2 minutes)
Wang tile addition
2017-02-16 (3 minutes)
Set hashing
2017-03-09 (10 minutes)
Incremental persistent binary array sets
2017-04-10 (4 minutes)
String tuple encoding
2017-04-28 (3 minutes)
ASCIIbetically homomorphic encodings of general data structures
2017-06-15 (2 minutes)
Golomb-coding operands as belt offsets likely won’t increase code density much
2017-06-15 (updated 2017-06-20) (7 minutes)
Can you make a vocoder simpler using CIC filters?
2017-06-28 (updated 2018-06-17) (2 minutes)
A tournament to decide which notes to devote attention to polishing
2017-07-19 (2 minutes)
Vectorized prefix sum
2017-07-19 (5 minutes)
Another candidate lightweight frequency tracking algorithm
2017-08-18 (4 minutes)
Incremental recomputation
2018-04-27 (12 minutes)
Gradient descent beyond machine learning
2018-05-18 (2 minutes)
Accelerating convolution and correlation with short periodic waveforms using OLAP marginal prefix sums
2018-06-05 (5 minutes)
Is a phase vocoder or a bunch of PLLs a more efficient way to listen to all FM radio stations at once?
2018-06-17 (3 minutes)
Top algorithms
2018-07-29 (4 minutes)
Bit difference array
2018-10-28 (11 minutes)
Quintic upsampling of time-series with 1½ multiplies per sample
2018-10-28 (3 minutes)
Digital noise generators
2018-10-28 (2 minutes)
Cheap textures
2018-10-28 (updated 2019-05-05) (6 minutes)
Dilating letterforms
2018-11-04 (15 minutes)
Gauzy shit
2018-11-04 (4 minutes)
The Bleep ultrasonic modem for local data communication
2018-12-10 (updated 2018-12-11) (8 minutes)
Real-time bokeh algorithms
2018-12-18 (5 minutes)
Improving Lua #L with incremental prefix sum in the ∧ monoid
2018-12-18 (7 minutes)
Matrix exponentiation linear circuits
2018-12-18 (4 minutes)
Evaluating DSP operations in minimal buffer space by pipelining
2018-12-18 (updated 2018-12-19) (22 minutes)
Sample reversal
2018-12-18 (updated 2019-01-17) (5 minutes)
Bresenham erosion
2019-01-04 (updated 2019-03-19) (13 minutes)
Median filtering
2019-01-17 (11 minutes)
Hardware multiplication with square tables
2019-02-08 (updated 2019-02-24) (4 minutes)
Tabulating your top event of the month efficiently using RMQ algorithms
2019-03-19 (8 minutes)
Accelerating Euler’s Method on linear time-invariant systems by exponentiating matrices
2019-03-24 (updated 2019-04-02) (8 minutes)
Karatsuba
2019-04-20 (2 minutes)
Granite texture
2019-05-08 (updated 2019-05-09) (5 minutes)
A language whose memory model is a bunch of temporally-indexed logs
2019-05-12 (updated 2018-05-21) (20 minutes)
Image approximation
2019-05-14 (10 minutes)
Profile-guided parser optimization should enable parsing of gigabytes per second
2019-05-23 (8 minutes)
Midpoint method texture mapping
2019-06-01 (3 minutes)