Orthogonality, measured

An iteration that only multiplies

Newton's iteration for the polar factor needs an inverse every step. Newton–Schulz needs only matrix products — nothing that reads an entry, nothing that pivots — and it converges if and only if every singular value is below √3. At 1.73205 it converges and at 1.73206 it returns an orthogonal matrix that is not the answer, with a residual of 5·10⁻¹⁶ and nothing to say so.

Worth reading first: The nearest orthogonal matrix · Orthogonal is a number · The condition number is an amplifier.

The polar factor of the previous essay was computed through a singular value decomposition, which is the most expensive factorisation in the subject. Nobody who wants to re-orthogonalise a rotation every millisecond is going to pay for one.

There are two iterations that get U without it, and the difference between them is the subject here. One converges faster and needs a factorisation every step. The other needs nothing but matrix products — no pivot, no comparison, no entry ever read — and pays for that in a step count and in a boundary.

Three iterations to the orthogonal polar factor, κ = 10^4Newton's iteration, X ← (X + X⁻ᵀ)/2, halves its error per step while it is far away and only becomes quadratic near the end: it is at 57 after six steps. Higham's scaling costs two norms and no extra factorisation and reaches thirteen digits in 7. Newton–Schulz, X ← X(3I − XᵀX)/2, uses no inverse at all — two matrix products a step and nothing that reads an entry — and needs 28 steps to get to the same place.159131721252910⁻¹⁶10⁻¹³10⁻¹⁰10⁻⁷10⁻⁴10⁻¹steprelative error in the orthogonal factorNewtonNewton, scaledNewton–Schulzone fixed point, three costsscaled Newton, steps7Newton–Schulz, steps28Newton at step 657scaled Newton at step 64.4·10⁻¹³a Newton step needs an inverseand a Schulz step needs two products
Fig. 1 Three iterations to the orthogonal polar factor of the same matrix. Newton, Newton with Higham’s scaling, and Newton–Schulz, which uses no inverse at all.

Newton, and what it is Newton’s method for

The orthogonal matrices are exactly the solutions of X⁻ᵀ = X. Applying Newton’s method to that equation gives

X ← (X + X⁻ᵀ)/2

started at A, and it converges to the orthogonal polar factor. It is a beautiful iteration — the scalar version is x ← (x + 1/x)/2, which is Heron’s method for √1 and converges to 1 from any positive start — and each step costs one LU factorisation and n triangular solve pairs, which is 2n³ operations.

Quadratic convergence, an inverse a step. And on a badly conditioned matrix it is much worse than that.

The first phase is linear, from a quadratic method

At κ = 10⁶ the unscaled iteration’s error goes

1.8·10⁵ → 8.9·10⁴ → 4.5·10⁴ → 2.2·10⁴ → 1.1·10⁴ → 5.6·10³ …

falling by exactly 0.5000 a step. That is linear convergence, from a method advertised as quadratic, and the ratios are 0.49999886, 0.49999772, 0.49999544 — not approximately a half.

The scalar map explains it. Each singular value σ follows σ ← (σ + 1/σ)/2 independently. For σ ≫ 1 the 1/σ term is negligible and the map is σ ← σ/2: halving. Only once σ is within a factor of a few of 1 does the quadratic behaviour start.

So the number of steps is about log₂ σ_max plus a handful, and σ_max is whatever the matrix’s largest singular value happens to be. A method whose step count depends on a scalar multiple of its input is in the same position as the Taylor series two essays ago, and for a related reason.

Three iterations to the orthogonal polar factor, κ = 10^1Newton's iteration, X ← (X + X⁻ᵀ)/2, halves its error per step while it is far away and only becomes quadratic near the end: it is at 1.9·10⁻⁶ after six steps. Higham's scaling costs two norms and no extra factorisation and reaches thirteen digits in 5. Newton–Schulz, X ← X(3I − XᵀX)/2, uses no inverse at all — two matrix products a step and nothing that reads an entry — and needs 11 steps to get to the same place.1471013161910⁻¹⁶10⁻¹³10⁻¹⁰10⁻⁷10⁻⁴10⁻¹steprelative error in the orthogonal factorNewtonNewton, scaledNewton–Schulzone fixed point, three costsscaled Newton, steps5Newton–Schulz, steps11Newton at step 61.9·10⁻⁶scaled Newton at step 67.5·10⁻¹⁶a Newton step needs an inverseand a Schulz step needs two products
Fig. 2 The same three iterations on a nearly orthogonal matrix, where every method converges in three or four steps because the starting point is already close to the fixed point.

