Reanimator Ltd specializes in hardcore programming and maths.

This website contains articles and code related to these subjects. I hope you find the articles interesting, and maybe even useful!

Quick maths hack to get the correct per-pixel derivative of any value that is linear in worldspace.

Read more in Maths

Timewarp is almost designed to do this

Read more in Articles

What is in a normal map anyway?

Read more in Articles

This article describes how to quickly find the Nth root using basic arithmetic operations and floating-point bit-twiddling hacks.

Read more in Maths

How to compute the SVD in 2D (includes code)

Read more in Maths

These are some thoughts I had last night while staying up far too late thinking about this!

Read more in Musings

co-NP and NP morally use the same resources (including time) on non-deterministic Turing machines, but you need a metasystem to do it.

Read more in Musings

The characters on 5x7 LED displays look upright when stationary, but slanted (italic) when moving. Why is that?

Read more in Articles

I present a novel acceleration structure and raytracing algorithm which explicitly leverages the capabilities of the GPU and avoids the "up and down the tree" nature of kd-tree raytracers.

Read more in Articles

You're going to use full-blown SVD just to get the pseudoinverse? Really?

Read more in Maths

How do all these matrix decompositions work, and how do you code them?

Read more in Maths

Some pretty out-there stuff about procedures having derivatives ...

Read more in Musings

When is this expression true for random variables A, B and C?

```
p(A|C) = p(A|B)p(B|C) + p(A|!B)p(!B|C)
```

Read more in Maths

Monads have a deep mystery surrounding them, but they're actually a very simple concept. There is nothing magic here - as a C++ programmer you've probably already done this yourself, or at least seen it done, but probably in a different context. Read more for my explanation of monads for C++ programmers.

Read more in Code

##
An Adventure in Bayesian Inference

This article explores the question of how best to isolate a bug in version control using binary chop, when the bug doesn't always manifest. I derive a probabilistic algorithm to solve this "Bayesian Binary Search" problem, from first principles.

Read more in Articles

An imaginary sales pitch from Reanimator Ltd, circa 2015 ...

Read more in Musings

DSP textbooks will tell you that a filter graph containing a delay-free loop is "unrealizable". I demonstrate that "unrealizable" doesn't mean you can't code it.

*Update 7th Mar 2012: added a worked example.*

Read more in Articles

Should programming languages allow "naked operators" as objects?

Read more in Musings

Quaternion formulae for everyday use.

Read more in Maths

IIR filters seem impossible to convert to SIMD code, since they have a tight loop containing an immediate dependency.
This article will show you that it's not impossible, given the right maths.

Read more in Articles