What is the "net slope"
5 ビュー (過去 30 日間)
Andy Bartlett 2023 年 2 月 21 日
編集済み: Andy Bartlett 2023 年 2 月 21 日
Net slope is used in fixed-point operations to achieve agreement of scaling. The slopes of all the variables involved in an operation are combined into one multiplicative term called the net slope.
For example, multiply two variables with 10 bits to the right of the binary point and assign the product to a type with 12 bits to the right of the binary point.
The real world operation is
Vout = V1 * V2
The fixed-point scalings for these variables showing the slopes and stored integers are
Vout = (2^-12) * Qout
V1 = (2^-10) * Q1
V1 = (2^-10) * Q2
Via substitution we get
(2^-12) * Qout = (2^-10) * Q1 * (2^-10) * Q2
solving for the output stored integer and conslidating terms, we will see the Net Slope
Qout = (2^(-10-10+12)) * Q1 * Q2
NetSlope = 2^(-10-10+12) = 2^-8
In this case, the NetSlope can be perfectly represented in fixed-point. In fact, a simple shift right of 8 bits will efficiently achieve agreement of all the scalings.
The NetSlope gets more challenging when it is not an exact power of two.
Suppose the two inputs and the output had slopes of 6, 4, and 9 respectively. In that case, we have
NetSlope = (6*4)/9 = 8/3
To avoid costly division, this will get approximated with a fixed-point variable such as
format long g
The documentation of Rules of Arithmetic Operations gives more examples of computing net slopes