Calculate square root, signed square root, or reciprocal of square root
Simulink / Math Operations
HDL Coder / HDL Floating Point Operations
HDL Coder / Math Operations
The Sqrt block calculates the square root, signed square root, or reciprocal of square root on the input signal. Select one of the following functions from 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 by the sign of the input 
 — 
rSqrt
 Reciprocal of the square root of the input 
 — 
The block icon changes to match the function.
Port_1
— Input signalInput signal to the block to calculate the square root, signed square root, or
reciprocal of square root. The sqrt
function accepts
real or complex inputs, except for complex fixedpoint signals.
signedSqrt
and rSqrt
do not
accept complex inputs. For the signedSqrt
function,
the input signal must be a floating point number.
If the input is negative, set the Output signal to complex for all
functions except signedSqrt
.
Data Types: single
 double
 int8
 int16
 int32
 uint8
 uint16
 uint32
 fixed point
Port_1
— Output signalOutput signal that is the square root, signed square root, or reciprocal of square root of the input signal. When the input is an integer or fixedpoint type, the output must be floating point.
Data Types: single
 double
 int8
 int16
 int32
 uint8
 uint16
 uint32
 fixed point
Function
— Function the block performssqrt
(default)  signedSqrt
 rSqrt
Specify the mathematical function that the block calculates. The block icon changes to match the function you select.
Function  Block Icon 

sqrt
 
signedSqrt
 
rSqrt

When this parameter is set to
signedSqrt
, the
Intermediate results data type parameter is
disabled.
Block Parameter:
Operator 
Type: character vector 
Values:
'sqrt'  'signedSqrt'
 'rSqrt' 
Default:
'sqrt' 
Output signal type
— Output signal typeauto
(default)  real
 complex
Specify the output signal type of the block.
Function  Input Signal Type  Output Signal Type  

Auto  Real  Complex  








 








 









Block
Parameter:
OutputSignalType 
Type: character vector 
Values:
'auto'  'real' 
'complex' 
Default:
'auto' 
Sample time
— Specify sample time as a value other than 1
1
(default)  scalar  vectorSpecify the sample time as a value other than 1. For more information, see Specify Sample Time.
This parameter is not visible unless it is explicitly set to a value other than
1
. To learn more, see Blocks for Which Sample Time Is Not Recommended.
Block Parameter:
SampleTime 
Type: character vector 
Values: scalar or vector 
Default:
'1' 
Method
— Method to compute reciprocal of square rootExact
(default)  NewtonRaphson
Specify the method for computing the reciprocal of a square root. This
parameter 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. NoteThe input or output must be floating point. 
NewtonRaphson
 Floatingpoint, fixedpoint, and builtin integer types  You want a fast, approximate calculation. 
The Exact
method provides results that are
consistent with MATLAB computations.
The algorithms for sqrt
and
signedSqrt
are always of
Exact
type, no matter what selection
appears on the block dialog box.
Block Parameter:
AlgorithmType 
Type: character vector 
Values:
'Exact' 
'NewtonRaphson' 
Default:
'Exact' 
Number of iterations
— Number of iterations used for Newton Raphson algorithm3
(default)  integerSpecify the number of iterations to perform the NewtonRaphson
algorithm. This parameter is valid with the rSqrt
function and the NewtonRaphson
value for
Method.
If you enter 0, the block output is the initial guess of the NewtonRaphson algorithm.
Block Parameter:
Iterations 
Type: character vector 
Values: integer 
Default:
'3' 
Click the Show data type assistant button to display the Data Type Assistant, which helps you set the data type attributes. For more information, see Specify Data Types Using Data Type Assistant.
Intermediate results data type
— Data type of intermediate resultsInherit:Inherit via internal
rule
(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 set
Function to sqrt
or
rSqrt
on the Main
pane.
The type can be inherited, specified directly, or expressed as a data
type object such as Simulink.NumericType
.
Follow these guidelines on setting an intermediate data type
explicitly 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 nonsingle data type is not double.  Use single or double. 
Input and output are fixed point.  Use fixed point. 
Follow these guidelines on setting an intermediate data type
explicitly 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. 
Do not set Intermediate results data type to
Inherit:Inherit from output
when:
You select NewtonRaphson
to
compute 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:Inherit
from output
yields suboptimal performance and
produces an error.
To avoid this error, convert the input signal from a floatingpoint to fixedpoint data type. For example, insert a Data Type Conversion block in front of the Sqrt block to perform the conversion.
This parameter is disabled when the Function
parameter is set to signedSqrt
.
Block Parameter:
IntermediateResultsDataTypeStr 
Type: character vector 
Values: 'Inherit: Inherit via internal
rule'  '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>' 
Default: 'Inherit:
Inherit via internal rule' 
Output
— Output data typeInherit: Same as first
input
(default)  Inherit: Inherit via internal rule
 Inherit: Inherit via back
propagation
 double
 single
 int8
 int32
 uint32
 int64
 uint64
 fixdt(1,16,2^0,0)
 <data type expression>
 ...Specify the output data type. The type can be inherited, specified
directly, or expressed as a data type object such as
Simulink.NumericType
.
Block Parameter:
OutDataTypeStr 
Type: character vector 
Values: 'Inherit: Inherit via internal
rule'  'Inherit: Inherit via back
propagation'  'Inherit: Same as first
input'  'double' 
'single' , 'int8' ,
'uint8' , int16 ,
'uint16' , 'int32' ,
'uint32' , 'int64' ,
'uint64' ,
fixdt(1,16,0) ,
fixdt(1,16,2^0,0) ,
fixdt(1,16,2^0,0) . '<data
type expression>' 
Default: 'Inherit:
Same as first input' 
Minimum
— Minimum output value for range checking[]
(default)  scalarSpecify the lower value of the output range that Simulink^{®} checks as a finite, real, double, scalar value.
If you specify a bus object as the data type for this block, do
not set the minimum value for bus data on the block. Simulink ignores this setting. Instead, set the minimum values
for bus elements of the bus object specified as the data type. For
information 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 some blocks.
Simulation range checking (see Signal Ranges and Enable Simulation Range Checking).
Automatic scaling of fixedpoint data types.
Optimization of the code that you generate from the model. This optimization can remove algorithmic code and affect the results of some simulation modes such as SIL or external mode. For more information, see Optimize using the specified minimum and maximum values (Simulink Coder).
Output minimum does not saturate or clip the actual output signal. Use the Saturation block instead.
Block Parameter:
OutMin 
Type: character vector 
Values: scalar 
Default: '[
]' 
Maximum
— Maximum output value for range checking[]
(default)  scalarSpecify the upper value of the output range that Simulink checks as a finite, real, double, scalar value.
If you specify a bus object as the data type for this block, do
not set the maximum value for bus data on the block. Simulink ignores this setting. Instead, set the maximum values
for bus elements of the bus object specified as the data type. For
information 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 some blocks.
Simulation range checking (see Signal Ranges and Enable Simulation Range Checking).
Automatic scaling of fixedpoint data types.
Optimization of the code that you generate from the model. This optimization can remove algorithmic code and affect the results of some simulation modes such as SIL or external mode. For more information, see Optimize using the specified minimum and maximum values (Simulink Coder).
Output maximum does not saturate or clip the actual output signal. Use the Saturation block instead.
Block Parameter:
OutMax 
Type: character vector 
Values: scalar 
Default: '[
]' 
Integer rounding mode
— Rounding mode for fixedpoint operationsFloor
(default)  Ceiling
 Convergent
 Nearest
 Round
 Simplest
 Zero
