WEBVTT

00:00:00.102 --> 00:00:02.511
Add six one thousand twenty-four times.

00:00:03.402 --> 00:00:05.077
The answer is six thousand one

00:00:05.090 --> 00:00:06.211
hundred forty-four.

00:00:07.100 --> 00:00:08.698
In one M L X CPU

00:00:08.711 --> 00:00:11.057
path, I measured two thousand forty-eight

00:00:11.070 --> 00:00:12.564
using B float sixteen.

00:00:13.835 --> 00:00:15.691
The inputs and answer are exactly

00:00:15.703 --> 00:00:16.554
representable.

00:00:17.445 --> 00:00:19.030
But this path rounds its running

00:00:19.043 --> 00:00:20.473
sum after every addition.

00:00:21.362 --> 00:00:23.811
An equivalent transposed calculation uses

00:00:23.824 --> 00:00:25.769
a wider accumulator and returns the

00:00:25.782 --> 00:00:26.697
correct answer.

00:00:27.957 --> 00:00:30.006
Across the selected grid, a local

00:00:30.019 --> 00:00:32.338
float thirty-two accumulator removes every

00:00:32.351 --> 00:00:33.111
mismatch.

00:00:34.002 --> 00:00:35.961
Reverting only its precision brings the

00:00:35.974 --> 00:00:38.345
original results back, byte for byte.

00:00:39.624 --> 00:00:41.428
This is a CPU audit, with

00:00:41.441 --> 00:00:43.116
known related numerical work.

00:00:44.007 --> 00:00:46.442
GPU behavior and complete models remain

00:00:46.455 --> 00:00:47.138
untested.

00:00:48.027 --> 00:00:50.411
The source, raw data, local patch,

00:00:50.592 --> 00:00:52.228
and checks accompany the report.
