def carry

stelliferous@0.0.2.0 · tensor_cursor.bend:38

import stelliferous@0.0.2.0/tensor_cursor.bend as TensorCursor
import Base

38def carry(axes: List<&2,Axis>,address: U32,reset: List<&2,Axis>) -> List<&2,Axis> & U32:
39  match axes:
40    case []: (restore(reset,[]),address)
41    case Axis{extent,0n,stride,rewind} <> tail: (restore(reset,Axis{extent,0n,stride,rewind} <> tail),address)
42    case Axis{+extent,1n,stride,+rewind} <> tail: carry(tail,(address - rewind : U32),Axis{extent,extent,stride,rewind} <> reset)
43    case Axis{extent,1n+1n+remaining,+stride,rewind} <> tail:
44      (restore(reset,Axis{extent,1n+remaining,stride,rewind} <> tail),(address + stride : U32))

Uses (9)

Used by (1)