Vocabulary/jdot

From J Wiki
Jump to navigation Jump to search

>> <<   Down to: Dyad   Back to: Vocabulary Thru to: Dictionary

j. y Imaginary

Rank 0 -- operates on individual atoms of y, producing a result of the same shape -- WHY IS THIS IMPORTANT?


Multiplies y by 0j1, which represents the imaginary unit i .

Equivalent to 0j1 * y

   j. 5           NB. y real, resulting in the pure imaginary number 0+5i
0j5
   5 * 0j1
0j5
   j. 3j4         NB. y complex, result is the product (0+1i)*(3+4i) = 3i+4i^2 = -4+3i
_4j3
   j.(^:4) 3j4    NB. each step rotates the vector by π/2
3j4


x j. y Complex

Rank 0 0 -- operates on individual atoms of x and y, producing a result of the same shape -- WHY IS THIS IMPORTANT?


Combines x and y into a complex number having x as its real part and y as its imaginary part

Equivalent to x + 0j1 * y

   3 j. 4       NB. arguments are separated from verb by spaces (x j. y)
3j4                                                               ^  ^
   3j.4         NB. this is a different number, complex constant (3+0.4*i)
3j0.4
   1 j. -:%:2   NB. composing complex number (1+sqrt(2)/2*i)
1j0.707107

Common uses

1. Work with complex arithmetic.

2. Some primitives use a complex argument as a way of putting two numbers into one atom

                         NB. (":) Format
   o.>:i.3                                NB. first three multiples of π 
3.14159 6.28319 9.42478
   (o.>:i.3) ,: (*: o.>:i.3)              NB. multiples and their squares
3.14159 6.28319 9.42478
 9.8696 39.4784 88.8264
   13j9 ": (o.>:i.3) ,: (*: o.>:i.3)      NB. x is (w j. d), producing formatted output
  3.141592654  6.283185307  9.424777961   NB. with d decimal digits and a field width of w    
  9.869604401 39.478417604 88.826439610

                         NB. (#) Copy
   2j1 # 2 3 5 7                          NB. x is (n j. f), specifying n copies followed by f fills
2 2 0 3 3 0 5 5 0 7 7 0
   0 2j1 1 3 # 2 3 5 7
3 3 0 5 7 7 7

                         NB. (i:) Steps
   i: 2j3                                 NB. y is (a j. n), calling for n steps in intervall [-a,a]
_2 _0.666667 0.666667 2

3. Handle x/y screen coordinates as complex numbers instead of pairs of reals.

   j4xy=: _2 j./\ ]   NB. a list of xy-coords --> a list of complex nos
   xy4j=: [: , +.     NB. a list of complex nos --> a list of xy-coords
   j4xy 3 4 _2 3
3j4 _2j3
   xy4j 3j4 _2j3
3 4 _2 3

Related primitives

Real/Imag (+. y), Signum (Unit Circle) (* y), Length/Angle (*. y), Magnitude (| y), Circle Functions (x o. y), Angle * Polar (r.)