The Vektorgeist Method · Study note

The mathematics, using nothing but arithmetic

Everything the method rests on, built from adding, multiplying, dividing, and two buttons on a calculator. No algebra. No symbols standing in for numbers. Every figure on this page was printed by a script before it was written here — redo any of them and they will match.

The whole thing, in order

  1. A moment becomes a list of fractions
  2. Every such list sits on a ball
  3. Distance on a ball is an angle
  4. Why not just subtract?
  5. Cheaper measuring sticks — and one that cheats
  6. A word is a curve
  7. Lining up two curves that run at different speeds
  8. The master distance
  9. Averaging on a ball is not plain averaging
  10. Why averaging a whole word goes blind
  11. Ignoring pitch
  12. The same trick, applied to time itself
  13. The whole thing in six lines
  14. Glossary — the scary names, decoded

What this is all for

Two people say the same word. Two people write the same letter. A sonar pings twice. In every case there are two things that happen over time, and the question is always the same:

How far apart are they?

Answer that well and you can recognise a word, tell two handwritings apart, or spot when a machine's sound has changed. The whole method is one measuring stick, built in six moves. Everything else in the papers is a variation on those six moves.

You need three things you already have: multiplying, dividing, and the square-root button. Later, one more button called arccos. That is the entire toolkit.

Move 1A moment becomes a list of fractions

Take one instant of sound — say ten thousandths of a second. Split it into buckets: how much low sound, how much middle, how much high. Suppose the meter reads:

low 50    middle 30    high 20        total = 100

Now divide each one by the total:

50 / 100 = 0.5
30 / 100 = 0.3
20 / 100 = 0.2

the list is:  0.5   0.3   0.2        and it adds to 1

That's it. That is the first move, and it is just division. Two rules hold no matter what: nothing is negative, and everything adds to exactly 1.

Why divide by the total

Dividing by the total throws away how loud it was and keeps only the shape. A shout and a whisper of the same vowel both become 0.5 0.3 0.2. That is not a convenience — it's the whole point of view. The method only ever cares about proportions, never about absolute size.

The buckets don't have to be sound. They can be colours in a light reading, distances in a sonar echo, or directions a pen moved. The arithmetic doesn't know the difference.

The name in the papers
A list like this is called a probability distribution, and one instant's worth is called a frame. When you see the word "distribution", read: a list of fractions that adds to 1.

One more name. If you have 3 buckets, all the possible lists together form a flat triangle sitting in space, with corners at "all low", "all middle", "all high". The papers call that triangle the simplex. It's just the word for "every list that could possibly come out of Move 1".

Move 2Every such list sits on a ball

Take the square root of each number in the list. That's one button, three times:

√0.5 = 0.707107
√0.3 = 0.547723
√0.2 = 0.447214

Now square them again and add them up:

0.707107 × 0.707107 = 0.5
0.547723 × 0.547723 = 0.3
0.447214 × 0.447214 = 0.2
                      ───
                      1.0

Of course it adds to 1 — squaring undoes the square root, so you're just adding the original numbers back up, and those always added to 1.

The move the whole method rests on

There is a rule from school, Pythagoras, that says: to find how far a point is from the centre, square each of its coordinates, add them, and take the square root of the total.

We just did that. The total was 1. The square root of 1 is 1.

So every square-rooted list is exactly 1 unit away from the centre — always, with no exceptions, for every list that could ever come out of Move 1. Points all sitting exactly 1 unit from a centre are, by definition, the surface of a ball.

Nothing clever happened. Taking the square root didn't put the data on a ball; it revealed that every possible sound-moment was already living on one. The flat triangle from Move 1 became a curved patch on a globe.

And that matters because a globe is a shape we know how to measure on.

Move 3Distance on a ball is an angle

Two cities on Earth. You don't measure the distance by drilling straight through the planet — you measure the curved path across the surface. And that curved path is an angle: London to New York is about 51 degrees of the way around.

So: our two sound-moments are two points on a ball. The distance between them is the angle between them. Here's how to get it, with arithmetic.

Worked example — do this on a calculator

Two moments:

first list:   0.5   0.3   0.2
second list:  0.4   0.4   0.2

Step one. Multiply them together, bucket by bucket, and square-root each answer:

0.5 × 0.4 = 0.20      √0.20 = 0.447214
0.3 × 0.4 = 0.12      √0.12 = 0.346410
0.2 × 0.2 = 0.04      √0.04 = 0.200000

Step two. Add those three up:

0.447214 + 0.346410 + 0.200000 = 0.993624

