| ISF 2.2 rev 5 Intelligent Sensing Framework for Kinetis with Processor Expert

- Main Page
- Modules
- Data Structures
- Files

- File List
- Globals

Ac_Fixed_utils.h
Go to the documentation of this file.
1 /*!
2 ********************************************************************************
3 * File: Ac_Fixed_utils.h
4 *
5 * Copyright (c) 2015, Freescale Semiconductor, Inc.
6 *
7 *******************************************************************************/
8
9 #ifndef AC_FIXED_UTILS_H_
10 #define AC_FIXED_UTILS_H_
11
12 #include "isf_types.h" // For uint32
13
14 /*!
15 *
16 * @brief This function converts an IEEE-754 32-bit floating point number into a
17 * fixed point integer format
18 *
19 * @details The AC_Fixed(W,I,S) format describes a fixed point representation
20 * for numbers with a fractional component.
21 * The W is the full width of the resultant integer in bits
22 * W=16 means the integer is 16 bits wide and can be stored in a short
23 * or uint16.
24 * I represents the number of bits on the integer side of the fixed
25 * decimal point and includes the sign bit, if the number is a signed value.
26 * I=8 would indicate 8 bits are used for the integer portion of the number.
27 * S represents the signedness of the number. if S=1 then 1 bit in (I)
28 * is used as the sign bit. I=8,S=1 means the integer value is stored as a
29 * signed two's complement value with the same range as a signed 8-bit char.
30 * Each remaining bit (there are W-I of them) represent the fractional component
31 * of the value. the first bit to the right of the fixed decimal point represents the
32 * value 0.5, the next to the right 0.25 etc. In other words, the least significant bit
33 * would have the value 1 / ( 2^(W-I)) and each bit to the left would be twice that.
34 * As an example the value 3.625 could be represented in AC_Fixed(16,3,1) as
35 * 3.625 * 2^13 = 29696d = 0111010000000000b where the fixed decimal point comes between
36 * bits 12 and 13: 011.1010000000000 and it is easy to see that there is an integer 3
37 * to the left of the decimal and a 0.5 + 0.125 on the right for a total of 3.625.
38 *
39 *
40 * @param [in] fN The floating point number to be converted
41 *
42 * @param [in] W The total bit width of the result
43 *
44 * @param [in] I The bit width of the integer portion of the result
45 *
46 * @param [in] S indicates whether the representation encodes a sign bit or not
47 *
48 * @param [in,out] status A pointer to a status word that can be set to indicate
49 * the success or failure of a conversion.
50 * Instead of the traditional 0 or 1 return value, float32_To_AcFixed
51 * increments the status word when an error occurs. By passing in
52 * a pointer to an integer with zero value, status will contain the
53 * traditional zero or one at the completion of the call.
54 * However, if desired, several calls to float32_To_AcFixed can be invoked
55 * in a row, passing in the same pointer each time such that
56 * the integer will be incremented each time an error occurs.
57 * This allows the program to do a series of conversions and then check
58 * the validity of the conversions as a group rather than individually.
59 *
60 * @return float32_To_AcFixed() returns an uint32 value containing the
61 * converted floating point number in the specified fixed point
62 * format.
63 *
64 * @retval 0 returned in the status word indicates a successful conversion.
65 *
66 * @retval 1 returned in the status word indicates an unsucessful conversion.
67 *
68 * @Constraints W, I and S are not checked for consistency or range prior to use
69 * so the caller must ensure they are appropriate values.
70 *
71 * @Reentrant Yes
72 */
73 uint32 float32_To_AcFixed(float fN, uint8 W, uint8 I, uint8 S, int32 *status);
74
75 #endif /* AC_FIXED_UTILS_H_ */
uint8
unsigned char uint8
Definition: isf_types.h:76
isf_types.h
The isf_types.h file contains the ISF data type definitions and some of the globally used macros...
float32_To_AcFixed
uint32 float32_To_AcFixed(float fN, uint8 W, uint8 I, uint8 S, int32 *status)
This function converts an IEEE-754 32-bit floating point number into a fixed point integer format...
Definition: Ac_Fixed_utils.c:22
int32
signed long int int32
Definition: isf_types.h:74
uint32
unsigned long int uint32
Definition: isf_types.h:78
- © Freescale Semiconductor, Inc. 2016. All Rights Reserved.