The scaling, which is free

Higham’s remedy multiplies X by ζ and X⁻ᵀ by 1/ζ before averaging, with

ζ  =  ( ‖X⁻¹‖₁ ‖X⁻¹‖_∞ / ‖X‖₁ ‖X‖_∞ )^(1/4)

which is an estimate of 1/√(σ_max σ_min): it moves the singular values so that the largest and smallest are equally far from one. The inverse is already being computed, so the two extra norms are O(n²) on a step that costs O(n³) — the scaling is free.

step unscaled scaled
1 1.8·10⁵ 2.5·10²
2 8.9·10⁴ 5.7
3 4.5·10⁴ 0.43
4 2.2·10⁴ 1.7·10⁻³
5 1.1·10⁴ 1.7·10⁻⁶
6 5.6·10³ 2.6·10⁻¹²

Six steps against more than twelve, for two norms. This is worth stating as a habit rather than as a fact about one iteration: where a method’s early phase is governed by a scale, a scaling computed from quantities already in hand is almost always available and almost always ignored.

The condition number a sketched preconditioner leaves, against the condition number it was givenTwo curves against κ(A), both axes logarithmic. The matrix's own condition number climbs the diagonal from 100 to 10¹⁰; κ(AR⁻¹), where R comes from a QR of a 4n-row sketch, is 2.2284 at every one of them — the same number to ten digits, not a similar one. The reason is two lines of algebra: with G = SU the preconditioned singular values are those of (GᵀG)⁻¹, which has no spectrum of A in it at all.10²10⁴10⁶10⁸10¹⁰110²10⁴10⁶10⁸10¹⁰condition number of the matrixcondition number seen by the iterationκ(A), unchangedκ(AR⁻¹)a bound with no κ(A) in itκ(AR⁻¹), every κ(A)2.2κ(SU), the other route2.2κ(A), across the sweep10⁸κ(AR⁻¹), across the sweep1the sketch never sees the spectrumand the spectrum cancels out of the answer
Fig. 3 The same idea in the field that named it. A preconditioner changes the spectrum a method sees, and the question is always what it costs to build against what it saves in steps.

The iteration that never inverts

Newton–Schulz is

X ← X(3I − XᵀX)/2

Two matrix products a step. No factorisation, no pivot, no triangular solve, no comparison of any entry with any other. On a machine where a matrix multiply is a hundred times more efficient than a factorisation — which is to say, on every machine built in the last twenty years — that is a very different proposition from 2n³ of triangular solves.

Its whole theory is a scalar cubic. Each singular value follows

σ ← σ(3 − σ²)/2

whose fixed points are 0, 1 and −1, and whose basin of attraction around 1 is exactly the interval (0, √3).

σ ↦ σ(3 − σ²)/2, the map Newton–Schulz applies to every singular value, started at 1.6The cubic and the diagonal, with the iteration from 1.6 drawn as a cobweb. The fixed points are 0, 1 and −1, and zero is repelling — its slope there is 3/2. Every starting value in (0, √3) is carried to 1, so the matrix iteration converges exactly when every singular value is inside that interval; √3 = 1.7320508 is sent to exactly zero, and past it the sequence leaves. From 1.6 the limit is 1.000000.the whole convergence theory of an n×n iteration is this cubic√3start 1.610−1fixed points 0, 1, −1start1.6after one step0.35limit1the boundary, √31.7outside the basin it still convergesto an orthogonal matrix that is not the answer
Fig. 4 The cubic, with the iteration drawn as a cobweb. The fixed points are marked; the vertical line is √3. Drag the starting value across the boundary.

The boundary is sharp to five digits

Scale A so that its largest singular value is exactly α, and run the iteration to convergence:

α result
1.73205 converges, relative error 8.7·10⁻¹⁶
1.73206 does not converge to the answer

and √3 = 1.7320508. That is a two-sided measurement of a boundary, which is the form this site reaches for whenever a slider crosses one, and it is as sharp a boundary as the collection has.

What it does past the boundary is worse than diverging

Here is the finding, and it is not the one the theory suggests.

At α = 1.73206 the iteration converges. It converges to a matrix whose orthogonality residual ‖XᵀX − I‖ is 5.1·10⁻¹⁶ — orthogonal to the last bit — and whose relative error against the polar factor is 0.707.

