# Chapter 20: Scalar Numerical Functions

In this chapter we look at built-in scalar functions for computing numbers from numbers. This chapter is a straight catalog of functions, with links to the sections as follows:

Ceiling | Conjugate | cos | cos-1 | cosh | cosh-1

Decrement | divide | Double | Exponential | Factorial | Floor

GCD | Halve | Increment | LCM | Logarithm | Log, Natural

Magnitude | Minus | multiply | Negate | OutOf | PiTimes

Plus | power | Pythagorean | Reciprocal | Residue | Root

Signum | sin | sin-1 | sinh | sinh-1 | Square

SquareRoot | tan | tan-1 | tanh | tanh-1 |

## 20.1 Numbers from Numbers

### 20.1.1 Plus and Conjugate

Dyadic `+` is arithmetic addition.

`2 + 2` | `3j4 + 5j4` | `2r3 + 1r6`

    4

    8j8

    5r6

Monadic `+` is "Conjugate". For a real number `y`, the conjugate is `y`. For a complex number `xjy` (that is, `x + 0jy`), the conjugate is `x - 0jy`.

`+ 2` | `+ 3j4`

    2

    3j_4

### 20.1.2 Minus and Negate

Dyadic `-` is arithmetic subtraction.

`2 - 2` | `3 - 0j4` | `2r3 - 1r6`

    0

    3j_4

    1r2

Monadic `-` is "Negate".

`- 2` | `- 3j4`

    _2

    _3j_4

### 20.1.3 Increment and Decrement

Monadic `>:` is called "Increment". It adds `1` to its argument.

`>: 2` | `>: 2.5` | `>: 2r3` | `>: 2j3`

    3

    3.5

    5r3

    3j3

Monadic `<:` is called "Decrement". It subtracts `1` from its argument.

`<: 3` | `<: 2.5` | `<: 2r3` | `<: 2j3`

    2

    1.5

    _1r3

    1j3

### 20.1.4 Times and Signum

Dyadic `*` is multiplication.

`2 * 3` | `3j1 * 2j2`

    6

    4j8

Monadic `*` is called "Signum". For a real number `y`, the value of `(* y)` is `_1` or `0` or `1` as `y` is negative, zero or positive.

`* _2` | `* 0` | `* 2`

    _1

    0

    1

More generally, `y` may be real or complex, and the signum is equivalent to `y % | y`. Hence the signum of a complex number has magnitude 1 and the same angle as the argument.

`y =: 3j4` | `| y` | `y % | y` | `* y` | `| * y`

    3j4

    5

    0.6j0.8

    0.6j0.8

    1

### 20.1.5 Division and Reciprocal

Dyadic `%` is division.

`2 % 3` | `3j4 % 2j1` | `12x % 5x`

    0.666667

    2j1

    12r5

`1 % 0` is "infinity" but `0 % 0` is `0`

`1 % 0` | `0 % 0`

    _

    0

Monadic `%` is the "reciprocal" function.

`% 2` | `% 0j1`

    0.5

    0j_1

### 20.1.6 Double and Halve

Monadic `+:` is the "double" verb.

`+: 2.5` | `+: 3j4` | `+: 3x`

    5

    6j8

    6

Monadic `-:` is the "halve" verb:

`-: 6` | `-: 6.5` | `-: 3j4` | `-: 3x`

    3

    3.25

    1.5j2

    3r2

### 20.1.7 Floor and Ceiling

Monadic `<.` (left-angle-bracket dot) is called "Floor". For real `y` the floor of `y` is `y` rounded downwards to an integer, that is, the largest integer not exceeding `y`.

`<. 2` | `<. 3.2` | `<. _3.2`

    2

    3

    _4

For complex `y`, the floor lies within a unit circle center `y`, that is, the magnitude of (`y - <. y`) is less than `1`.

`y =: 3.4j3.4` | `z =: <. y` | `y - z` | `| y-z`

    3.4j3.4

    3j3

    0.4j0.4

    0.565685

This condition (magnitude less than 1) means that the floor of say `3.8j3.8` is not `3j3` but `4j3` because `3j3` does not satisfy the condition.

`y =: 3.8j3.8` | `z =: <. y` | `| y-z` | `| y - 3j3`

    3.8j3.8

    4j3

    0.824621

    1.13137

Monadic `>.` is called "Ceiling". For real `y` the ceiling of `y` is `y` rounded upwards to an integer, that is, the smallest integer greater than or equal to `y`. For example:

`>. 3.0` | `>. 3.1` | `>. _2.5`

    3

    4

    _2

Ceiling applies to complex `y`

`>. 3.4j3.4` | `>. 3.8j3.8`

    3j4

    4j4

### 20.1.8 Power and Exponential

Dyadic `^` is the "power" verb: `(x^y)` is `x` raised-to-the-power `y`

`10 ^ 2` | `10 ^ _2` | `100 ^ 1%2`

    100

    0.01

    10

Monadic `^` is exponentiation (or antilogarithm): `^y` means `(e^y)` where `e` is Euler's constant, `2.71828...`

`^ 1` | `^ 0j1`

    2.71828

    0.540302j0.841471

Euler's equation, supposedly engraved on his tombstone is: e i pi +1 = 0

       (^ 0j1p1) + 1
    0

### 20.1.9 Square

Monadic `*:` is "Square".

`*: 4` | `*: 2j1`

    16

    3j4

### 20.1.10 Square Root

Monadic `%:` is "Square Root".

`%: 9` | `%: 3j4` | `2j1 * 2j1`

    3

    2j1

    3j4

### 20.1.11 Root

