4,494
edits
mNo edit summary |
m (Text replacement - "<source" to "<syntaxhighlight") Tags: Mobile edit Mobile web edit |
||
(2 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
APL hardware is hardware that has been designed to natively support APL [[array]] operations. This breaks the popular understanding of APL as an interpreted language. Unlike [[wikipedia:x86|x86]], which is targeted to operate on individual [[scalar]]s one at a time, native APL architectures would be targeted to operate on entire arrays at a time, thereby increasing the speed of APL processing. | APL hardware is hardware that has been designed to natively support APL [[array]] operations. This breaks the popular understanding of APL as an interpreted language. Unlike [[wikipedia:x86|x86]], which is targeted to operate on individual [[scalar]]s one at a time, native APL architectures would be targeted to operate on entire arrays at a time, thereby increasing the speed of APL processing. | ||
== The APL Machine == | |||
{{Main|APL Machine}} | |||
The APL Machine was an actual (as opposed to theoretical) hardware implementation, created with the explicit purpose of facilitating programming an analog array processor. | |||
== Cellular APL Computer == | == Cellular APL Computer == | ||
Line 28: | Line 32: | ||
=== Supported Operations === | === Supported Operations === | ||
Values can be transferred using the < | Values can be transferred using the <syntaxhighlight lang=apl inline>←</syntaxhighlight> operator. | ||
The MLIM natively supports the monadic operations: | The MLIM natively supports the monadic operations: | ||
< | <syntaxhighlight lang=apl inline>(A,B,C,T)←~(A,B,C,T)</syntaxhighlight> | ||
and the dyadic operations: | and the dyadic operations: | ||
< | <syntaxhighlight lang=apl> | ||
(C,A)←(A,C)+B | (C,A)←(A,C)+B | ||
(C,A)←(A,C)-B | (C,A)←(A,C)-B | ||
Line 42: | Line 46: | ||
(C,A)←(A,C)=B | (C,A)←(A,C)=B | ||
(C,A)←(A,C)>B | (C,A)←(A,C)>B | ||
</ | </syntaxhighlight> | ||
The operations can be combined to create the following operations: | The operations can be combined to create the following operations: | ||
< | <syntaxhighlight lang=apl> | ||
+M | +M | ||
×M | ×M | ||
Line 69: | Line 73: | ||
M⍱N | M⍱N | ||
M⍲N | M⍲N | ||
</ | </syntaxhighlight> | ||
The masking functionality of the RL combined with the native ability for [[Scan]] (reduce while reading the output in between each step) and [[Reduce]] (< | The masking functionality of the RL combined with the native ability for [[Scan]] (reduce while reading the output in between each step) and [[Reduce]] (<syntaxhighlight lang=apl inline>\</syntaxhighlight> and <syntaxhighlight lang=apl inline>/</syntaxhighlight> respectively) allows for [[Index Generator]] (monadic <syntaxhighlight lang=apl inline>⍳</syntaxhighlight>) to be defined, while its generalized indexing functionality allows [[Reverse]] and [[Transpose]] (monadic <syntaxhighlight lang=apl inline>⌽</syntaxhighlight> and <syntaxhighlight lang=apl inline>⍉</syntaxhighlight>) to be defined. [[Shape]] and [[Ravel]] (monadic <syntaxhighlight lang=apl inline>⍴</syntaxhighlight> and <syntaxhighlight lang=apl inline>,</syntaxhighlight>) can also be defined by using the RL and PP in parallel. Thus, a list of complex operators can be defined: | ||
< | <syntaxhighlight lang=apl> | ||
⍳N | ⍳N | ||
,N | ,N | ||
Line 90: | Line 94: | ||
M∘.b N | M∘.b N | ||
M[N] | M[N] | ||
</ | </syntaxhighlight> | ||
This paper does not outline floating point arithmetic. Many functions may be missing because floating point arithmetic has not been defined. | This paper does not outline floating point arithmetic. Many functions may be missing because floating point arithmetic has not been defined. | ||