def cell_by
bendtorch-core@0.1.0.0 · src/tensor/elementwise.bend:384
import bendtorch-core@0.1.0.0/src/tensor/elementwise.bend as Elementwise
import Base
import bendtorch-core@0.1.0.0/src/shape/core.bend as Shape
384
385
386def cell_by(inside: Bool, +left: Slot, +right: Slot, +operation: Operation, -le: List<&2, Nat>, -re: List<&2, Nat>, -oe: List<&2, Nat>,
387 +map: Shape.Index<le, re, oe>, +position: Nat, la: Array<F32>, ra: Array<F32>) ->
388 F32 & (Array<F32> & Array<F32>):
389 match inside left right:
390 case False{} left right:
391 cell(operation, le, re, oe, map, position, la, ra, False{})
392 case True{} OwnSlot{} OwnSlot{}:
393 direct_cell(operation, position, position, la, ra)
394 case True{} OwnSlot{} FirstSlot{}:
395 direct_cell(operation, position, 0n, la, ra)
396 case True{} OwnSlot{} WalkedSlot{}:
397 direct_cell(operation, position, right_walk(le, re, oe, map, position), la, ra)
398 case True{} FirstSlot{} OwnSlot{}:
399 direct_cell(operation, 0n, position, la, ra)
400 case True{} FirstSlot{} FirstSlot{}:
401 direct_cell(operation, 0n, 0n, la, ra)
402 case True{} FirstSlot{} WalkedSlot{}:
403 direct_cell(operation, 0n, right_walk(le, re, oe, map, position), la, ra)
404 case True{} WalkedSlot{} OwnSlot{}:
405 direct_cell(operation, left_walk(le, re, oe, map, position), position, la, ra)
406 case True{} WalkedSlot{} FirstSlot{}:
407 direct_cell(operation, left_walk(le, re, oe, map, position), 0n, la, ra)
408 case True{} WalkedSlot{} WalkedSlot{}:
409 cell(operation, le, re, oe, map, position, la, ra, True{})