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# A padding cell is the one `cell` computes; an inside cell reads each input
385# at the slot its `Slot` names.
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{})

Uses (13)

Used by (2)