Call that the closeness number. It runs from 0 to 1:

Step three. Turn that closeness into an angle. There's a button for this: arccos.

arccos(0.993624) = 6.4737 degrees
About that button

cos takes an angle and gives you back a number between 0 and 1. arccos goes the other way: give it the number, it gives you back the angle. That is the entire relationship — the same way the square-root button undoes squaring.

You do not need to know how it works inside, any more than you need to know how the square-root button works inside. It's a lookup.

Step four. Double it. (Purely a convention — everyone in the field scales it this way, and it changes nothing about which things are closer than which.) In radians rather than degrees, which is what the code uses:

angle           = 0.112987
doubled         = 0.225974      ← the distance

Sanity check. Compare a list with itself: the closeness number comes out to exactly 1, and arccos(1) = 0. A thing is zero distance from itself. Good — the measuring stick isn't broken.

The names in the papers
The closeness number is the Bhattacharyya coefficient. Terrifying word, and it is multiply the pairs, square-root them, add them up. The final doubled angle is the Fisher–Rao distance. It is not something anyone invented for this project — it's the standard, correct notion of distance between two distributions, settled by a statistician named Rao in 1945. There is no tuning knob and nothing to fit.

Move 4Why not just subtract?

Fair question. Why go through a ball and an angle when you could just subtract the two lists and see how big the gaps are?

Because subtraction says a gap of 0.1 is a gap of 0.1 no matter where it happens. That is wrong, and here is the proof in two lines of arithmetic:

Two listsGap if you just subtractDistance by angle
0.5 0.5 vs 0.4 0.6 0.2000 0.2014
0.1 0.9 vs 0.02 0.98 0.1600 0.3597

Look at what happened. By plain subtraction the second pair is closer (0.16 beats 0.20). By angle it is nearly twice as far apart.

And the angle is right. Going from 0.5 to 0.4 is a nudge — the bucket is still half full. Going from 0.10 down to 0.02 means that bucket almost went silent. Five-sixths of what was there is gone. That is an enormous change, and subtraction can't see it because the numbers involved are small.

Plain subtraction is blind near zero. The angle isn't. That is the entire reason the ball is worth the trouble.

Move 5Cheaper measuring sticks — and one that cheats

The angle is the exact, correct answer, but arccos is slow when you need to do it millions of times. So there are alternatives. All of them are plain arithmetic, all give the same ordering of near and far. On the two lists from Move 3:

StickValueWhat it's for
Fisher–Rao (the angle)0.225974The exact answer. Fair everywhere.
chi-squared0.012698The fast one the code actually runs. No angle button needed.
root chi-squared0.112687Fast and honest — see below.
Hellinger0.079851Rises and falls with the angle. Cheap.
Wasserstein-10.100000The only one that cares which bucket is next to which.
The relationship worth memorising

Take the exact distance, square it, take a quarter of it:

0.225974 × 0.225974 = 0.051064
0.051064 ÷ 4        = 0.012766

the fast chi-squared said:  0.012698

They agree to 99.47%. On real audio the measured agreement is 98.7%. That is your licence to run the cheap one in the software while claiming the exact geometry in the theory — they are the same thing to within rounding.

The rule that separates a fair stick from a cheat

A fair measuring stick has to obey four common-sense rules:

  1. Distance is never negative.
  2. It's zero only between a thing and itself.
  3. A to B is the same as B to A.
  4. No shortcuts. Going straight from A to C can never be longer than going A to B to C. Detours don't save distance.

Rule 4 is the one that catches people out. Here are three ordinary lists, and here is chi-squared failing it:

A = 0.7 0.2 0.1     B = 0.3 0.4 0.3     C = 0.1 0.2 0.7

Fisher–Rao      A→B 0.834014   B→C 0.834014   detour 1.668027
                                              direct 1.507434     detour is longer ✓

chi-squared     A→B 0.163333   B→C 0.163333   detour 0.326667
                                              direct 0.450000     detour is SHORTER ✗

root chi-sq     A→B 0.404145   B→C 0.404145   detour 0.808290
                                              direct 0.670820     detour is longer ✓

That's not a rigged example — those are three perfectly ordinary lists. Chi-squared genuinely is not a fair stick. Which is exactly why "root chi-squared" exists: take the square root of it and rule 4 comes back.

If anyone ever asks "is your distance a proper metric?", the honest answer is: Fisher–Rao and root chi-squared are; plain chi-squared isn't, it's a divergence — and we say so. Volunteering that is what makes the rest believable.

