| FEXP | Function (Macro constructor)

timath.h

A deprecated macro used to define floating point numbers.

Yet one deprecated macro. `FEXP(m,e)` constructs a number `m*10^e` where m is a sequence of digits (without decimal point) which is assumed to represent decimal number m.mmmm..., e.g. `FEXP(2514,5)` represents number `2.514*10^5` (`251400` or `2.514e5` using conventional exponential notation), and `FEXP(42,-3)` represents number `4.2*10^-3` (`0.0042` or `4.2e-3`). `FEXP(1,3)` is `1*10^3` (`1000` or `1e3`). mantissa must be the constant sequence of digits, without leading zeros, but the way on which `FEXP` is implemented allows that exponent may be a variable or an expression, like `FEXP(314,a)`, when even mantissa is not a constant, you can use function ldexp10. Anyway, you don't need to use `FEXP` any more: simply use conventional exponential notation. E.g. simply use `4.2e3` instead of `FEXP(42,3)` etc.
Note that `a = FEXP(m,e)` is not the same as `bcd_var(a).exponent = e+0x4000` and `bcd_var(a).mantissa = m`. The first part is true; the second is not. More precise, `FEXP` shifts m to the left enough number of times to produce correct normalized mantissa (see bcd for more info). So, when you type `a = FEXP(352,3)` it works like `bcd_var(a).exponent = 0x4003` and `bcd_var(a).mantissa = 0x3520000000000000`. For more description about internal format of floating point numbers, see bcd.

See also: float_to_bcd, bcd_to_float, bcd_var