Specify the rounding mode for fixedpoint operations. For more information, see Rounding (FixedPoint Designer).
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 fixedpoint tools
— Prevent fixedpoint tools from overriding data typesoff
(default)  on
Select to lock the output data type setting of this block against changes by the FixedPoint Tool and the FixedPoint Advisor. For more information, see Use Lock Output Data Type Setting (FixedPoint Designer).
Block Parameter:
LockScale 
Type: character vector 
Values:
'off' 
'on' 
Default:
'off' 
Saturate on integer overflow
— Choose the behavior when integer overflow occurson
(default)  boolean
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 outofrange signals. For more information, see Check for 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.
Block Parameter:
SaturateOnIntegerOverflow 
Type: character vector 
Value: 'off' 
'on' 
Default: 'on' 
Data Types 

Direct Feedthrough 

Multidimensional Signals 

VariableSize Signals 

ZeroCrossing Detection 

HDL Coder™ provides additional configuration options that affect HDL implementation and synthesized logic.
For the Sqrt block with Function set to
sqrt
or rSqrt
, the
code generator supports various architectures and data types. The
sqrtfunction
architecture supports code
generation in native floatingpoint mode. For this architecture, you can specify
the HandleDenormals and
LatencyStrategy settings from the Native
Floating Point tab in the HDL Block Properties dialog box.
Architecture  FixedPoint  Native FloatingPoint  HandleDenormals  LatencyStrategy 

sqrtfunction  ✓  ✓  ✓  ✓ 
sqrtnewton  ✓  —  —  — 
sqrtnewtonsinglerate  ✓  —  —  — 
sqrtbitset  ✓  —  —  — 
recipsqrtnewton  ✓  —  —  — 
recipsqrtnewtonsinglerate  ✓  —  —  — 
This block has multicycle implementations that introduce additional latency in the generated code. To see the added latency, view the generated model or validation model. See Generated Model and Validation Model (HDL Coder).
Architecture  Parameter  Additional cycles of latency  Description 

SqrtFunction (default)  None  0  Use a bitset shift/addition algorithm. The

SqrtBitset  UseMultiplier  0  Algorithm depends on the

SqrtNewton  Iterations  Iterations + 3  Use the iterative Newton method. Select this option to optimize area. The default value for
The
recommended value for 
SqrtNewtonSingleRate  Iterations  (Iterations * 4) + 6  Use the single rate pipelined Newton method. Select this option to optimize speed, or if you want a single rate implementation. The default value for
The
recommended value for 
RecipSqrtNewton  Iterations  Iterations + 2  Use the iterative Newton method. Select this option to optimize area. 
RecipSqrtNewtonSingleRate  Iterations  (Iterations * 4) + 5  Use the single rate pipelined Newton method. Select this option to optimize speed, or if you want a single rate implementation. 
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

The Sqrt block does not support HDL code generation with
double
data types in the Native Floating
Point
mode.
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 floatingpoint
number that can be represented without leading zeros in the mantissa. The default is

LatencyStrategy  Specify whether to map the blocks in your design to 
NFPCustomLatency  To specify a value, set LatencyStrategy to

Input must be an unsigned scalar value.
Output is a fixedpoint scalar value.
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.
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: .
Select web siteYou can also select a web site from the following list:
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.