Calculate square root, signed square root, or reciprocal of squareroot
expand all in page
Libraries:
Simulink / Math Operations
HDL Coder / HDL Floating Point Operations
HDL Coder / Math Operations
Description
The Sqrt block calculates the square root, signed square root, orreciprocal of square root on the input signal. Select one of the following functionsfrom the Function parameter list.
Function | Description | Mathematical Expression | MATLAB® Equivalent |
---|---|---|---|
sqrt | Square root of the input |
| sqrt |
signedSqrt | Square root of the absolute value of the input, multiplied bythe sign of the input |
| — |
rSqrt | Reciprocal of the square root of the input |
| — |
The block icon changes to match the function.
Examples
expand all
Square Root of Negative Values
Open Model
This example shows how to compute the square root of a negative-valued input signal as complex-valued output.
By setting the Function to sqrt
and Output signal type to complex
, the block produces the correct result of 0 + 10i
for an input of -100
. If you change the Output signal type to auto
or real
, the block outputs NaN
.
Signed Square Root of Negative Values
Open Model
This example shows how to compute the signed square root of a negative-valued input signal.
When the block input is negative and you set the Function to signedSqrt
, the Sqrt block output is the same for any setting of the Output signal type parameter. By setting the Numerica display format of the first Display block to decimal (Stored Integer)
, you can see the value of the imaginary part for the complex output.
rSqrt of Floating-Point Inputs
Open Model
This example shows how to compute the rSqrt of a floating-point input signal. The Sqrt block has the following settings:
Method =
Newton-Raphson
Number of iterations =
1
Intermediate results data type =
Inherit: Inherit from input
After one iteration of the Newton-Raphson algorithm, the block output is within 0.0004 of the final value (0.4834).
rSqrt of Fixed-Point Inputs
This example uses:
- Fixed-Point DesignerFixed-Point Designer
- SimulinkSimulink
Open Model
This example shows how to compute the rSqrt of a fixed-point input signal. The Sqrt block has the following settings:
Method =
Newton-Raphson
Number of iterations =
1
Intermediate results data type =
Inherit: Inherit from input
After one iteration of the Newton-Raphson algorithm, the block output is within 0.0459 of the final value (0.4834).
Ports
Input
expand all
Port_1 — Input signal
scalar | vector | matrix
Input signal to the block to calculate the square root, signed square root, orreciprocal of square root. The sqrt
function acceptsreal or complex inputs, except for complex fixed-point signals.signedSqrt
and rSqrt
do notaccept complex inputs. The input signal must be a floating pointnumber.
This table summarizes the support for complex types and negativevalues for floating point, integer, and fixed-point data types forsqrt
, rSqrt
, andsignedSqrt
functions.
Function | Data Type | Complex | Negative Values | |
---|---|---|---|---|
Input | Output | |||
sqrt | Floating point | Yes | Yes | Yes |
Integer and fixed-point | No | No | No | |
| Floating point | No | No | Yes |
Integer and fixed-point | No | No | No | |
signedSqrt | Floating point | No | Yes | Yes |
Integer and fixed-point | No | No | No |
If the input is negative, set the Output signal to complex for allfunctions except signedSqrt
.
Data Types: single
| double
| half
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
Output
expand all
Port_1 — Output signal
scalar | vector | matrix
Output signal that is the square root, signed square root, orreciprocal of square root of the input signal. When the input is aninteger or fixed-point type, the output must be floating point.
Data Types: single
| double
| half
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
Parameters
expand all
Main
Function — Function the block performs
sqrt
(default) | signedSqrt
| rSqrt
Specify the mathematical function that the block calculates. The blockicon changes to match the function you select.
Function | Block Icon |
---|---|
sqrt | |
signedSqrt | |
rSqrt |
Dependency
When this parameter is set tosignedSqrt
, theIntermediate results data type parameter isdisabled.
Programmatic Use
Block Parameter:Operator |
Type: charactervector |
Values:'sqrt' | 'signedSqrt' | 'rSqrt' |
Default:'sqrt' |
Output signal type — Output signal type
auto
(default) | real
| complex
Specify the output signal type of the block.
Function | Input SignalType | Output Signal Type | ||
---|---|---|---|---|
Auto | Real | Complex | ||
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
Programmatic Use
Block Parameter:OutputSignalType |
Type: charactervector |
Values:'auto' | 'real' |'complex' |
Default:'auto' |
Sample time (-1 for inherited) — Interval between samples
-1
(default) | scalar | vector
Specify the time interval between samples. To inherit the sample time, set this parameter to -1
. For more information, see Specify Sample Time.
Dependencies
This parameter is visible only if you set it to a value other than -1
. To learn more, see Blocks for Which Sample Time Is Not Recommended.
Programmatic Use
Block Parameter: SampleTime |
Type: string scalar or character vector |
Default: "-1" |
Algorithm
Method — Method to compute reciprocal of square root
Exact
(default) | Newton-Raphson
Specify the method for computing the reciprocal of a square root. Thisparameter is only valid for the rSqrt
function.
Method | Data Types Supported | When to Use This Method |
---|---|---|
Exact | Floating point | You do not want an approximation. Note The input or output must be floatingpoint. |
Newton-Raphson | Floating-point, fixed-point, and built-ininteger types | You want a fast, approximatecalculation. |
The Exact
method provides results that areconsistent with MATLAB computations.
Note
The algorithms for sqrt
andsignedSqrt
are always ofExact
type, no matter what selectionappears on the block dialog box.
Programmatic Use
Block Parameter:AlgorithmType |
Type: charactervector |
Values:'Exact' |'Newton-Raphson' |
Default:'Exact' |
Number of iterations — Number of iterations used for Newton Raphson algorithm
3
(default) | integer
Specify the number of iterations to perform the Newton-Raphsonalgorithm. This parameter is valid with the rSqrt
function and the Newton-Raphson
value forMethod.
Note
If you enter 0, the block output is the initial guess of theNewton-Raphson algorithm.
Programmatic Use
Block Parameter:Iterations |
Type: charactervector |
Values: integer |
Default:'3' |
Data Types
The Data Type Assistant helps you set dataattributes. To use the Data Type Assistant, click . For more information, see Specify Data Types Using Data Type Assistant.
Intermediate results data type — Data type of intermediate results
Inherit:Inherit via internalrule
(default) | Inherit: Inherit from input
| Inherit: Inherit from output
| double
| single
| int8
| uint8
| int16
| uint16
| int32
| uint32
| int64
| uint64
| fixdt(1,16,,0)
| fixdt(1,16,2^0,0)
| <data type expression>
Specify the data type for intermediate results when you setFunction to sqrt
orrSqrt
on the Mainpane.
The type can be inherited, specified directly, or expressed as a datatype object such as Simulink.NumericType
.
Note
To avoid overflow, the intermediate data type must be larger thanor equal to a data type that can contain the square of the outputdata type.
Follow these guidelines on setting an intermediate data typeexplicitly for the square root function, sqrt
:
Input and Output Data Types | Intermediate Data Type |
---|---|
Input or output is double. | Use double. |
Input or output is single, and any non-single datatype is not double. | Use single or double. |
Input and output are fixed point. | Use fixed point. |
Follow these guidelines on setting an intermediate data typeexplicitly for the reciprocal square root function,rSqrt
:
Input and Output Data Types | Intermediate Data Type |
---|---|
Input is double and output is not single. | Use double. |
Input is not single and output is double. | Use double. |
Input and output are fixed point. | Use fixed point. |
Caution
Do not set Intermediate results data type toInherit:Inherit from output
when:
You select
Newton-Raphson
tocompute the reciprocal of a square root.The input data type is floating point.
The output data type is fixed point.
Under these conditions, selecting Inherit:Inheritfrom output
yields suboptimal performance andproduces an error.
To avoid this error, convert the input signal from afloating-point to fixed-point data type. For example, insert aData Type Conversionblock in front of the Sqrt block to perform the conversion.
Dependencies
This parameter is disabled when the Functionparameter is set to signedSqrt
.
Programmatic Use
Block Parameter:IntermediateResultsDataTypeStr |
Type: charactervector |
Values: 'Inherit: Inherit via internalrule' | 'Inherit: Inherit frominput' | 'Inherit: Inherit fromoutput' | 'double' |'single' , 'int8' ,'uint8' , int16 ,'uint16' , 'int32' ,'uint32' , 'int64' ,'uint64' ,fixdt(1,16,0) ,fixdt(1,16,2^0,0) . '<datatype expression>' |
Default: 'Inherit:Inherit via internal rule' |
Output — Output data type
Inherit: Same as firstinput
(default) | Inherit: Inherit via internal rule
| Inherit: Inherit via backpropagation
| double
| single
| half
| int8
| int32
| uint32
| int64
| uint64
| fixdt(1,16,2^0,0)
| <data type expression>
| ...
Specify the output data type. The type can be inherited, specifieddirectly, or expressed as a data type object such asSimulink.NumericType
.
Dependencies
When input is a floating-point data type smaller than singleprecision, the Inherit: Inherit via internalrule
output data type depends on the setting ofthe Inherit floating-point output type smaller than single precision configuration parameter. Data types are smaller than singleprecision when the number of bits needed to encode the data type isless than the 32 bits needed to encode the single-precision datatype. For example, half
andint16
are smaller than singleprecision.
Programmatic Use
Block Parameter:OutDataTypeStr |
Type: charactervector |
Values: 'Inherit: Inherit via internalrule' | 'Inherit: Inherit via backpropagation' | 'Inherit: Same as firstinput' | 'double' |'single' | 'half' |'int8' | 'uint8' |int16 | 'uint16' |'int32' | 'uint32' |'int64' | 'uint64' |fixdt(1,16,0) |fixdt(1,16,2^0,0) |fixdt(1,16,2^0,0) | '<datatype expression>' |
Default: 'Inherit:Same as first input' |
Minimum — Minimum output value for range checking
[]
(default) | scalar
Specify the lower value of the output range that Simulink® checks as a finite, real, double, scalar value.
Note
If you specify a bus object as the data type for this block, donot set the minimum value for bus data on the block. Simulink ignores this setting. Instead, set the minimum valuesfor bus elements of the bus object specified as the data type. Forinformation on the Minimum parameter for a bus element, see Simulink.BusElement.
Simulink uses the minimum to perform:
Parameter range checking (see Specify Minimum and Maximum Values for Block Parameters) for someblocks.
Simulation range checking (see Specify Signal Ranges and Enable Simulation Range Checking).
Automatic scaling of fixed-point data types.
Optimization of the code that you generate from the model.This optimization can remove algorithmic code and affect theresults of some simulation modes such as SIL or externalmode. For more information, see Optimize using the specified minimum and maximum values (Embedded Coder).
Note
Output minimum does not saturate or clipthe actual output signal. Use the Saturation blockinstead.
Programmatic Use
Block Parameter:OutMin |
Type: charactervector |
Values: scalar |
Default: '[]' |
Maximum — Maximum output value for range checking
[]
(default) | scalar
Specify the upper value of the output range that Simulink checks as a finite, real, double, scalar value.
Note
If you specify a bus object as the data type for this block, donot set the maximum value for bus data on the block. Simulink ignores this setting. Instead, set the maximum valuesfor bus elements of the bus object specified as the data type. Forinformation on the Maximum parameter for a bus element, see Simulink.BusElement.
Simulink uses the maximum value to perform:
Parameter range checking (see Specify Minimum and Maximum Values for Block Parameters) for someblocks.
Simulation range checking (see Specify Signal Ranges and Enable Simulation Range Checking).
Automatic scaling of fixed-point data types.
Optimization of the code that you generate from the model.This optimization can remove algorithmic code and affect theresults of some simulation modes such as SIL or externalmode. For more information, see Optimize using the specified minimum and maximum values (Embedded Coder).
Note
Output maximum does not saturate or clipthe actual output signal. Use the Saturation blockinstead.
Programmatic Use
Block Parameter:OutMax |
Type: charactervector |
Values: scalar |
Default: '[]' |
Integer rounding mode — Rounding mode for fixed-point operations
Floor
(default) | Ceiling
| Convergent
| Nearest
| Round
| Simplest
| Zero
Specify the rounding mode for fixed-point operations. For more information, see Rounding (Fixed-Point Designer).
Programmatic Use
Block Parameter: RndMeth |
Type: character vector |
Values: 'Ceiling' | 'Convergent' | 'Floor' | 'Nearest' | 'Round' | 'Simplest' | 'Zero' |
Default: 'Floor' |
Lock output data type setting against changes by the fixed-point tools — Prevent fixed-point tools from overriding data types
off
(default) | on
Select to lock the output data type setting of this block against changes by the Fixed-Point Tool and the Fixed-Point Advisor. For more information, see Use Lock Output Data Type Setting (Fixed-Point Designer).
Programmatic Use
Block Parameter: LockScale |
Type: character vector |
Values: 'off' | 'on' |
Default: 'off' |
Saturate on integer overflow — Choose the behavior when integer overflow occurs
off
(default) | on
Action | Reasons for Taking This Action | What Happens for Overflows | Example |
---|---|---|---|
Select this check box. | Your model has possible overflow, and you want explicit saturation protection in the generated code. | Overflows saturate to either the minimum or maximum value that the data type can represent. | The maximum value that the |
Do not select this check box. | You want to optimize efficiency of your generated code. You want to avoid overspecifying how a block handles out-of-range signals. For more information, see Troubleshoot Signal Range Errors. | Overflows wrap to the appropriate value that is representable by the data type. | The maximum value that the |
When you select this check box, saturation applies to every internal operation on the block, not just the output or result. Usually, the code generation process can detect when overflow is not possible. In this case, the code generator does not produce saturation code.
Programmatic Use
Block Parameter: DoSatur |
Type: character vector |
Value: 'off' | 'on' |
Default: 'off' |
Block Characteristics
Data Types |
|
Direct Feedthrough |
|
Multidimensional Signals |
|
Variable-Size Signals |
|
Zero-Crossing Detection |
|
Extended Capabilities
C/C++ Code Generation
Generate C and C++ code using Simulink® Coder™.
HDL Code Generation
Generate VHDL, Verilog and SystemVerilog code for FPGA and ASIC designs using HDL Coder™.
HDL Coder™ provides additional configuration options that affect HDLimplementation and synthesized logic.
Sqrt Function Modes
For the Sqrt block with Function set tosqrt
, the code generator supports variousarchitectures and data types.
The sqrtfunction
architecture supports code generation forfixed-point types and floating-point types. When you use floating-point types,set the floating point IP library parameters to Native FloatingPoint
. You can specify theLatencyStrategy and CustomLatencyHDL properties to choose from a range of frequency values when targeting yourdesign on the hardware platform.
Use the UseMultiplier HDL block property in combinationwith the LatencyStrategy andCustomLatency properties to specify whether to computethe square root by using a pipelined shift and add or multiplicationalgorithm
Native Floating Point Settings for Different Modes
For this architecture, you can specify theHandleDenormals andLatencyStrategy settings from the NativeFloating Point tab in the HDL Block Properties dialog box.
Architecture | Fixed-Point | Native Floating-Point | HandleDenormals | LatencyStrategy |
---|---|---|---|---|
sqrtfunction | ✓ | ✓ | ✓ | ✓ |
sqrtnewton | ✓ | — | — | — |
sqrtnewtonsinglerate | ✓ | — | — | — |
recipsqrtnewton | ✓ | — | — | — |
recipsqrtnewtonsinglerate | ✓ | — | — | — |
HDL Architecture
This block has multi-cycle implementations that introduce additionallatency in the generated code. To see the added latency, view thegenerated model or validation model. See Generated Model and Validation Model (HDL Coder).
Architecture | Parameter | Additional cycles of latency | Description |
---|---|---|---|
SqrtFunction (default) |
| Depends on parameter choices, output word length, and input and output fractionlengths. | To specify this architecture, set Function to Computethe square root by using a pipelined shift/additionalgorithm or multiplication-based algorithm. The To see the latencycalculation, see HDLMathLib Sqrt (HDL Coder). Improve design frequency andreduce resource utilization by setting theUseMultiplier to |
SqrtNewton | Iterations | Iterations + 3 | To specify this architecture, set Function to Use theiterative Newton method. Select this option to optimizearea. The default value for Therecommended value for |
SqrtNewtonSingleRate | Iterations | (Iterations * 4) + 6 | To specify this architecture, set Function to Use thesingle rate pipelined Newton method. Select this option tooptimize speed, or if you want a single rateimplementation. The default value for Therecommended value for |
RecipSqrtNewton | Iterations | Iterations + 2 | To specify this architecture, set Function to Use theiterative Newton method. Select this option to optimizearea. |
RecipSqrtNewtonSingleRate | Iterations | (Iterations * 4) + 5 | To specify this architecture, set Function to Use thesingle rate pipelined Newton method. Select this option tooptimize speed, or if you want a single rateimplementation. |
The Newton-Raphson iterative method:
ReciprocalRsqrtBasedNewton
andReciprocalRsqrtBasedNewtonSingleRate
implementthe Newton-Raphson method with:
HDL Block Properties
General | |
---|---|
ConstrainedOutputPipeline | Number of registers to place at the outputs by moving existing delays within your design. Distributed pipelining does not redistribute these registers. The default is |
Iterations | Number of iterations for |
InputPipeline | Number of input pipeline stages to insert in the generated code. Distributed pipelining and constrained output pipelining can move these registers. The default is |
OutputPipeline | Number of output pipeline stages to insert in the generated code. Distributed pipelining and constrained output pipelining can move these registers. The default is |
UseMultiplier | Select algorithm for Increase design frequency andreduce resource utilization by setting theUseMultiplier to |
LatencyStrategy | Specify whether to map the blocks in your design to Increase design frequency and reduceresource utilization by setting theUseMultiplier to |
CustomLatency | When LatencyStrategy is set to |
Native Floating Point | |
---|---|
HandleDenormals | Specify whether you want HDL Coder to insert additional logic to handle denormal numbers in your design. Denormal numbers are numbers that have magnitudes less than the smallest floating-point number that can be represented without leading zeros in the mantissa. The default is |
Restrictions
Input must be an unsigned scalar value.
Output is a fixed-point scalar value.
PLC Code Generation
Generate Structured Text code using Simulink® PLC Coder™.
Fixed-Point Conversion
Design and simulate fixed-point systems using Fixed-Point Designer™.
Version History
Introduced in R2010a
See Also
Math Function | Trigonometric Function
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- Deutsch
- English
- Français
- United Kingdom (English)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本 (日本語)
- 한국 (한국어)
Contact your local office