# half

Construct half-precision numeric object

Since R2018b

## Description

Use the `half` constructor to assign a half-precision data type to a number or variable. A half-precision data type occupies 16 bits of memory, but its floating-point representation enables it to handle wider dynamic ranges than integer or fixed-point data types of the same size. For more information, see Floating-Point Numbers and What is Half Precision?.

For a list of functions that support code generation with half-precision inputs, see Half Precision Code Generation Support.

## 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 simulation with half-precision inputs in MATLAB®. MATLAB System object™ supports half-precision data type and MATLAB System block supports half-precision data type with real values. For a list of functions that support code generation with half-precision inputs, see Half Precision Code Generation Support.

expand all

 `abs` Absolute value and complex magnitude `acos` Inverse cosine in radians `acosh` Inverse hyperbolic cosine `asin` Inverse sine in radians `asinh` Inverse hyperbolic sine `atan` Inverse tangent in radians `atan2` Four-quadrant inverse tangent `atanh` Inverse hyperbolic tangent `ceil` Round toward positive infinity `conj` Complex conjugate `conv` Convolution and polynomial multiplication `conv2` 2-D convolution `cos` Cosine of argument in radians `cosh` Hyperbolic cosine `cospi` Compute cos(X*pi) accurately `cumsum` Cumulative sum `dot` Dot product `exp` Exponential `expm1` Compute `exp(X)-1` accurately for small `X` `fft` Fast Fourier transform `fft2` 2-D fast Fourier transform `fftn` N-D fast Fourier transform `fftshift` Shift zero-frequency component to center of spectrum `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) `ifft` Inverse fast Fourier transform `ifft2` 2-D inverse fast Fourier transform `ifftn` Multidimensional inverse fast Fourier transform `ifftshift` Inverse zero-frequency shift `imag` Imaginary part of complex number `ldivide` Left array division `log` Natural logarithm `log10` Common logarithm (base 10) `log1p` Compute natural logarithm of `1+X` accurately for small `X` `log2` Base 2 logarithm and floating-point number dissection `mean` Average or mean value of array `minus` Subtraction `mldivide` Solve systems of linear equations Ax = B for x `mod` Remainder after division (modulo operation) `mrdivide` Solve systems of linear equations xA = B for x `mtimes` Matrix multiplication `plus` Add numbers, append strings `pow10` Base 10 power and scale half-precision numbers `pow2` Base 2 exponentiation and scaling of floating-point numbers `power` Element-wise power `prod` Product of array elements `rdivide` Right array division `real` Real part of complex number `rem` Remainder after division `round` Round to nearest decimal or integer `rsqrt` Reciprocal square root `sign` Sign function (signum function) `sin` Sine of argument in radians `sinh` Hyperbolic sine `sinpi` Compute sin(X*pi) accurately `sqrt` Square root `sum` Sum of array elements `tan` Tangent of argument in radians `tanh` Hyperbolic tangent `times` Multiplication `uminus` Unary minus `uplus` Unary plus
 `allfinite` Determine if all array elements are finite `anynan` Determine if any array element is `NaN` `cast` Convert variable to different data type `cell` Cell array `double` Double-precision arrays `eps` Floating-point relative accuracy `flintmax` Largest consecutive integer in floating-point format `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 `isinteger` Determine whether input is integer array `islogical` Determine if input is logical array `isnan` Determine which array elements are NaN `isnumeric` Determine whether input is numeric array `isobject` Determine if input is MATLAB object `isreal` Determine whether array uses complex storage `logical` Convert numeric values to logicals `NaN` Create array of all `NaN` values `realmax` Largest positive floating-point number `realmin` Smallest normalized floating-point number `single` Single-precision arrays `storedInteger` Stored integer value of `fi` object `typecast` Convert data type without changing underlying data `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` `and` Find logical AND ```Short-Circuit AND``` Logical AND with short-circuiting `any` Determine if any array elements are nonzero `eq` Determine equality `ge` Determine greater than or equal to `gt` Determine greater than `isequal` Determine array equality `isequaln` Determine array equality, treating NaN values as equal `le` Determine less than or equal to `lt` Determine less than `ne` Determine inequality `not` Find logical NOT `or` Find logical OR ```Short-Circuit OR``` Logical OR with short-circuiting
 `cat` Concatenate arrays `chol` Cholesky factorization `circshift` Shift array circularly `colon` Vector creation, array subscripting, and `for`-loop iteration `complex` Create complex array `ctranspose` Complex conjugate transpose `empty` Create empty array of specified class `eye` Identity matrix `flip` Flip order of elements `fliplr` Flip array left to right `flipud` Flip array up to down `horzcat` Horizontal concatenation for heterogeneous arrays `iscolumn` Determine if input is column vector `isempty` Determine whether array is empty `isfinite` Determine which array elements are finite `isinf` Determine which array elements are infinite `ismatrix` Determine whether input is matrix `isrow` Determine if input is row vector `isscalar` Determine whether input is scalar `issorted` Determine if array is sorted `isvector` Determine whether input is vector `length` Length of largest array dimension `lu` LU matrix factorization `max` Maximum elements of array `min` Minimum elements of array `ndims` Number of array dimensions `numel` Number of array elements `ones` Create array of all ones `permute` Permute array dimensions `repelem` Repeat copies of array elements `repmat` Repeat copies of array `reshape` Reshape array `size` Array size `sort` Sort array elements `squeeze` Remove dimensions of length 1 `transpose` Transpose vector or matrix `vertcat` Vertically concatenate for heterogeneous arrays `zeros` Create array of all zeros
 `area` Area of 2-D alpha shape `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
 `activations` (Deep Learning Toolbox) Compute deep learning network layer activations `classify` (Deep Learning Toolbox) Classify data using trained deep learning neural network `predict` (Deep Learning Toolbox) Reconstruct the inputs using trained autoencoder `predictAndUpdateState` (Deep Learning Toolbox) Predict responses using a trained recurrent neural network and update the network state

To display a list of supported functions, at the MATLAB Command Window, enter:

`methods(half(1))`

## 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 ```

## Version History

Introduced in R2018b