pow2
Efficient fixed-point multiplication by 2K
Syntax
b = pow2(a,K)
Description
b = pow2(a,K)
returns the value of a
shifted
by K
bits where K
is an integer
and a
and b
are fi
objects.
The output b
always has the same word length and
fraction length as the input a
.
Note
In fixed-point arithmetic, shifting by K
bits is equivalent to,
and more efficient than, computing b =
a*2K.
If K
is a non-integer, the pow2
function
will round it to floor
before performing the calculation.
The scaling of a
must be equivalent to binary
point-only scaling; in other words, it must have a power of 2 slope
and a bias of 0.
a
can be real or complex. If a
is
complex, pow2
operates on both the real and complex
portions of a
.
The pow2
function obeys the OverflowAction
and RoundingMethod
properties
associated with a
. If obeying the RoundingMethod
property
associated with a
is not important, try using the bitshift
function.
The pow2
function does not support fi
objects
of data type Boolean
.
The function also does not support the syntax b = pow2(a)
when a
is
a fi
object.
Examples
In the following example, a
is a real-valued fi
object,
and K
is a positive integer.
The pow2
function shifts the bits of a
3
places to the left, effectively multiplying a
by 23.
a = fi(pi,1,16,8) b = pow2(a,3) binary_a = bin(a) binary_b = bin(b)
a = 3.140625 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 16 FractionLength: 8 b = 25.125 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 16 FractionLength: 8 binary_a = '0000001100100100' binary_b = '0001100100100000'
In the following example, a
is a real-valued fi
object,
and K
is a negative integer.
The pow2
function shifts the bits of a
4
places to the right, effectively multiplying a
by 2–4.
a = fi(pi,1,16,8) b = pow2(a,-4) binary_a = bin(a) binary_b = bin(b)
a = 3.140625 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 16 FractionLength: 8 b = 0.1953125 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 16 FractionLength: 8 binary_a = '0000001100100100' binary_b = '0000000000110010'
The following example shows the use of pow2
with
a complex fi
object:
format long g P = fipref('NumericTypeDisplay', 'short'); a = fi(57 - 2i, 1, 16, 8)
a = 57 - 2i numerictype(1,16,8)
pow2(a,2)
ans = 127.99609375 - 8i numerictype(1,16,8)
Extended Capabilities
Version History
Introduced before R2006a