The names in the papers
A stick obeying all four rules is a metric. One that obeys the first three but breaks rule 4 is a divergence. The frame-to-frame stick, whichever one you pick, is called the ground metric — "ground" because everything else is built on top of it.

Move 6A word is a curve

One instant of sound is one point on the ball. But a word isn't an instant. Chop a spoken word into two hundred instants and you get two hundred points, in order — a line traced across the surface of the ball.

A spoken word is a curve. A handwritten letter is a curve. A sonar echo is a curve. A machine's sound over an hour is a curve.

This is the central move of the whole programme. Nearly every other system takes those two hundred points and averages them into one, then compares averages. That throws the time away. We keep the whole curve and compare curves.

Move 10 shows exactly how much that averaging costs, in numbers.

Move 7Lining up two curves that run at different speeds

Here's the problem. You say "seven" in four tenths of a second, someone else says it in six tenths. Comparing instant 1 to instant 1, instant 2 to instant 2 is nonsense — you're not at the same place in the word at the same moment.

The fix is from 1978 and it is not ours: let one instant match several instants of the other, so a slow speaker's drawl gets absorbed. Two rules only:

Then, of all the legal ways to line them up, take the cheapest.

The simplest possible example

Two buckets only, and someone drawls the first sound:

you:   1 0     1 0     0 1        (three instants — you held the first sound)
me:    1 0             0 1        (two instants — I said it quickly)

Compare instant-to-instant and you have a problem: your instant 2 (1 0) lands against my instant 2 (0 1), which is a completely different sound. That comparison scores 1.5708 — it says these are two different words.

Now allow the stretch. Your first two instants both match my first instant. Your third matches my second.

your instant 1  →  my instant 1     cost 0
your instant 2  →  my instant 1     cost 0
your instant 3  →  my instant 2     cost 0
                                    ─────
                            total   0.0        over 3 steps  →  0.0

Exactly zero. Same word. Which it is.

A full one, small enough to check on paper

Curve P has 3 instants, curve Q has 4. Both slide from bucket 1 to bucket 2 — same journey — but Q dawdles at the start.

P:   0.9 0.1     0.5 0.5     0.1 0.9
Q:   0.9 0.1     0.8 0.2     0.5 0.5     0.1 0.9

Step one. Work out the cost of every possible pairing, using Move 3 on each pair. Twelve pairings, twelve angles:

                Q1        Q2        Q3        Q4
     P1      0.000000  0.283794  0.927295  1.854590
     P2      0.927295  0.643501  0.000000  0.927295
     P3      1.854590  1.570796  0.927295  0.000000

Step two. Fill in a second grid of running totals. Each cell is its own cost, plus the cheapest of the three cells you could have arrived from (the one to its left, the one above, or the one diagonally up-left). Start at the top-left and work across:

                Q1        Q2        Q3        Q4
     P1      0.000000  0.283794  1.211089  3.065680
     P2      0.927295  0.643501  0.283794  1.211089
     P3      2.781886  2.214297  1.211089  0.283794   ← the answer lands here

Step three. Walk backwards from the bottom-right corner, each time stepping to whichever of the three neighbours was cheapest. That traces out the winning line-up:

P1 → Q1      P1 → Q2      P2 → Q3      P3 → Q4

steps taken   = 4
total cost    = 0.283794
0.283794 ÷ 4  = 0.070949      ← the distance between the two curves

Notice what the stretch did: P1 got matched to both Q1 and Q2. That's Q's dawdle being absorbed.

And compare against not stretching at all — line them up 1-to-1 and cut Q short:

no stretch:  0.523599          with stretch:  0.070949        7.4 times better

The stretch found that these are nearly the same journey. The naive comparison called them wildly different.

The name in the papers
Dynamic Time Warping, usually just DTW. Sakoe and Chiba, 1978. Standard, borrowed, not ours — and we say so.

Move 8The master distance

Slide the two curves against each other until the total mismatch is as small as it can get. Add up the mismatches along that winning line-up. Divide by how many steps it took.

That's the whole distance. The papers call it D.

It has exactly two parts, and keeping them separate is what makes the claim honest:

A mistake worth knowing about

An earlier version made the alignment minimise the average cost per step, instead of minimising the total and dividing at the end. It looked tidier and it produced a benchmark win.

It was wrong. If you let the alignment minimise the average directly, it learns to pad the path with cheap repeated steps — stalling on an easy match to drag the average down. The apparent win was that padding, and nothing else. It was caught by measuring the padding directly: 0.61 on the version that cheated, 0.00 on the one that doesn't.

The broken version is still in the code, unused, labelled, so the record shows the mistake was made and found.

