def reduce_when

stelliferous@0.0.2.0 · tensor_operations.bend:269

import stelliferous@0.0.2.0/tensor_operations.bend as TensorOperations
import Base
import stelliferous@0.0.2.0/storage_buffer.bend as Storage
import stelliferous@0.0.2.0/tensor_view.bend as Views
import stelliferous@0.0.2.0/tensor_access.bend as Access
import stelliferous@0.0.2.0/proofs/tensor_access_certificate.bend as AccessCertificate

269def reduce_when(~Element: Data,~Accumulator: Data,~operation: Accumulator -> Element -> Accumulator,
270  valid: Bool,count: Maybe<&2,U32>,+view: Views.View,buffer: Storage.Buffer<Element>,initial: Accumulator) ->
271  Outcome<(Storage.Buffer<Element> & Accumulator)>:
272  match valid count:
273    case True{} Some{+count}:
274      Storage.Buffer{storage,length,certificate} = buffer
275      +fast = Views.is_contiguous(view)
276      Accepted{reduce_buffer(~Element,~Accumulator,length,
277        Access.reduce_run(~Element,~Accumulator,~operation,fast,U32.to_nat(count),view,storage,initial),
278        AccessCertificate.reduce(~Element,~Accumulator,~operation,fast,U32.to_nat(count),view,storage,initial,certificate))}
279    case valid count: Rejected{(buffer,initial)}

Uses (13)

Used by (1)