EasyManuals Logo

Texas Instruments C2000 Workshop Guide And Lab Manual

Texas Instruments C2000
342 pages
To Next Page IconTo Next Page
To Next Page IconTo Next Page
To Previous Page IconTo Previous Page
To Previous Page IconTo Previous Page
Page #196 background image
IQmath
8 - 20 C2000 Microcontroller Workshop - Numerical Concepts
Using the operator overloading features of C++, we can overload the multiplication operand "*"
such that when a particular data type is encountered, it will automatically implement the scaled
multiply operation. Let’s define a data type called "iq" and assign the linear variables to this data
type:
iq Y, M, X, B // numbers are all Q24
The overloading of the multiply operand in C++ can be defined as follows:
iq operator*(const iq &M, const iq &X){return((int64)M*(int64) X) >> 24;}
Then the linear equation, in C++, becomes:
Y = M * X + B;
This final equation looks identical to the floating-point representation. It looks "natural". The
four approaches are summarized in the table below:
Math Implementations
Linear Equation Code
32-bit floating-point math in C
Y = M * X + B;
32-bit fixed-point "Q" math in C
Y = ((int64) M * (int64) X) + (int64) B << 24) >> 24;
32-bit IQmath in C
Y = _IQ24mpy(M, X) + B;
32-bit IQmath in C++
Y = M * X + B;
Essentially, the mathematical approach of scaling the multiplier operand enables a cleaner and a
more "natural" approach to coding fixed-point problems. For want of a better term, we call this
approach "IQmath" or can also be described as "virtual floating-point".

Table of Contents

Other manuals for Texas Instruments C2000

Questions and Answers:

Question and Answer IconNeed help?

Do you have a question about the Texas Instruments C2000 and is the answer not in the manual?

Texas Instruments C2000 Specifications

General IconGeneral
BrandTexas Instruments
ModelC2000
CategoryMicrocontrollers
LanguageEnglish

Related product manuals