One of the singular values was carried to −1 instead of +1. The result is an orthogonal matrix with a reflection in it, and nothing in the output says so. A caller checking that the answer is orthogonal gets a yes. A caller checking that the iteration converged gets a yes. The determinant is −1 instead of +1, which would catch it — and the determinant is the scalar this phase opened by arguing against, so it is not what anybody computes.

Past the cliff: what each method returnsLoss of orthogonality at four condition numbers past κ²u = 1. Cholesky QR returns a factor whose implied Q is 0.37 away from orthogonal at κ = 10⁸ and 1.49 at 10¹² — and at 3·10¹⁰ it refuses outright, on a pivot of -6.5·10⁻¹⁷. The sweep and the tree return a usable factorisation of every one of these matrices.‖QᵀQ − I‖ of the implied Qκ = 10⁸, Cholesky0.37κ = 10⁸, sweep8.5·10⁻⁹κ = 10¹⁰, Cholesky1.3κ = 10¹⁰, sweep3·10⁻⁷κ = 3·10¹⁰, Choleskyrefusedκ = 3·10¹⁰, sweep6.7·10⁻⁶κ = 10¹², Cholesky1.5κ = 10¹², sweep1.4·10⁻⁴the safe run is the one that failsrefusals in the range1wholly non-orthogonal returns2the pivot it refused on-6.5·10⁻¹⁷one of these outcomes is safeand it is the refusal
Fig. 5 The site’s standing distinction. An iteration that overflows is in the left half of this; one that returns a plausible orthogonal matrix is in the right.

And past that, the limit is not a function of anything

The cubic’s behaviour outside (0, √3) is not a simple divergence. Three starting values agreeing to five digits:

2.23600  →   1
2.23606  →  −1
2.23607  →  ∞

The second boundary is √5 = 2.2360680. Between √3 and √5 the map folds the interval onto a wider one and the dynamics are chaotic: which fixed point a starting value reaches is not a continuous function of it, and no amount of care in choosing α helps.

Only the third of those three outcomes is visible from the output. The first is right, the second is orthogonal and wrong, and the third overflows.

So the practical rule is not check whether it converged. It is: scale first, and scale conservatively. Dividing A by ‖A‖_F guarantees every singular value is at most 1, which is safely inside the basin, and costs one pass over the matrix.

A box rotated 20 times, and the smallest box containing itTwo widths against the number of rotations, on a logarithmic vertical axis. The set's width is a flat line, because a rotation is an isometry. The interval enclosure's climbs geometrically — by a factor of 1.4142 a step against a predicted √2 — and after 20 rotations it is 1024 times larger than the thing it encloses.036912151810¹10²10³rotationswidththe enclosurethe seta rotation is an isometrymeasured growth a step1.4√2, from the geometry1.4enclosure ÷ set after 201024no rounding error is responsible for any of thisa higher precision does not touch it
Fig. 6 The general shape of a method whose behaviour past a threshold is not a continuous function of where it started. The site has met this before and the honest response is the same: keep away from the threshold rather than detect it.
Every box a search over [−3, 3]² leaves behind, at a stopping width of 0.05A square divided into rectangles of three kinds. 42 are proved to contain no root at all; 2 are proved to contain exactly one, and each holds one of the two roots at (±√2, ±√2); 0 are undecided. The whole square is covered, and it took 87 evaluations of the operator.grey: proved empty · filled: proved to contain exactly one roota covered squareboxes proved empty42boxes proved unique2undecided0operator evaluations87every rectangle carries a proofand the two crosshairs are where the roots are
Fig. 7 And the alternative discipline, from the interval field: prove containment rather than check afterwards. Scaling into the basin is that argument applied to an iteration.

Why the residual is the wrong stopping test here

Every iteration in this essay has to decide when to stop, and the obvious test is unavailable for an interesting reason.

For a linear solve the residual b − Ax̂ is computable and cheap, and it decides. For the polar factor the natural analogue is ‖XᵀX − I‖ — how orthogonal is the current iterate — and it does not decide, because it is small for every orthogonal matrix and the iteration has more than one orthogonal fixed point.

The measurement above makes that concrete: past the basin, ‖XᵀX − I‖ reaches 5·10⁻¹⁶ and the answer is wrong. A stopping test built on it stops, and reports success, on a matrix with a reflection in it.

