Difference between revisions of "Circular"
Line 78:  Line 78:  
}  }  
−  The left arguments 9 and 11 extract the real and imaginary parts (the [[wikipedia:cartesian coordinate systemCartesian coordinates]] on the complex plane), while 10 and 12 extract the magnitude and angle (the [[wikipedia:polar coordinate systempolar coordinates]]). The negative counterparts can be used to assemble the Cartesian or polar coordinates  +  The left arguments 9 and 11 extract the real and imaginary parts (the [[wikipedia:cartesian coordinate systemCartesian coordinates]] on the complex plane), while 10 and 12 extract the magnitude and angle (the [[wikipedia:polar coordinate systempolar coordinates]]). The negative counterparts can be used to [[complex (function)assemble a single complex number]] from the Cartesian or polar coordinates. 
<source lang=apl>  <source lang=apl> 
Revision as of 07:49, 9 July 2020
○

Circular (○
), or Circle Function, is a dyadic scalar function, which is essentially a collection of related monadic functions. Circular encompasses trigonometric functions, hyperbolic functions, and a few relationships between them. On some implementations with complex numbers, Circular also includes functions to decompose and assemble a complex number. It shares the glyph ○
with the monadic arithmetic function Pi Times.
Contents
Examples
Most APL implementations agree on the following functions:
(X)○Y 
X 
X○Y


→  0  
1  
2  
3  
4  
5  
6  
7 
The following shows the values of sine, cosine, and tangent at . Note that zeros are not exact and does not signal DOMAIN ERROR because of limited precision of .
⎕PP←5
'sin' 'cos' 'tan',1 2 3∘.○ ○0 0.5 1
sin 0 1 1.2246E¯16
cos 1 6.1232E¯17 ¯1
tan 0 1.6331E16 ¯1.2246E¯16
0○Y
and 4○Y
/¯4○Y
reflect the identities and respectively. In APL code, 0○Y
is equivalent to 1○¯2○Y
and 2○¯1○Y
, 4○Y
is equivalent to 6○¯5○Y
, and ¯4○Y
is equivalent to 5○¯6○Y
.
0○¯0.9 ¯0.3 0 0.3 0.9
0.43589 0.95394 1 0.95394 0.43589
1○¯2○¯0.9 ¯0.3 0 0.3 0.9
0.43589 0.95394 1 0.95394 0.43589
2○¯1○¯0.9 ¯0.3 0 0.3 0.9
0.43589 0.95394 1 0.95394 0.43589
4○¯10 ¯1 0 1 10
10.05 1.4142 1 1.4142 10.05
6○¯5○¯10 ¯1 0 1 10
10.05 1.4142 1 1.4142 10.05
¯4○1 3 10
0 2.8284 9.9499
5○¯6○1 3 10
0 2.8284 9.9499
On implementations with complex number support, ¯4○Y
is modified to so that it agrees with 5○¯6○Y
for complex numbers.
As a mnemonic, the functions for even X are even functions, and those for odd X are odd functions. Also, X○Y
and (X)○Y
are inverses of each other.
Functions added with complex number support
Extensions with complex numbers are as follows:
(X)○Y 
X 
X○Y


8  
Y unchanged  9  real part of Y 
conjugate of Y  10  magnitude of Y 
complex ()  11  imaginary part of Y 
12  phase of Y 
The left arguments 9 and 11 extract the real and imaginary parts (the Cartesian coordinates on the complex plane), while 10 and 12 extract the magnitude and angle (the polar coordinates). The negative counterparts can be used to assemble a single complex number from the Cartesian or polar coordinates.
⎕←mat←9 11∘.○1J2 3J¯4 ¯5J¯6 ⍝ first row is real, second row is imag
1 3 ¯5
2 ¯4 ¯6
¯9 ¯11+.○mat
1J2 3J¯4 ¯5J¯6
⎕←mat←10 12∘.○1J2 3J¯4 ¯5J¯6 ⍝ first row is length, second row is angle
2.2361 5 7.8102
1.1071 ¯0.9273 ¯2.2655
¯10 ¯12×.○mat
1J2 3J¯4 ¯5J¯6
J has separate builtin functions for these operations: Real/Imag +.
(Cartesian decomposition), Length/Angle *.
(polar decomposition), Complex j.
(Cartesian assembly), and Polar r.
(polar assembly). Note that, unlike the APL version above, +.
and *.
create a trailing axis of length 2.
]mat =: +. 1j2 3j_4 _5j_6
1 2
3 _4
_5 _6
j./"1 mat
1j2 3j_4 _5j_6
]mat =: *. 1j2 3j_4 _5j_6
2.23607 1.10715
5 _0.927295
7.81025 _2.26553
r./"1 mat
1j2 3j_4 _5j_6