Documentation

Complexity.Algorithms.WordRAM.MatrixMultiplication.Schonhage.BandMeaning

Meaning of the native band indices #

Main results #

Digits three through six are exactly the inner left variables.

The same four digits classify the inner right variables.

An outer left digit is its ordinary base-three value.

An outer right digit is its ordinary base-three value.

The four inner left digits use the existing row-major pair numbering.

The four inner right digits use the same pair numbering.

theorem Cslib.Algorithms.WordRAM.MatrixMultiplication.Schonhage.BandPreparation.outer_digits_left {L m : ℕ} (u : Fin L → Fin 7) (h : (MatrixMultiplication.Schonhage.innerSetL fun (ℓ : Fin L) => Encoding.leftAt (u ℓ)).card = m) :
List.filter (fun (d : ℕ) => decide (d < 3)) (List.ofFn fun (ℓ : Fin L) => ↑(u ℓ)) = List.ofFn fun (k : Fin (L - m)) => ↑(MatrixMultiplication.Schonhage.outerPartL (fun (ℓ : Fin L) => Encoding.leftAt (u ℓ)) h k)

Base-three compression follows the increasing outer positions used by outerPartL.

theorem Cslib.Algorithms.WordRAM.MatrixMultiplication.Schonhage.BandPreparation.outer_digits_right {L m : ℕ} (u : Fin L → Fin 7) (h : (MatrixMultiplication.Schonhage.innerSetR fun (ℓ : Fin L) => Encoding.rightAt (u ℓ)).card = m) :
List.filter (fun (d : ℕ) => decide (d < 3)) (List.ofFn fun (ℓ : Fin L) => ↑(u ℓ)) = List.ofFn fun (k : Fin (L - m)) => ↑(MatrixMultiplication.Schonhage.outerPartR (fun (ℓ : Fin L) => Encoding.rightAt (u ℓ)) h k)

Base-three compression follows the increasing outer positions used by outerPartR.

theorem Cslib.Algorithms.WordRAM.MatrixMultiplication.Schonhage.BandPreparation.inner_digits_left {L m : ℕ} (u : Fin L → Fin 7) (h : (MatrixMultiplication.Schonhage.innerSetL fun (ℓ : Fin L) => Encoding.leftAt (u ℓ)).card = m) :
List.map (fun (d : ℕ) => d - 3) (List.filter (fun (d : ℕ) => decide ¬d < 3) (List.ofFn fun (ℓ : Fin L) => ↑(u ℓ))) = List.ofFn fun (k : Fin m) => ↑(finProdFinEquiv (MatrixMultiplication.Schonhage.innerPartL (fun (ℓ : Fin L) => Encoding.leftAt (u ℓ)) h k))

Base-four compression follows the increasing inner positions used by innerPartL.

theorem Cslib.Algorithms.WordRAM.MatrixMultiplication.Schonhage.BandPreparation.inner_digits_right {L m : ℕ} (u : Fin L → Fin 7) (h : (MatrixMultiplication.Schonhage.innerSetR fun (ℓ : Fin L) => Encoding.rightAt (u ℓ)).card = m) :
List.map (fun (d : ℕ) => d - 3) (List.filter (fun (d : ℕ) => decide ¬d < 3) (List.ofFn fun (ℓ : Fin L) => ↑(u ℓ))) = List.ofFn fun (k : Fin m) => ↑(finProdFinEquiv (MatrixMultiplication.Schonhage.innerPartR (fun (ℓ : Fin L) => Encoding.rightAt (u ℓ)) h k))

The right inner index uses the identical four pair digits.

Numeric specification of one guarded band-array read. matrix r k denotes an original matrix cell (or the transposed indexing of the right matrix); the native implementation computes its actual row-major address and loads it.

Instances For

    The numeric left-band specification is the unchanged mathematical bandArrayL for the computed deterministic layout, including all unselected strings and padding.

    The numeric right-band specification is the unchanged mathematical bandArrayR. Its natural row parameter refers to a column of the original right matrix.