What does decide is the step size — ‖X_{k+1} − X_k‖ — because the map is a contraction near its fixed point and the increment goes to zero only at one. It costs nothing beyond the step already being taken. It is also, notably, the test that a Newton iteration for a scalar root would use, and the reason the matrix version reaches for the residual instead is that the residual exists, which is a poor reason.

A quantity that is small for every fixed point cannot distinguish between them. That sentence is worth carrying past this essay: several of this site’s methods have more than one fixed point and the convention is to test the one thing they have in common.

Loss of orthogonality against condition number, in binary32A log–log plot of the norm of Q-transpose-Q minus the identity against condition number. Classical Gram–Schmidt rises steeply, modified Gram–Schmidt rises gently, and Householder is flat.110²10⁴10⁶10⁸10¹⁰10¹²10⁻¹⁷10⁻¹⁴10⁻¹¹10⁻⁸10⁻⁵10⁻²10¹condition number κ(A)‖QᵀQ − I‖classicalmodifiedHouseholderκ²uκu8×8, eight seeds per κ, binary32all three reconstruct A
Fig. 8 The quantity in question, measured across an orthogonalisation. It is the right measure of whether a matrix is orthogonal and the wrong measure of whether it is the right orthogonal matrix.
Adding 0.1 to 256, a thousand times, at 8 significand bitsThree lines against the number of additions: the exact total rising steadily, a staircase following it, and a flat line at the starting value.02505007501000250275300325350375additionsrunning totalround to nearest: nothing arrivesexactstochasticnearesta thousand additionshalf an ulp at 2561moves, round to nearest0moves, stochastic46relative error, nearest0.28relative error, stochastic0.0228 significand bits, unbounded exponenta flat line is not a small error
Fig. 9 And the failure a step-size test catches and a residual test does not: an iteration that has stopped moving towards anything.

What the inverse-free method charges

Step counts to thirteen digits, on matrices of prescribed conditioning:

κ Newton–Schulz scaled Newton
10 11
10² 16
10³ 22
10⁴ 28 6

The slope is 5.67 steps a decade of κ, and log 10/log 1.5 = 5.68. That is not a fitted constant with a plausible story attached; it is the closed form. A singular value below one is multiplied by about 3/2 per step while it is small — the map’s derivative at zero is 3/2 — so the number of steps to bring σ_min up to one is log κ / log 1.5.

So the trade is exact and stateable: the inverse-free method pays for what it does not do in a step count proportional to log κ, at two matrix products a step, against a method that pays a factorisation a step and needs six of them.

Which is better depends on the ratio of a matrix multiply to a factorisation on the machine in hand, and on κ. At κ = 10 and a multiply that is fifty times cheaper, Newton–Schulz wins comfortably. At κ = 10⁶ it needs about forty steps and the arithmetic is close.

A 6.25-bit block format against 8-bit E4M3, read two waysFour curves of relative error against the spread of the data. Two, for the block format, rise steeply when read as a median and gently when read as a norm; the other two are nearly flat.048121610⁻²10⁻¹1octaves of spread within a blockrelative errorblock, medianblock, 2-normE4M3, medianE4M3, 2-normthe same data, two readingsblock format, bits a value6.3norm across 16 octaves1.8median across 16 octaves62entries deleted at the wide end383640 values, blocks of 32a norm is dominated by what a block format keeps
Fig. 10 The crossing that decides it, in the form the cost field states it. A method with more operations and better locality is not automatically slower, and the answer is a property of the machine.
Communication for a 512×12 factorisation on 16 processorsTwo counts for the same factorisation. Rounds on the critical path: 48 for the column sweep, 4 for the reduction tree, 4 for Cholesky QR — a factor of n between the first and the other two. Words sent: 1170, 1170 and 2160 — the sweep and the tree send the same number, and the method with the fewest rounds sends the most.rounds on the critical pathHouseholder sweep48reduction tree4Cholesky QR4words sentHouseholder sweep1170reduction tree1170Cholesky QR2160two counts, two rankingsrounds, sweep ÷ tree12words, Cholesky ÷ tree1.8arithmetic, tree ÷ sweep1.5the rounds separate the threeand the words do not
Fig. 11 And the same question counted in data moved rather than in operations, which is the measure that has decided such comparisons for about thirty years.

Where the products go, which is not obvious

Two matrix products a step sounds like a small thing until the sizes are put in.

