Frame agreement: Difference between revisions

Jump to navigation Jump to search
3,502 bytes removed ,  17:17, 20 July 2023
m
→‎Model: replace with a more symmetric computation of cell ranks; no need for tables
m (→‎Model: replace with a more symmetric computation of cell ranks; no need for tables)
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}}
trusted
83

edits

Navigation menu