Move 9Averaging on a ball is not plain averaging

Once your data lives on the surface of a ball, ordinary averaging goes wrong in a specific way: the average of two points on a globe is buried inside the earth, not on the surface where the data lives.

Two lists, far apart:

first:    0.80  0.15  0.05
second:   0.05  0.15  0.80

plain average:      0.425000  0.150000  0.425000
proper midpoint:    0.403226  0.193548  0.403226

Both of those sit exactly halfway between the two, in the sense of being the same distance from each. So both look like midpoints. Here's the test that separates them — measure the whole arc, then measure it in two hops through each candidate:

the whole arc, first → second:          1.976864

through the proper midpoint:   0.988432 + 0.988432 = 1.976864     exactly the arc
through the plain average:     0.994620 + 0.994620 = 1.989240     longer

The proper midpoint's two halves add up to exactly the whole. It's on the path. The plain average sits off to one side, and going through it is a detour — small, but real, and it compounds every time you average.

This is the next move in miniature. Averaging doesn't just lose a little precision. It leaves the geometry entirely.

The names in the papers
Walking along the surface between two points is slerp (spherical linear interpolation — "walk the arc, don't cut through"). The proper centre of a whole set of points is the Karcher mean (or Fréchet mean): the point on the surface whose total squared distance to everything else is smallest. Same idea as an ordinary average, computed on a curved surface instead of a flat one.

Move 10Why averaging a whole word goes blind

Now the payoff. Take two words that are identical almost all the way through and differ only at the very end — "cat" and "cap". Call the fraction of the word where they differ the difference stretch.

Two ways to compare them: keep the curves (Move 8), or average each word down to a single list and compare those. Watch what happens as the difference gets briefer:

Difference stretchCurves comparedAverages comparedRatio
0.20000.008333330.001602565.2×
0.10000.004166670.0004001610.4×
0.05000.002083330.0001000120.8×
0.02500.001041670.0000250041.7×
0.01250.000520830.0000062583.3×

Read that table down the columns. Every time the difference stretch halves:

So averaging goes blind twice as fast as the signal actually fades. By the time the difference is a hundredth of the word, keeping the curve is 83 times more sensitive than averaging.

Say it like this: "If two sounds differ only in a brief burst at the end, averaging them over time goes blind to that burst four times faster than it should. Comparing the curves stays fair. Averaging can only lose information — and for brief events it loses badly."

The honest caveat — this part protects the whole claim

This result was originally labelled as ours. It was downgraded on 2026-07-26 after an actual literature check, and the papers say so.

The reason: the "falls to a quarter" half turns out to be classical — it's a standard property of this family of measures that any statistician would recognise, and the condition it needs is the standard condition too. The "halves" half is one line from the definition. Putting two textbook facts together is a thin claim to novelty, and six web searches finding nothing is weak evidence that nothing exists.

The measured effect stands completely untouched. What was withdrawn is only the claim to have discovered the mathematics underneath it. Teach it as: "the effect is real and measured; the maths behind it turned out to be classical, so we downgraded our own claim and printed the downgrade."

The name in the papers
The temporal-pooling theorem. "Pooling" is the jargon for averaging a sequence down to one summary.

Move 11Ignoring pitch

A man and a woman say the same vowel. Same vowel — but every frequency in it has moved. The engine as built so far will call them different, and it shouldn't.

The insight is about how frequency works. Going up an octave means doubling the frequency. So if you lay the buckets out on a scale where each step is a multiplication rather than an addition — the way a piano keyboard is laid out — then changing pitch just slides every bucket sideways by the same amount.

Which gives an obvious fix: try every possible slide, and keep the best match.

Why the slide costs nothing — and this is exact, not approximate

Look back at Move 3. To get the closeness number you multiply the buckets in pairs, square-root each, and add them all up.

Addition doesn't care what order you add in. 2 + 5 + 9 is the same as 9 + 2 + 5. So if you slide both lists by the same amount, you're adding up exactly the same set of numbers in a different order — and you get exactly the same total.

Here it is tested. Two random 8-bucket lists, slid together through all 8 positions:

slide     distance by angle       chi-squared      Wasserstein-1
  0      1.2319673088986400      0.2773124192     1.3864099180
  1      1.2319673088986400      0.2773124192     0.8929874312
  2      1.2319673088986400      0.2773124192     0.9436540201
  3      1.2319673088986405      0.2773124192     1.2977986517
  4      1.2319673088986400      0.2773124192     1.2598721832
  5      1.2319673088986400      0.2773124192     1.2736155293
  6      1.2319673088986400      0.2773124192     0.8929874312
  7      1.2319673088986405      0.2773124192     1.5387916435

