# Vocabulary/plus

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

`+ y`Conjugate

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

The complex conjugate of the number `y`

+ 3 3 + 3j5 3j_5

### Common uses

1. Test z is real not complex

if. z=+z do. ... end.

2. Find the real part of `z`

z=: 3j4 -: z+ +z NB. (-:) is: Halve 3

A better solution is `9&o.` (see Circle Functions (`o.`).

### More Information

1. Complex conjugates are a pair of complex numbers, both having the same real part, but with imaginary parts of equal magnitude and opposite signs.

If `y` is real, then (`+y`) is the same as `y`

+ 7 0 _7 7 0 _7

2. J supports complex numbers and returns them as required by a calculation.

The way to write the scalar numeral having real part 3 and imaginary part 4*i* is: (`3j4`).

sqrt=: 3 : 'y^0.5' NB. (sqrt y) is y to the power of 0.5 sqrt=: ^&0.5 NB. (tacit alternative) sqrt 49 7 sqrt _1 0j1 + sqrt _1 0j_1 |sqrt _1 NB. The sq root of _1 has magnitude 1 1 | z=: 3j4 NB. vector repn of z is 3-4-5 triangle 5 NB. hence its magnitude is the hypotenuse + z 3j_4 | +z NB. Conjugate of z has same magnitude as z 5

`x + y`Plus

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

Adds two numeric nouns: `x` and `y`

2 + 3 5

Either or both of `x`, `y` can be atoms.

x=: 5 y=: 2 3 4 x + y 7 8 9 y + x 7 8 9

### Common uses

1. Increment an array by the same amount throughout

100 + 0 1 2 100 101 102

2. Sum the numbers in a given list

+/0 1 2 3 6

### Related primitives

Minus (`-`)

### More Information

0. Plus video

1. If both `x` and `y` are arrays, they must agree.

x=: 100 200 y=: 2 3$i.6 x + y 100 101 102 203 204 205 x=: 100 200 300 x + y |length error | x +y[x=:100 200 300[y=:2 3$i.6

Note however the use of Rank (`"`) to add 1-cells of `x` and `y`

x +"1 y 100 201 302 103 204 305

### Use These Combinations

Combinations using `x + y` that have exceptionally good performance include:

**What It Does****Type;**

**Precisions;**

Ranks**Syntax****Primitives permitted in place of**`f`**Variants;**

**Restrictions****Benefits;**

**Bug Warnings**Count number of places where `x f y`is true*Permitted:*Boolean, integer, floating point, byte, symbol (**not**unicode).

`x`and`y`need not be the same precision.`x ([: +/ f) y``x +/@:f y``= ~: < <: > >: e. E.`*Permitted:*`(f!:0)`*(parentheses obligatory!)*to force exact comparison.

J recognizes FLO**only if**`f`returns an atom or list.Avoids computing entire `x f y`

**Bug warning:**if`f`is`e.`it does (`,@e.`) rather than`e.`regardless of ranks of arguments

**What it does****Type;**

**Precisions;**

Ranks**Syntax****Variants;**

**Restrictions****Benefits;**

**Bug Warnings**Count number of cells of `y`that match`m`-items`+/@e.&m y`**Bug warning:**it does`(,@e.)`rather than`e.`Reductions on infixes Boolean, integer, floating-point `x +/\ y``<. >.`in place of`+`**much**faster than alternativesMean on infixes integer and floating-point `x (+/%#)\ y``x`positive

`*. = ~:`in place of`+`**much**faster than alternativesBoolean reductions on partitions Boolean `x +//. y``= <. >. +. * *. ~:`in place of`+`avoids building argument cells Reductions on partitions integer, floating-point `x +//. y``<. >.`in place of`+`avoids building argument cells Find mean of each partition `x (+/ % #)/. y`avoids building argument cells Polynomial Multiplication `x +//.@(*/) y`avoids building argument cells Polynomial Multiplication (Boolean) Boolean `x ~://.@(*./) y`

`x ~://.@(+./) y`

`x +//.@(*./) y`

`x +//.@(+./) y`avoids building argument cells Sum along diagonals `+//. y`avoids building argument cells Mean with rank `(+/ % #) y`Supported as a primitive by `(+/ % #)"n`