def dot_snoc

bendtorch-core@0.1.0.0 · src/tensor/contracts/dot_proof.bend:20

import bendtorch-core@0.1.0.0/src/tensor/contracts/dot_proof.bend as DotProof
import Base
import bendtorch-core@0.1.0.0/src/tensor/dot_fold.bend as DotFold

20def dot_snoc(+values: List<&2, DotFold.Factors>, +left: F32, +right: F32, +accumulator: F32) ->
21  {DotFold.dot_fold(List.append(&2, DotFold.Factors, values, [DotFold.Factors{left, right}]), accumulator) ==
22    F32.add(DotFold.dot_fold(values, accumulator), F32.mul(left, right)) : F32}:
23  match values:
24    case Nil{}:
25      {==}
26    case DotFold.Factors{+a, +b} <> +rest:
27      dot_snoc(rest, left, right, F32.add(accumulator, F32.mul(a, b)))

Uses (7)

Used by (3)