If `x` is integral, then `x %: y` is the "x'th root" of `y`:

`3 %: 8` | `_3 %: 8`

    2

    0.5

More generally, `(x %: y)` is an abbreviation for `(y ^ % x)`

`x =: 3 3.1` | `x %: 8` | `8 ^ % x`

    3 3.1

    2 1.95578

    2 1.95578

### 20.1.12 Logarithm and Natural Logarithm

Dyadic `^.` is the base-x logarithm function, that is, `(x ^. y)` is the logarithm of `y` to base `x` :

`10 ^. 1000` | `2 ^. 8`

    3

    3

Monadic `^.` is the "natural logarithm" function.

`e =: ^ 1` | `^. e`

    2.71828

    1

### 20.1.13 Factorial and OutOf

The factorial function is monadic `!`.

`! 0 1 2 3 4` | `! 5x 6x 7x 8x`

    1 1 2 6 24

    120 720 5040 40320

The number of combinations of `x` objects selected out of `y` objects is given by the expression `x ! y`

`1 ! 4` | `2 ! 4` | `3 ! 4`

    4

    6

    4

### 20.1.14 Magnitude and Residue

Monadic `|` is called "Magnitude". For a real number `y` the magnitude of `y` is the absolute value:

`| 2` | `| _2`

    2

    2

More generally, `y` may be real or complex, and the magnitude is equivalent to `(%: y * + y)`.

`y =: 3j4` | `y * + y` | `%: y * + y` | `| y`

    3j4

    25

    5

    5

The dyadic verb `|` is called "Residue". the remainder when `y` is divided by `x` is given by `(x | y)`.

`10 | 12` | `3 | _2 _1 0 1 2 3 4 5` | `1.5 | 3.7`

    2

    1 2 0 1 2 0 1 2

    0.7

If `x | y` is zero, then x is a divisor of y:

`4 | 12` | `12 % 4`

    0

    3

The "Residue" function applies to complex numbers:

`a =: 1j2` | `b=: 2j3` | `a | b` | `a | (a*b)` | `(b-1j1) % a`

    1j2

    2j3

    1j1

    0

    1

### 20.1.15 GCD and LCM

The greatest common divisor (GCD) of `x` and `y` is given by `(x +. y)`. Reals and rationals in the domain of `+.`.

`6 +. 15` | `_6 +. _15` | `2.5 +. 3.5` | `6r7 +. 15r7`

    3

    3

    0.5

    3r7

Complex numbers are also in the domain of `+.`.

`a=: 1j2` | `b=:2j3` | `c=:3j5` | `(a*b) +. (b*c)`

    1j2

    2j3

    3j5

    2j3

If `x` and `y` are complex, then `x +. y` may differ from `y +. x`.

`1 +. 0j1` | `0j1 +. 1`

    1

    0j1

We can see that the same result is produced by Euclid's algorithm for `(x GCD y)`, which is: if `y=0` then `x`, otherwise `(x|y) GCD x`. Here is a verb `E`, to model the algorithm.

       E  =:  (| E [) ` [ @. (]=0:)

`6 E 15` | `1 +. 0j1` | `1 E 0j1` | `0j1 +. 1` | `0j1 E 1`

    3

    1

    1

    0j1

    0j1

The Least Common Multiple of `x` and `y` is given by `(x *. y)`.

`(2 * 3) *. (3 * 5)` | `2*3*5`

    30

    30

## 20.2 Circle Functions

### 20.2.1 Pi Times

There is a built-in verb `o.` (lower-case o dot). Monadic `o.` is called "Pi Times"; it multiplies its argument by 3.14159...

`o. 1` | `o. 2` | `o. 1r6`

    3.14159

    6.28319

    0.523599

### 20.2.2 Trigonometric and Other Functions

If `y` is an angle in radians, then the sine of `y` is given by the expression `1 o. y`. The sine of (pi over 6) is 0.5

`y =: o. 1r6` | `1 o. y`

    0.523599

    0.5

The general scheme for dyadic `o.` is that `(k o. y)` means: apply to `y` a function selected by `k`. Giving conventional names to the available functions, we have:

       sin   =:  1 & o.  NB.  sine
       cos   =:  2 & o.  NB.  cosine
       tan   =:  3 & o.  NB.  tangent

       sinh  =:  5 & o.  NB.  hyperbolic sine
       cosh  =:  6 & o.  NB.  hyperbolic cosine
       tanh  =:  7 & o.  NB.  hyperbolic tangent

       asin  =: _1 & o.  NB.  inverse sine
       acos  =: _2 & o.  NB.  inverse cosine
       atan  =: _3 & o.  NB.  inverse tangent

       asinh =: _5 & o.  NB.  inverse hyperbolic sine
       acosh =: _6 & o.  NB.  inverse hyperbolic cosine
       atanh =: _7 & o.  NB.  inverse hyperbolic tangent

`y` | `sin y` | `asin sin y`

    0.523599

    0.5

    0.523599

### 20.2.3 Pythagorean Functions

There are also the "pythagorean"functions:

          0 o. y  means   %:   1 - y^2
          4 o. y  means   %:   1 + y^2
          8 o. y  means   %: - 1 + y^2
         _4 o. y  means   %:  _1 + y^2
         _8 o. y  means - %: - 1 + y^2

`y =: 0.6` | `0 o. y` | `%: 1 - y^2`

    0.6

    0.8

    0.8

This is the end of chapter 20

NEXT
Table of Contents
Index

Copyright © Roger Stokes 2003. This material may be freely reproduced, provided that this copyright notice is also reproduced.

last updated 9 March 2004