Vocabulary/star

From J Wiki
Jump to: navigation, search

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

* y Signum

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



The sign of the number y

Condition Result of *y
y>0 1
y=0 0
y<0 _1

Common uses

Locate negative elements in an array for special treatment

   ] z=: 10 - ?6 6 $ 20
 7 _6  5  7 10 _7
_5  2  1  6  6  0
_3 _8 _1  6 _1 _9
 3 _2  5  3  3 _7
_1 _5  5 _8 _3  0
_1 _4  6  9 _6 _4

   *z
 1 _1  1  1  1 _1
_1  1  1  1  1  0
_1 _1 _1  1 _1 _1
 1 _1  1  1  1 _1
_1 _1  1 _1 _1  0
_1 _1  1  1 _1 _1

Related Primitives

Real/Imag (+. y), Length/Angle (*. y), Magnitude (* y), Imaginary * Complex (j.), Circle Functions (x o. y), Angle * Polar (r.)


Details

1. * y uses tolerant comparison; use *!.0 for intolerant comparison. The tolerance for * is absolute: any number whose magnitude is less than the tolerance is considered to equal 0.

   1e_30 = 0   NB. not zero by relative tolerance
0
   * 1e_30   NB. zero by absolute tolerance
0

2. If y is complex, values that are not tolerantly equal to 0 produce (y % | y), which is a point on the unit circle on the line going from the origin to y.


x * y Times

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



The product of two numeric nouns, x and y

   5 * 7
35

   z */ z=. >: i.10	NB. multiplication table
 1  2  3  4  5  6  7  8  9  10
 2  4  6  8 10 12 14 16 18  20
 3  6  9 12 15 18 21 24 27  30
 4  8 12 16 20 24 28 32 36  40
 5 10 15 20 25 30 35 40 45  50
 6 12 18 24 30 36 42 48 54  60
 7 14 21 28 35 42 49 56 63  70
 8 16 24 32 40 48 56 64 72  80
 9 18 27 36 45 54 63 72 81  90
10 20 30 40 50 60 70 80 90 100

Common uses

1. Multiply two numbers

   100 * 0 1 2
0 100 200

2. Multiply the numbers in a given list

   */2 3 4
24

Use These Combinations

Combinations using x * y that have exceptionally good performance include:

What it does Type;

Precisions;
Ranks

Syntax Variants;

Restrictions

Benefits;

Bug Warnings

Boolean reductions on partitions Boolean x +//. y = <. >. +. * *. ~: in place of + avoids building argument cells
Polynomial Multiplication x +//.@(*/) y avoids building argument cells
Odometer function (y gives the size of each wheel; result is all readings from 0 0 0 0 to y) integer (#: i.@(*/)) y @: in place of @