# Documentation

### This is machine translation

Translated by
Mouse over text to see original. Click the button below to return to the English verison of the page.

# rem

Remainder after division

## Syntax

• ``r = rem(a,b)``
example

## Description

example

````r = rem(a,b)` returns the remainder after division of `a` by `b`, where `a` is the dividend and `b` is the divisor. This function is often called the remainder operation, which can be expressed as `r = a - b.*fix(a./b)`. The `rem` function follows the convention that `rem(a,0)` is `NaN`.```

## Examples

collapse all

Compute the remainder after dividing 5 into 23.

```a = 23; b = 5; r = rem(a,b) ```
```r = 3 ```

Find the remainder after division for a vector of integers and the divisor `3`.

```a = 1:5; b = 3; r = rem(a,b) ```
```r = 1 2 0 1 2 ```

Find the remainder after division for a set of integers including both positive and negative values. Note that nonzero results have the same sign as the dividend.

```a = [-4 -1 7 9]; b = 3; r = rem(a,b) ```
```r = -1 -1 1 0 ```

Find the remainder after division for several angles using a divisor of `2*pi`. When possible, `rem` attempts to produce exact integer results by comepensating for floating-point round-off effects.

```theta = [0.0 3.5 5.9 6.2 9.0 4*pi]; b = 2*pi; r = rem(theta,b) ```
```r = 0 3.5000 5.9000 6.2000 2.7168 0 ```

## Input Arguments

collapse all

Dividend, specified as a scalar, vector, matrix, or multidimensional array. `a` must be a real-valued array of any numerical type. Numeric inputs `a` and `b` must either be the same size or have sizes that are compatible (for example, `a` is an `M`-by-`N` matrix and `b` is a scalar or `1`-by-`N` row vector). For more information, see Compatible Array Sizes for Basic Operations.

If `a` and `b` are duration arrays, then they must be the same size unless one is a scalar. If one input is a duration array, the other input can be a duration array or a numeric array. In this context, `rem` treats numeric values as a number of standard 24-hour days.

If one input has an integer data type, then the other input must be of the same integer data type or be a scalar `double`.

Data Types: `single` | `double` | `int8` | `int16` | `int32` | `int64` | `uint8` | `uint16` | `uint32` | `uint64` | `duration` | `char`

Divisor, specified as a scalar, vector, matrix, or multidimensional array. `b` must be a real-valued array of any numerical type. Numeric inputs `a` and `b` must either be the same size or have sizes that are compatible (for example, `a` is an `M`-by-`N` matrix and `b` is a scalar or `1`-by-`N` row vector). For more information, see Compatible Array Sizes for Basic Operations.

If `a` and `b` are duration arrays, then they must be the same size unless one is a scalar. If one input is a duration array, the other input can be a duration array or a numeric array. In this context, `rem` treats numeric values as a number of standard 24-hour days.

If one input has an integer data type, then the other input must be of the same integer data type or be a scalar `double`.

Data Types: `single` | `double` | `int8` | `int16` | `int32` | `int64` | `uint8` | `uint16` | `uint32` | `uint64` | `duration` | `char`

## More About

collapse all

### Differences Between mod and rem

The concept of remainder after division is not uniquely defined, and the two functions `mod` and `rem` each compute a different variation. The `mod` function produces a result that is either zero or has the same sign as the divisor. The `rem` function produces a result that is either zero or has the same sign as the dividend.

Another difference is the convention when the divisor is zero. The `mod` function follows the convention that `mod(a,0)` returns `a`, whereas the `rem` function follows the convention that `rem(a,0)` returns `NaN`.

Both variants have their uses. For example, in signal processing, the `mod` function is useful in the context of periodic signals because its output is periodic (with period equal to the divisor).

### Tall Array Support

This function fully supports tall arrays. For more information, see Tall Arrays.

## See Also

#### Introduced before R2006a

Was this topic helpful?

Watch now