diff options
| author | Marshall Lochbaum <mwlochbaum@gmail.com> | 2020-08-02 22:23:53 -0400 |
|---|---|---|
| committer | Marshall Lochbaum <mwlochbaum@gmail.com> | 2020-08-02 22:27:18 -0400 |
| commit | c35791a84fe0a34c61704cead61af21dee352efc (patch) | |
| tree | f05bc5cb92669863a968aeada075a7827a2b7351 /impl.bqn | |
| parent | e1ce7b201e662757b62c480c8ae1c76e41ad8a5f (diff) | |
Performance improvements to Each and pervasion
Diffstat (limited to 'impl.bqn')
| -rw-r--r-- | impl.bqn | 24 |
1 files changed, 15 insertions, 9 deletions
@@ -33,23 +33,29 @@ ToArray ← <⍟(1-IsArray) ∾ ← {k←≠𝕨⋄k⊸≤◶⟨⊑⟜𝕨⋄-⟜k⊑𝕩˜⟩⌜↕k+≠𝕩} # LIMITED to two vector arguments _eachd←{ + _d←{ # Equal ranks + p←≢𝕨 + ! 1(⊑⟜p=⊑⟜(≢𝕩))⊸×´↕=𝕨 + p⥊ (⊑⟜(⥊𝕨)𝔽⊑⟜(⥊𝕩))⌜↕1×´p + } _e←{ # 𝕨 has smaller or equal rank - k←≠p←≢𝕨 ⋄ q←≢𝕩 - ! 1×´(⊑⟜p=⊑⟜q)⌜↕k - l←1×´(q⊑˜k⊸+)⌜↕q≠⊸-k + p←≢𝕨 ⋄ k←=𝕨 ⋄ q←≢𝕩 + ! 1(⊑⟜p=⊑⟜q)⊸×´↕k + l←1(q⊑˜k⊸+)⊸×´↕(=𝕩)-k a←⥊𝕨 ⋄ b←⥊𝕩 q⥊⥊(≠a) (⊑⟜a𝔽l⊸×⊸+⊑b˜)⌜○↕ l } - (>○=)◶⟨𝔽_e⋄𝔽˜_e˜⟩ + =○=◶⟨>○=◶⟨𝔽_e⋄𝔽˜_e˜⟩⋄𝔽_d⟩ } -⌜ ↩ {𝔽⌜○ToArray} -¨ ↩ {(𝔽⌜)⊘(𝔽_eachd○ToArray)} - _perv←{ # Pervasion - (⊢⊘(+-×)○IsArray)◶⟨𝔽⋄𝔽{𝕨𝔽_perv𝕩}¨⟩ + R←𝔽{𝕨𝔽_perv𝕩} + +○IsArray◶⟨𝔽⋄R⌜⊘(>○IsArray◶{𝕨{𝕗R𝕩}⌜𝕩}‿{𝕩{𝕩R𝕗}⌜𝕨})⋄R _eachd⟩ } +⌜ ↩ {𝔽⌜○ToArray} +¨ ↩ {(𝔽⌜)⊘(𝔽_eachd○ToArray)} + + ↩ + _perv - ↩ - _perv × ↩ (0⊸(<->) ⊘ ×) _perv @@ -68,7 +74,7 @@ _perv←{ # Pervasion = ↩ = ⊘ (= _perv) ≤ ↩ !∘0 ⊘ (≤ _perv) ≥ ← !∘0 ⊘ (≤˜_perv) -identity ← {(0⊑𝕨){𝕗=𝕩}◶𝕩‿(1⊑𝕨)}´ ⟨+‿0,-‿0,×‿1,÷‿1,⋆‿1,√‿1,∧‿1,∨‿0,|‿0,⌊‿∞,⌈‿¯∞,<‿0,≤‿1,=‿1,≥‿1,>‿0,≠‿0,0⊑⟨!∘0⟩⟩ +identity ← (0⊑⟨!∘0⟩) {(0⊑𝕨){𝕗=𝕩}◶𝕩‿(1⊑𝕨)}´ ⟨+‿0,-‿0,×‿1,÷‿1,⋆‿1,√‿1,∧‿1,∨‿0,|‿0,⌊‿∞,⌈‿¯∞,<‿0,≤‿1,=‿1,≥‿1,>‿0,≠‿0⟩ #⌜ |
