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)))