biggest disagreement across all 8 slides:  0.00000000000000044

That last figure is 4.4 ten-thousandths of a trillionth — the last digit a computer can hold. It isn't "close". It's the same number, printed with rounding dust on it.

Now look at the third column. Wasserstein-1 jumps all over the place, because it's the one stick that reads which bucket is next to which — so wrapping the buckets round genuinely breaks it. It's therefore excluded from this part of the theory. Mentioning that exclusion is what shows you understand the mechanism instead of reciting the result.

What it buys

Measured on synthetic vowels: transposing the same vowel up by 6 buckets collapses the distance 61-fold (0.4611 down to 0.0075), while a genuinely different vowel stays far away (0.2911). That's a 39-fold separation between "same vowel, different pitch" and "different vowel" — and it repairs a misclassification the base engine gets wrong.

Plain version: it removes absolute pitch and keeps the spacing between the peaks — which is where the identity of a vowel actually lives.

Honest provenance

Ours as an extension — but shift-invariant distances and quotient metrics already exist in music-information-retrieval and in group theory. This is a specific, clean instance of a known idea, not a first.

Move 12The same trick, applied to time itself

Last piece, and it's the most elegant one.

Move 8's distance has a flaw: because of how the stretching works, it breaks rule 4 — the no-shortcuts rule. So strictly it's a divergence, not a fair metric. The fix is to apply the method's own founding move to the clock instead of the sound.

Here's the observation. A stretch is a schedule: go a bit slower here, a bit faster there. That schedule is made of speed-up factors that are never negative, and over the whole word they have to add up to exactly the length of the word.

Never negative. Adds to a fixed total. That's a distribution — the same object as Move 1. So square-root it, and the stretch schedule lands on a ball too.

Once you do that:

Measured: it's 15 to 35 times more stable than plain stretching when both recordings are warped at once.

Two boundaries to volunteer, not hide

One. The clean version is a fair metric on paper. The version actually running on chopped-up digital data carries about 1–5% slack on the no-shortcuts rule. Documented, not swept under.

Two. Throwing timing away entirely helps on handwriting and hurts on speech — because in speech, timing carries identity. So the default distance keeps ordinary stretching. This isn't discarded: it's the theory that makes the whole thing a genuine metric, and it supplies the shape/timing split whenever a task wants it.

The name in the papers
SRVF — square-root velocity representation (Srivastava and others, 2011; the ball-shaped version, Su and others, 2014). Read it as "the square root of time".

And the closing symmetry: pitch shifts (Move 11) and time stretches (Move 12) are both things we want to ignore, and once set up this way, both are ignored by the same mechanism.

Move 13The whole thing in six lines

  1. A moment of sound is a list of fractions that adds to 1.
  2. Square-root it and it sits on a ball. Automatically, always.
  3. Distance between two points on a ball is the angle between them.
  4. That angle is fair near zero. Plain subtraction isn't.
  5. A signal over time is a curve on the ball.
  6. Stretch time to line two curves up, add the angles, divide by the number of steps.

Everything else is a variation:

Glossary — the scary names, decoded

The nameWhat it actually is
Probability distributionA list of fractions that adds to 1.
FrameOne instant's worth of that list.
SimplexThe set of all lists that could possibly come out. With 3 buckets, a triangle.
Unit sphereThe surface of a ball of size 1. Where lists land after square-rooting.
Bhattacharyya coefficientMultiply the two lists pair by pair, square-root each, add them up. A closeness score from 0 to 1.
Fisher–Rao distanceThe angle between two points on that ball. The exact answer. Rao, 1945.
Ground metricWhichever stick you use for one instant against one instant.
MetricA stick obeying all four fairness rules, including no-shortcuts.
DivergenceA stick that obeys the first three but can break no-shortcuts. Chi-squared is one.
Dynamic Time Warping (DTW)Letting one instant match several, so different speeds can be compared. 1978.
GeodesicThe shortest path along a curved surface. The arc, not the tunnel.
SlerpWalking along that arc instead of cutting through.
Karcher / Fréchet meanThe average of a set of points, computed on the curved surface.
Temporal poolingAveraging a whole sequence down to one summary. The thing Move 10 argues against.
IsometryA change that moves things without changing any distance. Sliding all the buckets is one.
QuotientDeliberately treating a whole family of variants as one thing — "same vowel regardless of pitch".
SRVFThe square-root trick applied to the clock. Makes the distance a fair metric and splits shape from timing.