Documentation

# half

Construct half-precision numeric object

## Description

Use the `half` constructor to assign a half-precision data type to a number or variable. Half-precision data types occupy only 16 bits of memory, but their floating-point representation enables them to handle wider dynamic ranges than integer or fixed-point data types of the same size.

## Creation

### Syntax

``a = half(v)``

### Description

example

````a = half(v)` converts the values in `v` to half-precision.```

### Input Arguments

expand all

Input array, specified as a scalar, vector, matrix, or multidimensional array.

Data Types: `single` | `double` | `int8` | `int16` | `int32` | `int64` | `uint8` | `uint16` | `uint32` | `uint64` | `logical`
Complex Number Support: Yes

## Object Functions

These functions are supported for use with half-precision inputs.

expand all

 `abs` Absolute value and complex magnitude `ceil` Round toward positive infinity `cos` Cosine of argument in radians `cospi` Compute cos(X*pi) accurately `dot` Dot product `exp` Exponential `expm1` Compute exp(x)-1 accurately for small values of x `fix` Round toward zero `floor` Round toward negative infinity `fma` Multiply and add using fused multiply add approach `hypot` Square root of sum of squares (hypotenuse) `ldivide` Left array division `log` Natural logarithm `log1p` Compute log(1+x) accurately for small values of x `mean` Average or mean value of array `minus` Subtraction `mod` Remainder after division (modulo operation) `mtimes` Matrix multiplication `plus` Addition `pow10` Base 10 power and scale half-precision numbers `pow2` Base 2 power and scale floating-point numbers `prod` Product of array elements `rdivide` Right array division `rem` Remainder after division `round` Round to nearest decimal or integer `rsqrt` Reciprocal square root `sin` Sine of argument in radians `sinpi` Compute sin(X*pi) accurately `sqrt` Square root `sum` Sum of array elements `tanh` Hyperbolic tangent `times` Multiplication `uminus` Unary minus `uplus` Unary plus
 `cast` Convert variable to different data type `double` Double-precision arrays `eps` Floating-point relative accuracy `Inf` Create array of all Inf values `int16` 16-bit signed integer arrays `int32` 32-bit signed integer arrays `int64` 64-bit signed integer arrays `int8` 8-bit signed integer arrays `isa` Determine if input has specified data type `isfloat` Determine whether input is floating-point data type `islogical` Determine if input is logical array `isnan` Determine which array elements are NaN `isnumeric` Determine whether input is numeric array `isreal` Determine whether array is real `logical` Convert numeric values to logicals `NaN` Create array of all NaN values `single` Single-precision arrays `uint16` 16-bit unsigned integer arrays `uint32` 32-bit unsigned integer arrays `uint64` 64-bit unsigned integer arrays `uint8` 8-bit unsigned integer arrays
 `all` Determine if all array elements are nonzero or true `any` Determine if any array elements are nonzero `eq` Determine equality `ge` Determine greater than or equal to `gt` Determine greater than `le` Determine less than or equal to `lt` Determine less than `ne` Determine inequality
 `cat` Concatenate arrays `colon` Vector creation, array subscripting, and for-loop iteration `eye` Identity matrix `full` Convert sparse matrix to full storage `horzcat` Horizontal concatenation for heterogeneous arrays `isempty` Determine whether array is empty `isfinite` Determine which array elements are finite `isinf` Determine which array elements are infinite `isscalar` Determine whether input is scalar `isvector` Determine whether input is vector `length` Length of largest array dimension `min` Minimum of timeseries data `max` Maximum of timeseries data `ndims` Number of array dimensions `numel` Number of array elements `ones` Create array of all ones `repmat` Repeat copies of array `reshape` Reshape array `size` Array size `subsasgn` Redefine subscripted assignment `subsref` Subscripted reference `transpose` Transpose vector or matrix `vertcat` Vertical concatenation for heterogeneous arrays `zeros` Create array of all zeros
 `display` Show information about variable or expression result `end` Terminate block of code or indicate last array index
 `bar` Bar graph `barh` Horizontal bar graph `fplot` Plot expression or function `line` Create primitive line `plot` 2-D line plot `plot3` 3-D point or line plot `plotmatrix` Scatter plot matrix `rgbplot` Plot colormap `scatter` Scatter plot `scatter3` 3-D scatter plot `xlim` Set or query x-axis limits `ylim` Set or query y-axis limits `zlim` Set or query z-axis limits

## Examples

collapse all

To cast a double-precision number to half precision, use the `half` function.

`a = half(pi)`
```a = half 3.1406 ```

You can also use the `half` function to cast an existing variable to half-precision.

`v = single(magic(3))`
```v = 3x3 single matrix 8 1 6 3 5 7 4 9 2 ```
`a = half(v)`
```a = 3x3 half matrix 8 1 6 3 5 7 4 9 2 ```

## Limitations

The following functions which support half-precision inputs, do not support complex half-precision inputs.

• `rsqrt`

• `fma`