FAST Specification 1 x 1 document

Imported from previous forum

Hi,

The question is from FAST Specification 1 x 1.pdf.
(http://www.fixprotocol.org/documents/3066/FAST%20Specification%201%20x%201.pdf)

The third example given in Appendix 3.2.5 FAST v1.1 Delta Operator Examples (page 39 - Delta Operator Example – Mandatory Decimal with Initial Value ) is not clear.

I don’t understand why 12100 is given as exponent = 1 and mantissa = 1210 in previous value of the third entry in the table. Why it is not given as exponent = 2 and mantissa = 121 ?. I have thought exponent should be 2 since number of zeroes are equal to 2 in 12100.

Then similarly, can we specify 12000 as exponent = 1 and mantissa = 1200. But in the previous value of the second entry, 12000 is given as exponent = 3 and mantissa = 12.

Why 12000 and 12100 are specified in two different ways?

The question is from FAST Specification 1 x 1.pdf.
(http://www.fixprotocol.org/documents/3066/FAST%20Specification%201%20x%201.pdf)

The third example given in Appendix 3.2.5 FAST v1.1 Delta Operator
Examples (page 39 - Delta Operator Example – Mandatory Decimal with
Initial Value ) is not clear.

> > Why 12000 and 12100 are specified in two different ways? >

First of all the initial value is specified as 12000.

Section 6.2.2 of the document says:

" An initial value specified on an operator for a decimal field
" instruction will be normalized.

And Section 6.3.2 says:

" A decimal value is normalized by adjusting the mantissa and
" exponent so that the integer remainder after
" dividing the mantissa by 10 is not zero

Hence the initial value is represented as exponent = 3 and mantissa = 12

Next a Delta is received with exponent -2 and mantissa 1198

The exponent and mantissa exponents are applied separately according to Section 6.3.7.2 which says:
" The combined value is calculated by individually adding
" the exponent and the mantissa of the delta to their base value
" counterparts

Hence the new exponent is 3 + (-2) = 1
and the new mantissa is 12 + 1198 = 1200

These are the value that must kept in the dictionary for use by the next incoming delta. The decoder must not normalize this value because the encoder needs to be able to apply deltas separately to the exponent and mantissa. However the decoder is free to normalize the data that is actually delivered to the application, so it could report the decoded value as 12E3 even though it appears in the dictionary as 1200E1

The bottom line is the decoder must follow the encoders instructions literally as sent in order to keep the encoding and decoding in sync with each other.

Dale