Newton–Schulz on an n×n matrix is 2 × 2n³ = 4n³ operations a step, against a Newton step’s factorisation and n solve pairs, which is also about 2n³. So per step the inverse-free method is twice the arithmetic, not half — and it needs more steps.

The reason it is preferred anywhere is that the arithmetic is not the cost. A matrix multiply runs at close to a machine’s peak rate: it is O(n³) operations over O(n²) data, so every number loaded is used n times, and every processor built since the nineties has been designed around exactly that access pattern. A triangular solve is O(n²) operations over O(n²) data and is a sequence of dependent steps; it runs at a fraction of peak, and on a distributed machine it needs a global communication per column.

This is the cost field’s whole argument arriving in an orthogonalisation. The operation count says Newton wins by a factor of five or ten; the measured time can go either way, and on a GPU or a large distributed machine it usually goes the other way.

That is the honest reason to write down a method that does twice the arithmetic and takes four times the steps. It is not elegance and it is not accuracy; it is that a matrix multiply is the operation hardware is built for and a factorisation is not.

Words moved against the block size, n = 48, M = 100A U-shaped curve on logarithmic axes. Too small a block refactors the panel too often; too large a block does not fit in the fast memory and the tiled update evicts what it is about to read. The minimum is at b = 8, which is √M − 2. The three-line count says √(M/3) = 5, which has the right scaling and the wrong constant.110¹10⁴10⁵block size bwords movedthe count: √(M/3) = 5measured best: b = 8words movedat the best block1.6·10⁴at b = 13.9·10⁴at b = 243.9·10⁴derived from M with no measurement, and scannedthe two agree
Fig. 12 The measurement that makes the case: the same arithmetic in a different order, at a different price, because of what it does to memory.
What 4 layers save, against the size of the machineThe traffic of a flat layout divided by the traffic of a 4-layer one, at four processor counts, on a logarithmic horizontal axis. The upper line is the √4 the asymptotic analysis promises and the lower one is break-even. The measurement runs from 0.88 at 64 processors — a loss — to 1.44 at 576, and it is the same curve at every matrix size, because every word counted here is exactly proportional to n².10²11.251.51.7522.25processorstraffic saved, as a factorthe √4 the law promisesbreak-evenmeasureda limit is not a sizesaving at p = 640.88saving at p = 5761.4what the law promises2memory, as a factor4a loss at sixty-four processorsand 72% of the law at five hundred
Fig. 13 And the distributed version, where the currency is messages rather than words and a factorisation’s dependencies are what it costs.

The same iteration under three names

The Newton iteration for the polar factor, the Newton iteration for the matrix sign function, and the Newton iteration for a matrix square root are the same iteration wearing different clothes.

sign:    X ← (X + X⁻¹)/2
polar:   X ← (X + X⁻ᵀ)/2

and sign(A) applied to the block matrix [0 A; Aᵀ 0] returns [0 U; Uᵀ 0] with U the polar factor. One iteration, three literatures, three sets of convergence proofs written independently.

Newton–Schulz has the same triple life, and in each of them it is reached for under the same pressure: a setting where a factorisation is expensive or impossible. Lattice field theory applies the sign function to an operator of order 10⁷ that exists only as a subroutine. Machine learning orthogonalises weight matrices inside a training loop where a matrix multiply is what the hardware does. Neither could invert anything if it wanted to.

