def scatter_when
stelliferous@0.0.2.0 · tensor_operations.bend:54
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
54
55
56def scatter_when(~Element: Data,valid: Bool,count: Maybe<&2,U32>,source: Views.View,+target: Views.View,
57 input: Storage.Buffer<Element>,output: Storage.Buffer<Element>) -> Outcome<(Storage.Buffer<Element> & Storage.Buffer<Element>)>:
58 match valid count:
59 case True{} Some{+count}:
60 Views.View{axes,+offset} = source
61 Storage.Buffer{input,input_length,input_certificate} = input
62 Storage.Buffer{output,output_length,output_certificate} = output
63 Accepted{pair_buffers(~Element,input_length,output_length,
64 Access.scatter_run(~Element,U32.to_nat(count),target,offset,input,output),
65 AccessCertificate.scatter(~Element,U32.to_nat(count),target,offset,input,output,input_certificate,output_certificate))}
66 case valid count: Rejected{(input,output)}