Multiply two objects using `fimath`

object

`c = mpy(F,a,b)`

`c = mpy(F,a,b)`

performs elementwise multiplication
on `a`

and `b`

using `fimath`

object `F`

.
This is helpful in cases when you want to override the `fimath`

objects
of `a`

and `b`

, or if the `fimath`

properties
associated with `a`

and `b`

are
different. The output `fi`

object `c`

has
no local fimath.

`a`

and `b`

can both be `fi`

objects
with the same dimensions unless one is a scalar. If either `a`

or `b`

is
scalar, then `c`

has the dimensions of the nonscalar
object. `a`

and `b`

can also be
doubles, singles, or integers.

In this example, `c`

is the 40-bit product
of `a`

and `b`

with fraction length
30.

a = fi(pi); b = fi(exp(1)); F = fimath('ProductMode','SpecifyPrecision',... 'ProductWordLength',40,'ProductFractionLength',30); c = mpy(F, a, b)

c = 8.5397 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 40 FractionLength: 30

`c = mpy(F,a,b)`

is similar to

a.fimath = F; b.fimath = F; c = a .* b c = 8.5397 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 40 FractionLength: 30 RoundingMethod: nearest OverflowAction: saturate ProductMode: SpecifyPrecision ProductWordLength: 40 ProductFractionLength: 30 SumMode: FullPrecision

but not identical. When you use `mpy`

, the `fimath`

properties
of `a`

and `b`

are not modified,
and the output `fi`

object `c`

has
no local fimath. When you use the syntax `c = a .* b`

,
where `a`

and `b`

have their own `fimath`

objects,
the output `fi`

object `c`

gets
assigned the same `fimath`

object as inputs `a`

and `b`

.
See fimath Rules for Fixed-Point Arithmetic in the Fixed-Point
Designer™ User's
Guide for more information.

Was this topic helpful?