Error of a difference quotient for J(x)v against ε, on the Bratu problem at n = 64The Jacobian of this problem is a formula, so the error of each quotient is measured against a derivative that is exact rather than against a better quotient. The forward difference falls with a slope of 1.01 — first order — reaches 1.28·10⁻¹⁰ at ε = 10^-6, and rises again with a slope of -1.00 as cancellation takes over. The central difference falls with a slope of 2.00 and bottoms at 1.11·10⁻¹² for two residual evaluations instead of one. Neither gets near the unit roundoff at any ε.10⁻¹⁷10⁻¹⁵10⁻¹³10⁻¹¹10⁻⁹10⁻⁷10⁻⁵10⁻³10⁻¹10⁻¹⁴10⁻¹²10⁻¹⁰10⁻⁸10⁻⁶10⁻⁴10⁻²1εrelative error in J(x)vforwardcentralcancellationtruncationagainst a derivative that is exactforward floor1.3·10⁻¹⁰central floor1.1·10⁻¹²truncation slope, forward1truncation slope, central2no ε reaches the roundoffand the analytic derivative is free of the choice
Fig. 14 The setting both of those are in: an operator available only as a product with a vector, where every method that reads an entry is unavailable. The last essay of this phase is about what that costs.
‖A − Q‖_F for four orthogonal matrices, on an 8×8 matrix with κ = 10The polar factor is 1.8554 from A. QR with its column signs fixed is 2.1265 — 15 per cent further. QR as Householder returns it, with 7 of 8 columns negated, is 3.8226, which is further than the best of two hundred orthogonal matrices drawn at random. The strip beneath the bars is those two hundred draws, whose best is 2.6928; the polar factor is to the left of all of them, which is the minimisation being checked rather than assumed.how far is it from A to an orthogonal matrix?smaller is nearer · the polar factor minimises this in every unitarily invariant normpolar factor U1.8554QR, signs fixed2.1265QR as returned3.8226200 drawn at randomκ = 10polar factor1.9QR, signs fixed2.1QR as returned3.8best of 200 random2.7‖A − QR‖ is the same either wayand ‖A − Q‖ is not
Fig. 15 And the object all three iterations are converging to, from the previous essay.

Higher orders, which buy steps with products

Newton–Schulz is the first member of a family, and the family is worth knowing because it makes the trade explicit rather than fixed.

The scalar map σ ← σ(3 − σ²)/2 is the order-2 member of a sequence obtained by truncating the binomial series for (1 − x)^(−1/2). The next one is

X  ←  X (15I − 10 XᵀX + 3 (XᵀX)²) / 8

which converges cubically rather than quadratically, costs four matrix products a step instead of two, and has the same basin — the polynomials all fix ±1 and all have their real basin bounded by where the derivative condition fails. So a higher order buys a lower step count at a proportionally higher cost per step, and the product of the two is roughly constant near convergence.

Where it is not constant is at the start, on a badly conditioned matrix, and that is the half worth knowing. The convergence there is governed by how fast a small singular value is amplified: the order-2 map multiplies it by 3/2 a step and the order-3 map by 15/8, so the number of steps to bring σ_min up to one goes from log κ/log 1.5 to log κ/log 1.875, which is a factor of 1.55 fewer steps for a factor of 2 more products. The higher-order member is worse on the approach and better at the end, and the practical answer is to switch: run the cheap map until the iterate is inside a small neighbourhood of orthogonality, then finish with the expensive one.

That is a familiar shape — it is the same reason Newton’s method is preceded by a bisection, and the same reason the scaled Newton iteration exists at all. An iteration with a slow approach and a fast end is two algorithms with a hand-over, and the interesting parameter is where the hand-over goes rather than which iteration is better.

Two Krylov methods against products with A, at a kernel shift of 2Two error curves against the number of products with A, on a logarithmic vertical axis. The Arnoldi method reaches 0.1724 after 5 products and is 4.46 by the end of the run. The bidiagonal method reaches 0.1374 after 36 and degrades far more slowly.16111621263136414651566110⁻¹110¹products with Arelative errorArnoldi's best: 5Arnoldibidiagonalwhat a step buysArnoldi's best0.17products to reach it5bidiagonal's best0.14products to reach it36a tenth of the work to the same answerand no time at all spent there
Fig. 16 The general shape: a phase governed by one rate followed by a phase governed by another, where the sensible thing is a different method in each. Every iteration in this essay has it.

What is worth carrying

A quadratically convergent method is linear until it is close, and close can be twenty steps away. The unscaled Newton iteration halves its error for the first phase, and the length of that phase is log₂ of the largest singular value.

A scaling built from quantities already computed is free and is worth six steps here. Two norms of a matrix whose inverse is being formed anyway.

And an inverse-free iteration has a basin, sharply. Below √3 it converges; above it, it converges to an orthogonal matrix that is not the answer and reports nothing; above √5 it overflows. Scale into the basin rather than detecting the failure, because two of the three failures are invisible.

The last essay of this phase takes the property that made Newton–Schulz attractive — that it never reads an entry — and asks what an operator with no entries at all costs: an operator with no entries.

What links here

Computed from the collection, not written here: the essays that point at this one.

Shares its objects with

Essays that name at least two of the same things, and that neither author linked.

Named objects

A flat tag is an object no other essay names yet.

Condition numberConvergence rateFixed pointFlop countMatrix-freeNewton iterationOrthogonalityPolar decomposition