|
|
Line 132: |
Line 132: |
| assert←{0≡⍵:'no common frame prefix' ⎕SIGNAL 4 ⋄ ⍵} | | assert←{0≡⍵:'no common frame prefix' ⎕SIGNAL 4 ⋄ ⍵} |
| r←1↓⌽3⍴⌽⍵⍵ ⋄ pp←≢¨p←⍴¨⍺⍵ ⍝ dyadic ranks, array ranks | | r←1↓⌽3⍴⌽⍵⍵ ⋄ pp←≢¨p←⍴¨⍺⍵ ⍝ dyadic ranks, array ranks |
| c←r{⍺≥0:⍺⌊⍵ ⋄ ⍵≤∣⍺:0⌈⍺+⍵ ⋄ ⍺+⍵}¨pp ⍝ cell ranks | | c←r{⍺>0:⍺⌊⍵ ⋄ 0⌈⍺+⍵}¨pp ⍝ cell ranks |
| fl fr←(-c)↓¨p ⍝ frames | | fl fr←(-c)↓¨p ⍝ frames |
| s←fl{⍺<⍥≢⍵:⍺ ⋄ ⍵}fr ⍝ shorter frame | | s←fl{⍺<⍥≢⍵:⍺ ⋄ ⍵}fr ⍝ shorter frame |
Line 152: |
Line 152: |
| </syntaxhighlight> | | </syntaxhighlight> |
| {{Works in|[[Dyalog APL]]}} | | {{Works in|[[Dyalog APL]]}} |
|
| |
| The <syntaxhighlight lang=apl inline>c←r{⍺≥0:⍺⌊⍵ ⋄ ⍵≤∣⍺:0⌈⍺+⍵ ⋄ ⍺+⍵}¨pp ⍝ cell ranks</syntaxhighlight> line of <syntaxhighlight lang=apl inline>_FA_</syntaxhighlight> addresses various asymmetries in computing cell rank. The table below shows the cell ranks corresponding to pairs of operand and argument ranks.
| |
| {|class=wikitable
| |
| ! operand rank !! argument rank !! resultant cell rank
| |
| |-
| |
| | <syntaxhighlight lang=apl inline>¯5</syntaxhighlight> || <syntaxhighlight lang=apl inline>3</syntaxhighlight> || <syntaxhighlight lang=apl inline>0</syntaxhighlight>
| |
| |-
| |
| | <syntaxhighlight lang=apl inline>¯3</syntaxhighlight> || <syntaxhighlight lang=apl inline>5</syntaxhighlight> || <syntaxhighlight lang=apl inline>2</syntaxhighlight>
| |
| |-
| |
| | <syntaxhighlight lang=apl inline>¯3</syntaxhighlight> || <syntaxhighlight lang=apl inline>3</syntaxhighlight> || <syntaxhighlight lang=apl inline>0</syntaxhighlight>
| |
| |-
| |
| | <syntaxhighlight lang=apl inline>3</syntaxhighlight> || <syntaxhighlight lang=apl inline>5</syntaxhighlight> || <syntaxhighlight lang=apl inline>3</syntaxhighlight>
| |
| |-
| |
| | <syntaxhighlight lang=apl inline>5</syntaxhighlight> || <syntaxhighlight lang=apl inline>3</syntaxhighlight> || <syntaxhighlight lang=apl inline>3</syntaxhighlight>
| |
| |-
| |
| | <syntaxhighlight lang=apl inline>3</syntaxhighlight> || <syntaxhighlight lang=apl inline>3</syntaxhighlight> || <syntaxhighlight lang=apl inline>3</syntaxhighlight>
| |
| |}
| |
|
| |
| The next table demonstrates the relations (in [[tacit]] code) among the operand ranks and corresponding argument ranks, given what the cell rank should be.
| |
| {|class=wikitable
| |
| ! operand rank (o) !! relation between o and a !! argument rank (a) !! resultant cell rank
| |
| |-
| |
| | <syntaxhighlight lang=apl inline>¯5</syntaxhighlight> || <syntaxhighlight lang=apl inline>0⌈+</syntaxhighlight> || <syntaxhighlight lang=apl inline>3</syntaxhighlight> || <syntaxhighlight lang=apl inline>0</syntaxhighlight>
| |
| |-
| |
| | <syntaxhighlight lang=apl inline>¯3</syntaxhighlight> || <syntaxhighlight lang=apl inline>+</syntaxhighlight> || <syntaxhighlight lang=apl inline>5</syntaxhighlight> || <syntaxhighlight lang=apl inline>2</syntaxhighlight>
| |
| |-
| |
| | <syntaxhighlight lang=apl inline>¯3</syntaxhighlight> || <syntaxhighlight lang=apl inline>+</syntaxhighlight> || <syntaxhighlight lang=apl inline>3</syntaxhighlight> || <syntaxhighlight lang=apl inline>0</syntaxhighlight>
| |
| |-
| |
| | <syntaxhighlight lang=apl inline>3</syntaxhighlight> || <syntaxhighlight lang=apl inline>⌊</syntaxhighlight> || <syntaxhighlight lang=apl inline>5</syntaxhighlight> || <syntaxhighlight lang=apl inline>3</syntaxhighlight>
| |
| |-
| |
| | <syntaxhighlight lang=apl inline>5</syntaxhighlight> || <syntaxhighlight lang=apl inline>⌊</syntaxhighlight> || <syntaxhighlight lang=apl inline>3</syntaxhighlight> || <syntaxhighlight lang=apl inline>3</syntaxhighlight>
| |
| |-
| |
| | <syntaxhighlight lang=apl inline>3</syntaxhighlight> || <syntaxhighlight lang=apl inline>⌊</syntaxhighlight> || <syntaxhighlight lang=apl inline>3</syntaxhighlight> || <syntaxhighlight lang=apl inline>3</syntaxhighlight>
| |
| |-
| |
| |}
| |
|
| |
|
| |
| [[Category:Leading axis theory]][[Category:Function characteristics]][[Category:Conformability]]{{APL features}} | | [[Category:Leading axis theory]][[Category:Function characteristics]][[Category:Conformability]]{{APL features}} |