def reduce_run

stelliferous@0.0.2.0 · tensor_access.bend:109

import stelliferous@0.0.2.0/tensor_access.bend as TensorAccess
import Base
import stelliferous@0.0.2.0/tensor_view.bend as Views
import stelliferous@0.0.2.0/traversal_array.bend as Traversal
import stelliferous@0.0.2.0/tensor_cursor.bend as Cursor

109def reduce_run(~Element: Data,~Accumulator: Data,~operation: Accumulator -> Element -> Accumulator,
110  fast: Bool,count: Nat,view: Views.View,storage: Array<Element>,initial: Accumulator) -> Array<Element> & Accumulator:
111  match fast:
112    case True{}:
113      Views.View{axes,offset} = view
114      Traversal.fold(~Array<Element>,~Element,~Accumulator,~Traversal.Offsets,~Traversal.source_offset(~Element),~operation,
115        count,0,storage,initial,Traversal.Offsets{offset,0})
116    case False{}:
117      Traversal.finish_fold(~Array<Element>,~Accumulator,~Cursor.Cursor,
118        Traversal.visit_fold(~Array<Element>,~Element,~Accumulator,~Cursor.Cursor,~Cursor.read(~Element),~operation,count,
119          Traversal.State{storage,initial,0,Cursor.prepare(view)}))

Uses (14)

Used by (3)