Special Code
An Implementation of J
ts=: 6!:2 , 7!:2@] x=: 11 13 17 19 23 y=: 29 7 23 11 19$'sesquipedalian' (x ($,) y) -: x $, y 1 ts 'x ($,) y' 0.00773981 2.09818e6 ts 'x $, y' 0.0170125 3.14662e6Instances of such special code are listed below:
= | dyad | word-parallel operation
on Boolean arguments for the following verbs: = < <. <: > >. >: +. +: * *. *: ^ ~: | ! |
<.@f | both | avoids non-integer intermediate results on extended precision integers |
>.@f | both | avoids non-integer intermediate results on extended precision integers |
+ | dyad | also * and -; on Windows, assembly code for integer arguments for the vector-vector, vector-scalar, and scalar-vector cases |
^ | dyad | x^y works by repeated multiplication if x is real and y is integral |
m&|@^ | dyad | avoids exponentiation for extended precision arguments |
m&|@(n&^) | monad | avoids exponentiation for extended precision arguments |
+/ .* | dyad | special code |
-/ .* | monad | special code in general; special code for square matrices; special code for arrays of 2-by-2 matrices |
$, | dyad | also ($,)"r; avoids ravel |
f;.1 | both | also f;._1 f;.2 f;._2; avoids building argument cells for several verbs: < $ , # [ ] {. {: <@}. <@}: ; also <&}. <@:}. etc. |
f;.3 | both | also f;._3; special code for matrix right arguments |
# | dyad | special code for Boolean left arguments |
# i.@# | monad | also (# i.), etc.; avoids i. on Boolean arguments |
#: i.@(*/) | monad | also (#: i.&(*/)), etc.; special code for non-negative integer vectors |
=/ | monad | also < <: > >: +. +: * *. *: ~:; word-parallel operations on Boolean arguments |
+/ | monad | also * and -; on Windows, assembly code for integer arguments |
,/ | monad | linear time |
,./ | monad | linear time |
,.&.>/ | monad | linear time |
;/ | monad | linear time |
f/@, | monad | also f/@:, f/&, f/&:,; avoids ravel |
#/. | dyad | avoids building argument cells |
/: | both | also \:; special code for several data types; special code for arguments with 5 items or less |
=/\ | monad | also +. *. ~:; word-parallel operations on Boolean arguments |
+/\ | monad | also * and -; on Windows, assembly code for integer arguments |
=/\. | monad | also < <: > >: +. +: *. *: ~:; word-parallel operations on Boolean arguments |
+/\. | monad | also * and -; on Windows, assembly code for integer arguments |
{ | dyad | special code for right arguments of several data types; special code for integer left arguments; special code for indexing first two axes |
<"1@[ { ] | dyad | avoids <"1 if left argument is integer array |
a=: c}x,y,:z | - | avoids catenation and lamination; in-place if c is Boolean and a is x or y |
y=: x i}y | - | in-place |
f"r | both | numerous verbs have integrated rank support: = < <. <: > >. >: + +. +: * *. *: - -: % ^ ~: | |. |: $ , ,. ,: # ! [ ] { {. {: }. }: / /: \ \. \: e. i. i: o. p. p: |
? | monad | also ?.; special code if argument is identically 2 |
? | dyad | also ?.; special code if left argument is much smaller than right argument |
E. | monad | special code for Boolean and literal vector arguments |
i. | monad | also i:; special case for length-1 arguments |
i. | dyad | also e. and i:; special code for several data types; special code for i.!.0; special code for arguments with many identical columns |