def dot_right_status

bendtorch-core@0.1.0.0 · src/tensor/matmul_PROOF.bend:719

import bendtorch-core@0.1.0.0/src/tensor/matmul_PROOF.bend as MatmulPROOF
import Base
import bendtorch-core@0.1.0.0/src/shape/core.bend as Shape
import bendtorch-core@0.1.0.0/src/tensor/core.bend as Core
import bendtorch-core@0.1.0.0/src/tensor/matmul.bend as Matrix
import bendtorch-core@0.1.0.0/src/tensor/math_totality.bend as Totality
import bendtorch-core@0.1.0.0/src/tensor/transform_totality.bend as TransformTotality
import bendtorch-core@0.1.0.0/src/storage/arith.bend as Arith

719def dot_right_status(+fuel: Nat, +left: Shape.Shape, +right: Shape.Shape, +row: U32, +column: U32, +cursor: Nat,
720  +left_value: F32, +accumulator: F32,
721  pair: Core.Tensor<right> & Result<&2, &2, Core.Error, F32>, a: Core.Tensor<left>,
722  -successful: {TransformTotality.read_succeeded(right, pair) == True{} : Bool},
723  -rec: @a: Core.Tensor<left> -> @b: Core.Tensor<right> -> @+value: F32 -> Totality.Status<Matrix.Error, Core.Tensor<left> & Core.Tensor<right> & F32,
724    Matrix.natural_dot(fuel, left, right, a, b, row, column, 1n+cursor, value)>) ->
725  Totality.Status<Matrix.Error, Core.Tensor<left> & Core.Tensor<right> & F32, Matrix.right_read(left, right,
726    a => b => value => Matrix.natural_dot(fuel, left, right, a, b, row, column, 1n+cursor, value), a, left_value, accumulator, pair)>:
727  (b, result) = pair
728  match result:
729    case Fail{error}:
730      Totality.Status{Empty.absurd({False{} == True{} : Bool}, Arith.clash(successful))}
731    case Done{+value}:
732      Totality.Status{{\{Totality.Status: successful => successful} :
733        Totality.Status<Matrix.Error, Core.Tensor<left> & Core.Tensor<right> & F32,
734          Matrix.natural_dot(fuel, left, right, a, b, row, column, 1n+cursor, F32.add(accumulator, F32.mul(left_value, value)))> ->
735            {Result.is_done(&2, &1, Matrix.Error, Core.Tensor<left> & Core.Tensor<right> & F32,
736              Matrix.natural_dot(fuel, left, right, a, b, row, column, 1n+cursor, F32.add(accumulator, F32.mul(left_value, value)))) == True{} : Bool}}(
737                rec(a, b, F32.add(accumulator, F32.mul(left_value, value))))}

Uses (20)

Used by (1)