def rmsb_w

bendtorch@1.3.0.0 · main.bend:1639

import bendtorch@1.3.0.0/main.bend as Bendtorch
import Base

1639# dx[off + j] = ((dy[j]·g[j]) - (x[j]·r)·m)·r and dg[j] += dy[j]·(x[j]·r), j = jj..jj + k
1640def rmsb_w(k: Nat, +j: U32, +off: U32, +r: F32, +m: F32, dx: Array<F32>, dg: Array<F32>, rx: Array<F32> & F32, rd: Array<F32> & F32, rg: Array<F32> & F32) -> R5:
1641  match k rx rd rg:
1642    case 0n Tuple{x, +a} Tuple{dy, +b} Tuple{g, +c}:
1643      +xh = (a * r : F32)
1644      R5{x, dy, g, Array.set(F32, dx, (off + j : U32), (((b * c : F32) - (xh * m : F32) : F32) * r : F32)), dg_add(j, (b * xh : F32), Array.get(F32, dg, j))}
1645    case 1n+p Tuple{x, +a} Tuple{dy, +b} Tuple{g, +c}:
1646      +xh = (a * r : F32)
1647      rmsb_w(p, (j + 1 : U32), off, r, m, Array.set(F32, dx, (off + j : U32), (((b * c : F32) - (xh * m : F32) : F32) * r : F32)), dg_add(j, (b * xh : F32), Array.get(F32, dg, j)), Array.get(F32, x, ((off + j : U32) + 1 : U32)), Array.get(F32, dy, ((off + j : U32) + 1 : U32)), Array.get(F32, g, (j + 1 : U32)))

Uses (13)

Used by (1)