def block

bendtorch-core@0.1.0.0 · src/autograd/reduce_fiber_proof.bend:536

import bendtorch-core@0.1.0.0/src/autograd/reduce_fiber_proof.bend as ReduceFiberProof
import Base
import bendtorch-core@0.1.0.0/src/shape/core.bend as Shape
import bendtorch-core@0.1.0.0/src/shape/broadcast_proofs.bend as Broadcast
import bendtorch-core@0.1.0.0/src/storage/api.bend as Api

536# The first block of a row, at cursor digit * stride: the rows below at
537# base + right * digit.
538def block(+stride: Nat, +left: Nat, +right: Nat, +rest: List<&2, Shape.Row>, +target: Nat, +inner: Nat, +base: Nat, +digit: Nat,
539  +mode: MaskMode<left, digit, target, inner>) ->
540  {masked(stride, Shape.Row{stride, left, right} <> rest, target, base, Nat.mul(digit, stride)) ==
541    masked(stride, rest, inner, Nat.add(base, Nat.mul(right, digit)), 0n) : List<&2, Nat>}:
542  %Broadcast.add_zero(Nat.mul(digit, stride)) :
543    {masked(stride, Shape.Row{stride, left, right} <> rest, target, base, _) ==
544      masked(stride, rest, inner, Nat.add(base, Nat.mul(right, digit)), 0n) : List<&2, Nat>}
545  shifted(stride, stride, left, right, rest, target, inner, base, digit, 0n, Api.le_refl(stride), mode)

Uses (10)

Used by (2)