aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMarshall Lochbaum <mwlochbaum@gmail.com>2021-11-23 21:13:38 -0500
committerMarshall Lochbaum <mwlochbaum@gmail.com>2021-11-23 21:15:01 -0500
commit07362371b55c297b53591ad678fabee111941853 (patch)
tree97a58d25e3e3f87e8f4718a4645ac231f8ce72c7 /src
parent63cbe030ab90950737558daefd967c868dd8f93c (diff)
Fix metadata generation for inverse-only block
Diffstat (limited to 'src')
-rw-r--r--src/c.bqn7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/c.bqn b/src/c.bqn
index 70e02b11..7f6a8460 100644
--- a/src/c.bqn
+++ b/src/c.bqn
@@ -322,9 +322,10 @@ Parse ← {r‿vn‿i‿e‿def←𝕨⋄nv←≠vn
MI←-⊸↓˜⟜≠∾g⊏˜⊢⋄oj←(rt-∘≠⊸⌽oi⌊1-˜≠i)Mi∾⟨1-˜at,oa,fa⟩
ind←⟨oj,oj Mi fa⊏IT»¬ro∨ma⟩(¯1∾˜or⊏(≠rt)⊸⌽)⊸⊏¨i‿e
# Indices for multi-body blocks
- cj←/cv←1+1=ciw←cw⊏˜ci←/cm∨↩fx∧1≠cw
- ck←4⌊(2×ci⊏ut⌾(ch⊸/)0¨ch)+1<ciw
- cg←¯1+`cif←ci⊏cf
+ cm∨↩(fx∧1≠cw)∨0<ut↩ut⌾(ch⊸/)ch # Dyad- and inverse-only generate as multiple
+ cj←/cv←1+1=ciw←cw⊏˜ci←/cm # Number of copies
+ ck←4⌊(2×ci⊏ut)+1<ciw # Position
+ cg←¯1+`cif←ci⊏cf # Which block
ckt←(2-¬(cf∧cm)/fx)⌈(cif/·⍋⊏⟜cg)⊸⊏∘⍒⊸⊏cv+ck
ci↩ckt/⊸⊔(¯1(↑∾˜cj(⊒∘⊣+⊏)ck+cg⊏↓)0∾+`ckt)⊔cj⊏ci
# Output