Skip to content

Scalar Functions

There is a class of primitive functions termed scalar functions This class is identified in Table 1 below. Scalar functions are pervasive, that is, their properties apply at all levels of nesting. Scalar functions have the following properties:

Table 1: Scalar Primitive Functions
Symbol Monadic Dyadic
+ Conjugate Plus (Add)
- Negative Minus (Subtract)
× Direction (Signum) Times (Multiply)
÷ Reciprocal l Divide
| Magnitude Residue
Floor Minimum
Ceiling Maximum
* Exponential Power
Natural Logarithm Logarithm
Pi Times Circular
! Factorial Binomial
~ Not $
? Roll $
Type (See Enlist ) $
^   And
  Or
  Nand
  Nor
<   Less
  Less Or Equal
=   Equal
  Greater Or Equal
>   Greater
  Not Equal
$ Dyadic form is not scalar

Monadic Scalar Functions

  • The function is applied independently to each simple scalar in its argument.
  • The function produces a result with a structure identical to its argument.
  • When applied to an empty argument, the function produces an empty result. With the exception of + and , the type of this result depends on the function, not on the type of the argument. By definition + and return a result of the same type as their arguments.

Example

      ÷2 (1 4)
0.5  1 0.25

Dyadic Scalar Functions

  • The function is applied independently to corresponding pairs of simple scalars in its arguments.
  • A simple scalar will be replicated to conform to the structure of the other argument. If a simple scalar in the structure of an argument corresponds to a non-simple scalar in the other argument, then the function is applied between the simple scalar and the items of the non-simple scalar. Replication of simple scalars is called scalar extension.
  • A simple unit is treated as a scalar for scalar extension purposes. A unit is a single element array of any rank. If both arguments are simple units, the argument with lower rank is extended.
  • The function produces a result with a structure identical to that of its arguments (after scalar extensions).
  • If applied between empty arguments, the function produces a composite structure resulting from any scalar extensions, with type appropriate to the particular function. (All scalar dyadic functions return a result of numeric type.)

Examples

      2 3 4 + 1 2 3
3 5 7

      2 (3 4) + 1 (2 3)
3  5 7

      (1 2) 3 + 4 (5 6)
 5 6  8 9

      10 × 2 (3 4)
20  30 40

      2 4 = 2 (4 6)
1  1 0

      (1 15) - 1 (2 3)
4  3 2

      1''+⍳0
0
       1(0⍴⊂' ' (0 0))×''
0  0 0

Note

The Axis operator applies to all scalar dyadic functions.