Imported from previous forum
Hello,
I would need a clarification.
The handbook [section 10.5.1 – Presence Map and NULL Utilization] says:
[…]If the decimal has optional presence, the exponent field is treated as an optional integer field and the mantissa field is treated as a mandatory integer field. The presence of the mantissa field and any related bits in the presence map are dependent on the presence of the exponent. The mantissa field appears in the stream iff the exponent value is considered present. If the mantissa has an operator that requires a bit in the presence map, this bit is present iff the exponent value is considered present.[…]
Let suppose I have the following decimal field in my template definition:
< decimal name=“MDEntryPx” id=“270” presence=“optional” >
< exponent > < copy value="-2" / > < / exponent >
< mantissa > < delta / > < / mantissa >
< /decimal >
For the best of my comprehension in this case the exponent is optional, and has its own bit in pmap (due to the copy operator).
If that bit is not set (the exponent is not present in the stream for sure) then the mantissa will be not present in the stream as well.
- Does the same worth if the bit in pmap is set but the exponent value is NULL?
- What about the new previous value of the Scaled Number if the exponent has to be considered absent?
Moreover, the fact that the exponent bit in pmap is not set should not imply that the value of the exponent field will be not assigned (e.g. it should be assigned to the copy initial value, or to the previous value stored in the dictionary).
3.Let suppose the mantissa is not in the stream (because of the exponent absence), what does it imply in term of the mantissa field value, and in term of the mantissa new previous value?
Many thanks in advance.
Kind regards,
– Ale
I am interpreting that part of the spec a little bit different. I thought that the exponent is considered present if the presence bit is 0. Because the Value is taken from the dictionary then. And then the whole thing makes sense to me.
can anybody confirm?
I hope you are not right, otherwise I can’t understand how can my FAST decoder work.
Usually, we say if the bit in pmap is set then the value is present in the stream…
If the bit is 0 the value is not present in the stream and it is taken from the dictionary only if the dictionary value is ‘assigned’, otherwise it could depend on initial value.
I would like to discuss this issue with you if you don’t agree, because I’m quite concerned regarding my implementation…
Regards,
– Ale
I am interpreting that part of the spec a little bit different. I
thought that the exponent is considered present if the presence bit is
0. Because the Value is taken from the dictionary then. And then the
whole thing makes sense to me.can anybody confirm?
Ale -
A bit in the pmap indicates how a field operator should be executed. The exact meaning of the bit is dependent on the operator type and its attributes.
The bit doesn’t automatically indicate whether an optional field is NULL or not. Only after exercising the operator according to the bit you’ll know if the value is NULL or not.
When using a decimal field with individual operators, and the value of an exponent field is NULL, the instruction for the mantissa should be skipped.
You may want to have a look a this post (and other posts in the same thread):
http://www.fixprotocol.org/discuss/read/24ed599c
/David
Hello, I would need a clarification.
The handbook [section 10.5.1 – Presence Map and NULL Utilization] says:
[…]If the decimal has optional presence, the exponent field is treated
as an optional integer field and the mantissa field is treated as a
mandatory integer field. The presence of the mantissa field and any
related bits in the presence map are dependent on the presence of the
exponent. The mantissa field appears in the stream iff the exponent
value is considered present. If the mantissa has an operator that
requires a bit in the presence map, this bit is present iff the exponent
value is considered present.[…]Let suppose I have the following decimal field in my template
definition:< decimal name=“MDEntryPx” id=“270” presence=“optional” > < exponent > <
copy value=“-2” / > < / exponent > < mantissa > < delta / > < / mantissa< /decimal >
For the best of my comprehension in this case the exponent is optional,
and has its own bit in pmap (due to the copy operator). If that bit is
not set (the exponent is not present in the stream for sure) then the
mantissa will be not present in the stream as well.
- Does the same worth if the bit in pmap is set but the exponent
value is NULL?- What about the new previous value of the Scaled Number if the
exponent has to be considered absent?Moreover, the fact that the exponent bit in pmap is not set should not
imply that the value of the exponent field will be not assigned (e.g. it
should be assigned to the copy initial value, or to the previous value
stored in the dictionary).3.Let suppose the mantissa is not in the stream (because of the exponent
absence), what does it imply in term of the mantissa field value, and in
term of the mantissa new previous value?Many thanks in advance. Kind regards, – Ale
Actually may be I was not so clear.
In the specific case:
< decimal name=“MDEntryPx” id=“270” presence=“optional” >
< exponent > < copy value=“-2” / > < / exponent >
< mantissa > < delta / > < / mantissa >
< /decimal >
since the decimal is optional, then the exponent is optional.
Moreover, since the exponent has the individual copy operator, then the exponent will have a bit in the pmap (no matter if it is set or not).
The exponent will be considered absent in two distinct cases:
a) The bit is not set.
b) The bit is set but, since the exponent is optional, it is present in the stream in its NULL representation.
In both these cases the mantissa will be not present in the stream as well and has to be considered absent.
The only case in which the mantissa is present in the stream is when the exponent bit in pmap is set and the exponent value is not NULL.
-
Is all that right?
-
How should we set the new previous value of the decimal (the corresponding Scaled Number) if the exponent has to be considered absent?
Note that even if the exponent bit in pmap was not set, the value of the exponent field could result assigned (for example it should be assigned to the copy initial value, or to the previous value stored in the dictionary).
- Let suppose the mantissa is not in the stream (because of the exponent absence), what does it imply in term of the mantissa field value, and what in term of the mantissa new previous value?
Many thanks in advance.
Regards,
– Ale
Ale -
A bit in the pmap indicates how a field operator should be executed. The
exact meaning of the bit is dependent on the operator type and its
attributes.The bit doesn’t automatically indicate whether an optional field is NULL
or not. Only after exercising the operator according to the bit you’ll
know if the value is NULL or not.When using a decimal field with individual operators, and the value
of an exponent field is NULL, the instruction for the mantissa should
be skipped.You may want to have a look a this post (and other posts in the
same thread):http://www.fixprotocol.org/discuss/read/24ed599c
/David
Hello, I would need a clarification.
The handbook [section 10.5.1 – Presence Map and NULL
Utilization] says:[…]If the decimal has optional presence, the exponent field is
treated as an optional integer field and the mantissa field is treated
as a mandatory integer field. The presence of the mantissa field and
any related bits in the presence map are dependent on the presence of
the exponent. The mantissa field appears in the stream iff the
exponent value is considered present. If the mantissa has an operator
that requires a bit in the presence map, this bit is present iff the
exponent value is considered present.[…]Let suppose I have the following decimal field in my template
definition:< decimal name=“MDEntryPx” id=“270” presence=“optional” > < exponent >
< copy value=“-2” / > < / exponent > < mantissa > < delta / > < /
mantissa< /decimal >
For the best of my comprehension in this case the exponent is
optional, and has its own bit in pmap (due to the copy operator). If
that bit is not set (the exponent is not present in the stream for
sure) then the mantissa will be not present in the stream as well.
- Does the same worth if the bit in pmap is set but the exponent
value is NULL?- What about the new previous value of the Scaled Number if the
exponent has to be considered absent?Moreover, the fact that the exponent bit in pmap is not set should not
imply that the value of the exponent field will be not assigned (e.g.
it should be assigned to the copy initial value, or to the previous
value stored in the dictionary).3.Let suppose the mantissa is not in the stream (because of the
exponent absence), what does it imply in term of the mantissa field
value, and in term of the mantissa new previous value?Many thanks in advance. Kind regards, – Ale
Ale -
- No. Whether you should process the mantissa or not is only dependent on a single thing: if the exponent is NULL or not. Whether you use a operator on the exponent doesn’t change this property.
In your example you use the copy operator. If the bit is not set this means “copy the previous value”. If the previous value is not NULL, then the value of the exponent is not NULL and the mantissa is present.
- The mantissa and exponent parts are treated as two individual fields in the dictionary so there are one or two separate signed integer fields in the dictionary to manage. There is no corresponding scaled number field in the dictionary in this case. However, when you communicate the value of the field from the decoder to the application you would typically combine them into a scaled number or similar.
/David
Actually may be I was not so clear.
In the specific case:
< decimal name=“MDEntryPx” id=“270” presence=“optional” > < exponent >
< copy value=“-2” / > < / exponent > < mantissa > < delta / > < /
mantissa > < /decimal >since the decimal is optional, then the exponent is optional. Moreover,
since the exponent has the individual copy operator, then the exponent
will have a bit in the pmap (no matter if it is set or not).The exponent will be considered absent in two distinct cases:
a) The bit is not set.
b) The bit is set but, since the exponent is optional, it is present in
the stream in its NULL representation.In both these cases the mantissa will be not present in the stream as
well and has to be considered absent.The only case in which the mantissa is present in the stream is when the
exponent bit in pmap is set and the exponent value is not NULL.
Is all that right?
How should we set the new previous value of the decimal (the
corresponding Scaled Number) if the exponent has to be considered
absent?Note that even if the exponent bit in pmap was not set, the value of the
exponent field could result assigned (for example it should be assigned
to the copy initial value, or to the previous value stored in the
dictionary).
- Let suppose the mantissa is not in the stream (because of the
exponent absence), what does it imply in term of the mantissa field
value, and what in term of the mantissa new previous value?Many thanks in advance.
Regards, – Ale
Ale -
A bit in the pmap indicates how a field operator should be executed.
The exact meaning of the bit is dependent on the operator type and its
attributes.The bit doesn’t automatically indicate whether an optional field is
NULL or not. Only after exercising the operator according to the bit
you’ll know if the value is NULL or not.When using a decimal field with individual operators, and the value of
an exponent field is NULL, the instruction for the mantissa should be
skipped.You may want to have a look a this post (and other posts in the same
thread):http://www.fixprotocol.org/discuss/read/24ed599c
/David
Hello, I would need a clarification.
The handbook [section 10.5.1 – Presence Map and NULL
Utilization] says:[…]If the decimal has optional presence, the exponent field is
treated as an optional integer field and the mantissa field is
treated as a mandatory integer field. The presence of the mantissa
field and any related bits in the presence map are dependent on the
presence of the exponent. The mantissa field appears in the stream
iff the exponent value is considered present. If the mantissa has an
operator that requires a bit in the presence map, this bit is
present iff the exponent value is considered present.[…]Let suppose I have the following decimal field in my template
definition:< decimal name=“MDEntryPx” id=“270” presence=“optional” > < exponent
< copy value=“-2” / > < / exponent > < mantissa > < delta / > < /
mantissa
< /decimal >For the best of my comprehension in this case the exponent is
optional, and has its own bit in pmap (due to the copy operator). If
that bit is not set (the exponent is not present in the stream for
sure) then the mantissa will be not present in the stream as well.
- Does the same worth if the bit in pmap is set but the exponent
value is NULL?- What about the new previous value of the Scaled Number if the
exponent has to be considered absent?Moreover, the fact that the exponent bit in pmap is not set should
not imply that the value of the exponent field will be not assigned
(e.g. it should be assigned to the copy initial value, or to the
previous value stored in the dictionary).3.Let suppose the mantissa is not in the stream (because of the
exponent absence), what does it imply in term of the mantissa field
value, and in term of the mantissa new previous value?Many thanks in advance. Kind regards, – Ale
Thank you very much for your prompt and clear reply.
Just a little question: what if the exponent bit isn’t set and the previous value is empty?
Is this a particular case of NULL exponent?
Regards,
– Ale
Ale -
- No. Whether you should process the mantissa or not is only dependent
on a single thing: if the exponent is NULL or not. Whether you use a
operator on the exponent doesn’t change this property.In your example you use the copy operator. If the bit is not set this
means “copy the previous value”. If the previous value is not NULL, then
the value of the exponent is not NULL and the mantissa is present.
- The mantissa and exponent parts are treated as two individual
fields in the dictionary so there are one or two separate signed
integer fields in the dictionary to manage. There is no
corresponding scaled number field in the dictionary in this case.
However, when you communicate the value of the field from the
decoder to the application you would typically combine them into a
scaled number or similar./David
Actually may be I was not so clear.
In the specific case:
< decimal name=“MDEntryPx” id=“270” presence=“optional” > < exponent
< copy value=“-2” / > < / exponent > < mantissa > < delta / > < /
mantissa > < /decimal >since the decimal is optional, then the exponent is optional.
Moreover, since the exponent has the individual copy operator,
then the exponent will have a bit in the pmap (no matter if it is
set or not).The exponent will be considered absent in two distinct cases:
a) The bit is not set.
b) The bit is set but, since the exponent is optional, it is present
in the stream in its NULL representation.In both these cases the mantissa will be not present in the stream as
well and has to be considered absent.The only case in which the mantissa is present in the stream is when
the exponent bit in pmap is set and the exponent value is not NULL.
Is all that right?
How should we set the new previous value of the decimal (the
corresponding Scaled Number) if the exponent has to be
considered absent?Note that even if the exponent bit in pmap was not set, the value of
the exponent field could result assigned (for example it should be
assigned to the copy initial value, or to the previous value stored in
the dictionary).
- Let suppose the mantissa is not in the stream (because of the
exponent absence), what does it imply in term of the mantissa field
value, and what in term of the mantissa new previous value?Many thanks in advance.
Regards, – Ale
Ale -
A bit in the pmap indicates how a field operator should be executed.
The exact meaning of the bit is dependent on the operator type and
its attributes.The bit doesn’t automatically indicate whether an optional field is
NULL or not. Only after exercising the operator according to the bit
you’ll know if the value is NULL or not.When using a decimal field with individual operators, and the value
of an exponent field is NULL, the instruction for the mantissa
should be skipped.You may want to have a look a this post (and other posts in the same
thread):http://www.fixprotocol.org/discuss/read/24ed599c
/David
Hello, I would need a clarification.
The handbook [section 10.5.1 – Presence Map and NULL Utilization]
says:[…]If the decimal has optional presence, the exponent field is
treated as an optional integer field and the mantissa field is
treated as a mandatory integer field. The presence of the mantissa
field and any related bits in the presence map are dependent on
the presence of the exponent. The mantissa field appears in the
stream iff the exponent value is considered present. If the
mantissa has an operator that requires a bit in the presence map,
this bit is present iff the exponent value is considered
present.[…]Let suppose I have the following decimal field in my template
definition:< decimal name=“MDEntryPx” id=“270” presence=“optional” > <
exponent< copy value=“-2” / > < / exponent > < mantissa > < delta / >
< /
mantissa
< /decimal >For the best of my comprehension in this case the exponent is
optional, and has its own bit in pmap (due to the copy operator).
If that bit is not set (the exponent is not present in the stream
for sure) then the mantissa will be not present in the stream as
well.
- Does the same worth if the bit in pmap is set but the exponent
value is NULL?- What about the new previous value of the Scaled Number if the
exponent has to be considered absent?Moreover, the fact that the exponent bit in pmap is not set should
not imply that the value of the exponent field will be not
assigned (e.g. it should be assigned to the copy initial value, or
to the previous value stored in the dictionary).3.Let suppose the mantissa is not in the stream (because of the
exponent absence), what does it imply in term of the mantissa
field value, and in term of the mantissa new previous value?Many thanks in advance. Kind regards, – Ale
Yes, if the previous value has the state empty and the bit is not set, then the exponent is NULL.
/David
Thank you very much for your prompt and clear reply.
Just a little question: what if the exponent bit isn’t set and the
previous value is empty? Is this a particular case of NULL exponent?Regards, – Ale
Ale -
- No. Whether you should process the mantissa or not is only
dependent on a single thing: if the exponent is NULL or not.
Whether you use a operator on the exponent doesn’t change this
property.In your example you use the copy operator. If the bit is not set this
means “copy the previous value”. If the previous value is not NULL,
then the value of the exponent is not NULL and the mantissa is
present.
- The mantissa and exponent parts are treated as two individual
fields in the dictionary so there are one or two separate signed
integer fields in the dictionary to manage. There is no
corresponding scaled number field in the dictionary in this case.
However, when you communicate the value of the field from the
decoder to the application you would typically combine them into a
scaled number or similar./David
Actually may be I was not so clear.
In the specific case:
< decimal name=“MDEntryPx” id=“270” presence=“optional” > <
exponent< copy value=“-2” / > < / exponent > < mantissa > < delta / > < /
mantissa > < /decimal >since the decimal is optional, then the exponent is optional.
Moreover, since the exponent has the individual copy operator,
then the exponent will have a bit in the pmap (no matter if it is
set or not).The exponent will be considered absent in two distinct cases:
a) The bit is not set.
b) The bit is set but, since the exponent is optional, it is present
in the stream in its NULL representation.In both these cases the mantissa will be not present in the stream
as well and has to be considered absent.The only case in which the mantissa is present in the stream is when
the exponent bit in pmap is set and the exponent value is not NULL.
Is all that right?
How should we set the new previous value of the decimal (the
corresponding Scaled Number) if the exponent has to be considered
absent?Note that even if the exponent bit in pmap was not set, the value of
the exponent field could result assigned (for example it should be
assigned to the copy initial value, or to the previous value stored
in the dictionary).
- Let suppose the mantissa is not in the stream (because of the
exponent absence), what does it imply in term of the mantissa field
value, and what in term of the mantissa new previous value?Many thanks in advance.
Regards, – Ale
Ale -
A bit in the pmap indicates how a field operator should be
executed. The exact meaning of the bit is dependent on the
operator type and its attributes.The bit doesn’t automatically indicate whether an optional field
is NULL or not. Only after exercising the operator according to
the bit you’ll know if the value is NULL or not.When using a decimal field with individual operators, and the
value of an exponent field is NULL, the instruction for the
mantissa should be skipped.You may want to have a look a this post (and other posts in the
same thread):http://www.fixprotocol.org/discuss/read/24ed599c
/David
Hello, I would need a clarification.
The handbook [section 10.5.1 – Presence Map and NULL
Utilization] says:[…]If the decimal has optional presence, the exponent field is
treated as an optional integer field and the mantissa field is
treated as a mandatory integer field. The presence of the
mantissa field and any related bits in the presence map are
dependent on the presence of the exponent. The mantissa field
appears in the stream iff the exponent value is considered
present. If the mantissa has an operator that requires a bit in
the presence map, this bit is present iff the exponent value is
considered present.[…]Let suppose I have the following decimal field in my template
definition:< decimal name=“MDEntryPx” id=“270” presence=“optional” > <
exponent< copy value=“-2” / > < / exponent > < mantissa > < delta / >
< /
mantissa
< /decimal >For the best of my comprehension in this case the exponent is
optional, and has its own bit in pmap (due to the copy
operator). If that bit is not set (the exponent is not present
in the stream for sure) then the mantissa will be not present in
the stream as well.
- Does the same worth if the bit in pmap is set but the
exponent value is NULL?- What about the new previous value of the Scaled Number if the
exponent has to be considered absent?Moreover, the fact that the exponent bit in pmap is not set
should not imply that the value of the exponent field will be
not assigned (e.g. it should be assigned to the copy initial
value, or to the previous value stored in the dictionary).3.Let suppose the mantissa is not in the stream (because of the
exponent absence), what does it imply in term of the mantissa
field value, and in term of the mantissa new previous value?Many thanks in advance. Kind regards, – Ale
Sorry David, I would need another particular detail:
As you replied to the question number 2, the mantissa and exponent parts have to be treated as two individual fields in the dictionary, and they will be somehow combined…
My doubt is: how should I combine the status (assigned, undefined, empty) of the exponent and the mantissa when I combine them into a scaled number or similar?
In particular do I have to expect the exponent is assigned and the mantissa is not and/or vice versa?
Thanks in advance.
Regards,
– Ale
Yes, if the previous value has the state empty and the bit is not set,
then the exponent is NULL./David
Thank you very much for your prompt and clear reply.
Just a little question: what if the exponent bit isn’t set and the
previous value is empty? Is this a particular case of NULL exponent?Regards, – Ale
Ale -
- No. Whether you should process the mantissa or not is only
dependent on a single thing: if the exponent is NULL or not.
Whether you use a operator on the exponent doesn’t change this
property.In your example you use the copy operator. If the bit is not set
this means “copy the previous value”. If the previous value is not
NULL, then the value of the exponent is not NULL and the mantissa is
present.
- The mantissa and exponent parts are treated as two individual
fields in the dictionary so there are one or two separate signed
integer fields in the dictionary to manage. There is no
corresponding scaled number field in the dictionary in this case.
However, when you communicate the value of the field from the
decoder to the application you would typically combine them into
a scaled number or similar./David
Actually may be I was not so clear.
In the specific case:
< decimal name=“MDEntryPx” id=“270” presence=“optional” > <
exponent< copy value=“-2” / > < / exponent > < mantissa > < delta / > <
/
mantissa > < /decimal >since the decimal is optional, then the exponent is optional.
Moreover, since the exponent has the individual copy operator,
then the exponent will have a bit in the pmap (no matter if it is
set or not).The exponent will be considered absent in two distinct cases:
a) The bit is not set.
b) The bit is set but, since the exponent is optional, it is
present in the stream in its NULL representation.In both these cases the mantissa will be not present in the stream
as well and has to be considered absent.The only case in which the mantissa is present in the stream is
when the exponent bit in pmap is set and the exponent value is not
NULL.
Is all that right?
How should we set the new previous value of the decimal (the
corresponding Scaled Number) if the exponent has to be considered
absent?Note that even if the exponent bit in pmap was not set, the value
of the exponent field could result assigned (for example it should
be assigned to the copy initial value, or to the previous value
stored in the dictionary).
- Let suppose the mantissa is not in the stream (because of the
exponent absence), what does it imply in term of the mantissa
field value, and what in term of the mantissa new previous value?Many thanks in advance.
Regards, – Ale
Ale -
A bit in the pmap indicates how a field operator should be
executed. The exact meaning of the bit is dependent on the
operator type and its attributes.The bit doesn’t automatically indicate whether an optional field
is NULL or not. Only after exercising the operator according to
the bit you’ll know if the value is NULL or not.When using a decimal field with individual operators, and the
value of an exponent field is NULL, the instruction for the
mantissa should be skipped.You may want to have a look a this post (and other posts in the
same thread):http://www.fixprotocol.org/discuss/read/24ed599c
/David
Hello, I would need a clarification.
The handbook [section 10.5.1 – Presence Map and NULL
Utilization] says:[…]If the decimal has optional presence, the exponent field
is treated as an optional integer field and the mantissa field
is treated as a mandatory integer field. The presence of the
mantissa field and any related bits in the presence map are
dependent on the presence of the exponent. The mantissa field
appears in the stream iff the exponent value is considered
present. If the mantissa has an operator that requires a bit
in the presence map, this bit is present iff the exponent
value is considered present.[…]Let suppose I have the following decimal field in my template
definition:< decimal name=“MDEntryPx” id=“270” presence=“optional” > <
exponent< copy value=“-2” / > < / exponent > < mantissa > < delta /
< /
mantissa
< /decimal >For the best of my comprehension in this case the exponent is
optional, and has its own bit in pmap (due to the copy
operator). If that bit is not set (the exponent is not present
in the stream for sure) then the mantissa will be not present
in the stream as well.
- Does the same worth if the bit in pmap is set but the
exponent value is NULL?- What about the new previous value of the Scaled Number if
the exponent has to be considered absent?Moreover, the fact that the exponent bit in pmap is not set
should not imply that the value of the exponent field will be
not assigned (e.g. it should be assigned to the copy initial
value, or to the previous value stored in the dictionary).3.Let suppose the mantissa is not in the stream (because of
the exponent absence), what does it imply in term of the
mantissa field value, and in term of the mantissa new previous
value?Many thanks in advance. Kind regards, – Ale
I believe it is easiest to think of them as two completely independent fields in all other regards than this: when the exponent is NULL you don’t process the mantissa field - in any way - no operator, no change in dictionary, no pbit, no value to read from the stream.
The state of the previous value is an artifact of the dictionary so it’s not significant when you pass values to your application and there’s nothing to combine in this case.
A typical decoder would pass NULL to the application if the expoenent is NULL, and a scalar number in all other cases.
/David
Sorry David, I would need another particular detail:
As you replied to the question number 2, the mantissa and exponent parts
have to be treated as two individual fields in the dictionary, and they
will be somehow combined…My doubt is: how should I combine the status (assigned, undefined,
empty) of the exponent and the mantissa when I combine them into a
scaled number or similar?In particular do I have to expect the exponent is assigned and the
mantissa is not and/or vice versa?Thanks in advance. Regards, – Ale
Yes, if the previous value has the state empty and the bit is not set,
then the exponent is NULL./David
Thank you very much for your prompt and clear reply.
Just a little question: what if the exponent bit isn’t set and the
previous value is empty? Is this a particular case of NULL exponent?Regards, – Ale
Ale -
- No. Whether you should process the mantissa or not is only
dependent on a single thing: if the exponent is NULL or not.
Whether you use a operator on the exponent doesn’t change this
property.In your example you use the copy operator. If the bit is not set
this means “copy the previous value”. If the previous value is not
NULL, then the value of the exponent is not NULL and the mantissa
is present.
- The mantissa and exponent parts are treated as two individual
fields in the dictionary so there are one or two separate
signed integer fields in the dictionary to manage. There is no
corresponding scaled number field in the dictionary in this
case. However, when you communicate the value of the field from
the decoder to the application you would typically combine them
into a scaled number or similar./David
Actually may be I was not so clear.
In the specific case:
< decimal name=“MDEntryPx” id=“270” presence=“optional” > <
exponent< copy value=“-2” / > < / exponent > < mantissa > < delta / >
< /
mantissa > < /decimal >since the decimal is optional, then the exponent is optional.
Moreover, since the exponent has the individual copy operator,
then the exponent will have a bit in the pmap (no matter if it
is set or not).The exponent will be considered absent in two distinct cases:
a) The bit is not set.
b) The bit is set but, since the exponent is optional, it is
present in the stream in its NULL representation.In both these cases the mantissa will be not present in the
stream as well and has to be considered absent.The only case in which the mantissa is present in the stream is
when the exponent bit in pmap is set and the exponent value is
not NULL.
Is all that right?
How should we set the new previous value of the decimal (the
corresponding Scaled Number) if the exponent has to be
considered absent?Note that even if the exponent bit in pmap was not set, the
value of the exponent field could result assigned (for example
it should be assigned to the copy initial value, or to the
previous value stored in the dictionary).
- Let suppose the mantissa is not in the stream (because of the
exponent absence), what does it imply in term of the mantissa
field value, and what in term of the mantissa new previous
value?Many thanks in advance.
Regards, – Ale
Ale -
A bit in the pmap indicates how a field operator should be
executed. The exact meaning of the bit is dependent on the
operator type and its attributes.The bit doesn’t automatically indicate whether an optional
field is NULL or not. Only after exercising the operator
according to the bit you’ll know if the value is NULL or not.When using a decimal field with individual operators, and the
value of an exponent field is NULL, the instruction for the
mantissa should be skipped.You may want to have a look a this post (and other posts in
the same thread):http://www.fixprotocol.org/discuss/read/24ed599c
/David
Hello, I would need a clarification.
The handbook [section 10.5.1 – Presence Map and NULL
Utilization] says:[…]If the decimal has optional presence, the exponent
field is treated as an optional integer field and the
mantissa field is treated as a mandatory integer field. The
presence of the mantissa field and any related bits in the
presence map are dependent on the presence of the exponent.
The mantissa field appears in the stream iff the exponent
value is considered present. If the mantissa has an operator
that requires a bit in the presence map, this bit is present
iff the exponent value is considered present.[…]Let suppose I have the following decimal field in my
template definition:< decimal name=“MDEntryPx” id=“270” presence=“optional” > <
exponent< copy value=“-2” / > < / exponent > < mantissa > < delta
/< /
mantissa
< /decimal >For the best of my comprehension in this case the exponent
is optional, and has its own bit in pmap (due to the copy
operator). If that bit is not set (the exponent is not
present in the stream for sure) then the mantissa will be
not present in the stream as well.
- Does the same worth if the bit in pmap is set but the
exponent value is NULL?- What about the new previous value of the Scaled Number if
the exponent has to be considered absent?Moreover, the fact that the exponent bit in pmap is not set
should not imply that the value of the exponent field will
be not assigned (e.g. it should be assigned to the copy
initial value, or to the previous value stored in the
dictionary).3.Let suppose the mantissa is not in the stream (because of
the exponent absence), what does it imply in term of the
mantissa field value, and in term of the mantissa new
previous value?Many thanks in advance. Kind regards, – Ale
OK,
But is it possible that exponent is not NULL and mantissa is NULL?
And what’s the resulting ‘scaled number’ in this case?
Thanks in advance,
– Ale
I believe it is easiest to think of them as two completely independent
fields in all other regards than this: when the exponent is NULL you
don’t process the mantissa field - in any way - no operator, no change
in dictionary, no pbit, no value to read from the stream.The state of the previous value is an artifact of the dictionary so it’s
not significant when you pass values to your application and there’s
nothing to combine in this case.A typical decoder would pass NULL to the application if the expoenent is
NULL, and a scalar number in all other cases./David
Sorry David, I would need another particular detail:
As you replied to the question number 2, the mantissa and exponent
parts have to be treated as two individual fields in the dictionary,
and they will be somehow combined…My doubt is: how should I combine the status (assigned, undefined,
empty) of the exponent and the mantissa when I combine them into a
scaled number or similar?In particular do I have to expect the exponent is assigned and the
mantissa is not and/or vice versa?Thanks in advance. Regards, – Ale
Yes, if the previous value has the state empty and the bit is not
set, then the exponent is NULL./David
Thank you very much for your prompt and clear reply.
Just a little question: what if the exponent bit isn’t set and the
previous value is empty? Is this a particular case of NULL
exponent?Regards, – Ale
Ale -
- No. Whether you should process the mantissa or not is only
dependent on a single thing: if the exponent is NULL or not.
Whether you use a operator on the exponent doesn’t change
this property.In your example you use the copy operator. If the bit is not set
this means “copy the previous value”. If the previous value is
not NULL, then the value of the exponent is not NULL and the
mantissa is present.
- The mantissa and exponent parts are treated as two individual
fields in the dictionary so there are one or two separate
signed integer fields in the dictionary to manage. There is
no corresponding scaled number field in the dictionary in
this case. However, when you communicate the value of the
field from the decoder to the application you would typically
combine them into a scaled number or similar./David
Actually may be I was not so clear.
In the specific case:
< decimal name=“MDEntryPx” id=“270” presence=“optional” > <
exponent< copy value=“-2” / > < / exponent > < mantissa > < delta /
< /
mantissa > < /decimal >since the decimal is optional, then the exponent is optional.
Moreover, since the exponent has the individual copy operator,
then the exponent will have a bit in the pmap (no matter if it
is set or not).The exponent will be considered absent in two distinct cases:
a) The bit is not set.
b) The bit is set but, since the exponent is optional, it is
present in the stream in its NULL representation.In both these cases the mantissa will be not present in the
stream as well and has to be considered absent.The only case in which the mantissa is present in the stream
is when the exponent bit in pmap is set and the exponent value
is not NULL.
Is all that right?
How should we set the new previous value of the decimal
(the corresponding Scaled Number) if the exponent has to be
considered absent?Note that even if the exponent bit in pmap was not set, the
value of the exponent field could result assigned (for example
it should be assigned to the copy initial value, or to the
previous value stored in the dictionary).
- Let suppose the mantissa is not in the stream (because of
the exponent absence), what does it imply in term of the
mantissa field value, and what in term of the mantissa new
previous value?Many thanks in advance.
Regards, – Ale
Ale -
A bit in the pmap indicates how a field operator should be
executed. The exact meaning of the bit is dependent on the
operator type and its attributes.The bit doesn’t automatically indicate whether an optional
field is NULL or not. Only after exercising the operator
according to the bit you’ll know if the value is NULL or
not.When using a decimal field with individual operators, and
the value of an exponent field is NULL, the instruction for
the mantissa should be skipped.You may want to have a look a this post (and other posts in
the same thread):http://www.fixprotocol.org/discuss/read/24ed599c
/David
Hello, I would need a clarification.
The handbook [section 10.5.1 – Presence Map and NULL
Utilization] says:[…]If the decimal has optional presence, the exponent
field is treated as an optional integer field and the
mantissa field is treated as a mandatory integer field.
The presence of the mantissa field and any related bits in
the presence map are dependent on the presence of the
exponent. The mantissa field appears in the stream iff the
exponent value is considered present. If the mantissa has
an operator that requires a bit in the presence map, this
bit is present iff the exponent value is considered
present.[…]Let suppose I have the following decimal field in my
template definition:< decimal name=“MDEntryPx” id=“270” presence=“optional” >
< exponent< copy value=“-2” / > < / exponent > < mantissa > <
delta /< /
mantissa
< /decimal >For the best of my comprehension in this case the exponent
is optional, and has its own bit in pmap (due to the copy
operator). If that bit is not set (the exponent is not
present in the stream for sure) then the mantissa will be
not present in the stream as well.
- Does the same worth if the bit in pmap is set but the
exponent value is NULL?- What about the new previous value of the Scaled Number
if the exponent has to be considered absent?Moreover, the fact that the exponent bit in pmap is not
set should not imply that the value of the exponent field
will be not assigned (e.g. it should be assigned to the
copy initial value, or to the previous value stored in the
dictionary).3.Let suppose the mantissa is not in the stream (because
of the exponent absence), what does it imply in term of
the mantissa field value, and in term of the mantissa new
previous value?Many thanks in advance. Kind regards, – Ale
No, the mantissa is always mandatory, see the specification at section 10.5.1:
"Decimal fields with individual operators have the following utilization:
-
If the decimal has mandatory presence, the exponent and mantissa fields are treated as two separate mandatory integer fields as described above.
-
If the decimal has optional presence, the exponent field is treated as an optional integer field and the mantissa field is treated as a mandatory integer field. The presence of the mantissa field and any related bits in the presence map are dependent on the presence of the exponent. The mantissa field appears in the stream iff the exponent value is considered present. If the mantissa has an operator that requires a bit in the presence map, this bit is present iff the exponent value is considered present."
/David
OK, But is it possible that exponent is not NULL and mantissa is NULL?
And what’s the resulting ‘scaled number’ in this case?
Thanks in advance, – Ale
I believe it is easiest to think of them as two completely independent
fields in all other regards than this: when the exponent is NULL you
don’t process the mantissa field - in any way - no operator, no change
in dictionary, no pbit, no value to read from the stream.The state of the previous value is an artifact of the dictionary so
it’s not significant when you pass values to your application and
there’s nothing to combine in this case.A typical decoder would pass NULL to the application if the expoenent
is NULL, and a scalar number in all other cases./David
Sorry David, I would need another particular detail:
As you replied to the question number 2, the mantissa and exponent
parts have to be treated as two individual fields in the dictionary,
and they will be somehow combined…My doubt is: how should I combine the status (assigned, undefined,
empty) of the exponent and the mantissa when I combine them into a
scaled number or similar?In particular do I have to expect the exponent is assigned and the
mantissa is not and/or vice versa?Thanks in advance. Regards, – Ale
Yes, if the previous value has the state empty and the bit is not
set, then the exponent is NULL./David
Thank you very much for your prompt and clear reply.
Just a little question: what if the exponent bit isn’t set and
the previous value is empty? Is this a particular case of NULL
exponent?Regards, – Ale
Ale -
- No. Whether you should process the mantissa or not is only
dependent on a single thing: if the exponent is NULL or
not. Whether you use a operator on the exponent doesn’t
change this property.In your example you use the copy operator. If the bit is not
set this means “copy the previous value”. If the previous
value is not NULL, then the value of the exponent is not NULL
and the mantissa is present.
- The mantissa and exponent parts are treated as two
individual fields in the dictionary so there are one or two
separate signed integer fields in the dictionary to manage.
There is no corresponding scaled number field in the
dictionary in this case. However, when you communicate the
value of the field from the decoder to the application you
would typically combine them into a scaled number or
similar./David
Actually may be I was not so clear.
In the specific case:
< decimal name=“MDEntryPx” id=“270” presence=“optional” > <
exponent< copy value=“-2” / > < / exponent > < mantissa > < delta
/< /
mantissa > < /decimal >since the decimal is optional, then the exponent is
optional. Moreover, since the exponent has the individual
copy operator, then the exponent will have a bit in the pmap
(no matter if it is set or not).The exponent will be considered absent in two distinct
cases:a) The bit is not set.
b) The bit is set but, since the exponent is optional, it is
present in the stream in its NULL representation.In both these cases the mantissa will be not present in the
stream as well and has to be considered absent.The only case in which the mantissa is present in the stream
is when the exponent bit in pmap is set and the exponent
value is not NULL.
Is all that right?
How should we set the new previous value of the decimal
(the corresponding Scaled Number) if the exponent has to
be considered absent?Note that even if the exponent bit in pmap was not set, the
value of the exponent field could result assigned (for
example it should be assigned to the copy initial value, or
to the previous value stored in the dictionary).
- Let suppose the mantissa is not in the stream (because of
the exponent absence), what does it imply in term of the
mantissa field value, and what in term of the mantissa new
previous value?Many thanks in advance.
Regards, – Ale
Ale -
A bit in the pmap indicates how a field operator should be
executed. The exact meaning of the bit is dependent on the
operator type and its attributes.The bit doesn’t automatically indicate whether an optional
field is NULL or not. Only after exercising the operator
according to the bit you’ll know if the value is NULL or
not.When using a decimal field with individual operators, and
the value of an exponent field is NULL, the instruction
for the mantissa should be skipped.You may want to have a look a this post (and other posts
in the same thread):http://www.fixprotocol.org/discuss/read/24ed599c
/David
Hello, I would need a clarification.
The handbook [section 10.5.1 – Presence Map and NULL
Utilization] says:[…]If the decimal has optional presence, the exponent
field is treated as an optional integer field and the
mantissa field is treated as a mandatory integer field.
The presence of the mantissa field and any related bits
in the presence map are dependent on the presence of the
exponent. The mantissa field appears in the stream iff
the exponent value is considered present. If the
mantissa has an operator that requires a bit in the
presence map, this bit is present iff the exponent value
is considered present.[…]Let suppose I have the following decimal field in my
template definition:< decimal name=“MDEntryPx” id=“270” presence=“optional”
< exponent
< copy value=“-2” / > < / exponent > < mantissa > <
delta /< /
mantissa
< /decimal >For the best of my comprehension in this case the
exponent is optional, and has its own bit in pmap (due
to the copy operator). If that bit is not set (the
exponent is not present in the stream for sure) then the
mantissa will be not present in the stream as well.
- Does the same worth if the bit in pmap is set but the
exponent value is NULL?- What about the new previous value of the Scaled
Number if the exponent has to be considered absent?Moreover, the fact that the exponent bit in pmap is not
set should not imply that the value of the exponent
field will be not assigned (e.g. it should be assigned
to the copy initial value, or to the previous value
stored in the dictionary).3.Let suppose the mantissa is not in the stream (because
of the exponent absence), what does it imply in term of
the mantissa field value, and in term of the mantissa
new previous value?Many thanks in advance. Kind regards, – Ale
OK, perfect.
Thank you very much.
– Ale
No, the mantissa is always mandatory, see the specification at
section 10.5.1:"Decimal fields with individual operators have the following
utilization:
If the decimal has mandatory presence, the exponent and mantissa
fields are treated as two separate mandatory integer fields as
described above.If the decimal has optional presence, the exponent field is treated as
an optional integer field and the mantissa field is treated as a
mandatory integer field. The presence of the mantissa field and any
related bits in the presence map are dependent on the presence of the
exponent. The mantissa field appears in the stream iff the exponent
value is considered present. If the mantissa has an operator that
requires a bit in the presence map, this bit is present iff the
exponent value is considered present."/David
OK, But is it possible that exponent is not NULL and mantissa is NULL?
And what’s the resulting ‘scaled number’ in this case?
Thanks in advance, – Ale
I believe it is easiest to think of them as two completely
independent fields in all other regards than this: when the exponent
is NULL you don’t process the mantissa field - in any way - no
operator, no change in dictionary, no pbit, no value to read from
the stream.The state of the previous value is an artifact of the dictionary so
it’s not significant when you pass values to your application and
there’s nothing to combine in this case.A typical decoder would pass NULL to the application if the
expoenent is NULL, and a scalar number in all other cases./David
Sorry David, I would need another particular detail:
As you replied to the question number 2, the mantissa and exponent
parts have to be treated as two individual fields in the
dictionary, and they will be somehow combined…My doubt is: how should I combine the status (assigned, undefined,
empty) of the exponent and the mantissa when I combine them into a
scaled number or similar?In particular do I have to expect the exponent is assigned and the
mantissa is not and/or vice versa?Thanks in advance. Regards, – Ale
Yes, if the previous value has the state empty and the bit is
not set, then the exponent is NULL./David
Thank you very much for your prompt and clear reply.
Just a little question: what if the exponent bit isn’t set and
the previous value is empty? Is this a particular case of NULL
exponent?Regards, – Ale
Ale -
- No. Whether you should process the mantissa or not is
only dependent on a single thing: if the exponent is NULL
or not. Whether you use a operator on the exponent
doesn’t change this property.In your example you use the copy operator. If the bit is not
set this means “copy the previous value”. If the previous
value is not NULL, then the value of the exponent is not
NULL and the mantissa is present.
- The mantissa and exponent parts are treated as two
individual fields in the dictionary so there are one or
two separate signed integer fields in the dictionary to
manage. There is no corresponding scaled number field in
the dictionary in this case. However, when you
communicate the value of the field from the decoder to
the application you would typically combine them into a
scaled number or similar./David
Actually may be I was not so clear.
In the specific case:
< decimal name=“MDEntryPx” id=“270” presence=“optional” >
< exponent< copy value=“-2” / > < / exponent > < mantissa > <
delta /< /
mantissa > < /decimal >since the decimal is optional, then the exponent is
optional. Moreover, since the exponent has the individual
copy operator, then the exponent will have a bit in the
pmap (no matter if it is set or not).The exponent will be considered absent in two distinct
cases:a) The bit is not set.
b) The bit is set but, since the exponent is optional, it
is present in the stream in its NULL representation.In both these cases the mantissa will be not present in
the stream as well and has to be considered absent.The only case in which the mantissa is present in the
stream is when the exponent bit in pmap is set and the
exponent value is not NULL.
Is all that right?
How should we set the new previous value of the decimal
(the corresponding Scaled Number) if the exponent has
to be considered absent?Note that even if the exponent bit in pmap was not set,
the value of the exponent field could result assigned (for
example it should be assigned to the copy initial value,
or to the previous value stored in the dictionary).
- Let suppose the mantissa is not in the stream (because
of the exponent absence), what does it imply in term of
the mantissa field value, and what in term of the mantissa
new previous value?Many thanks in advance.
Regards, – Ale
Ale -
A bit in the pmap indicates how a field operator should
be executed. The exact meaning of the bit is dependent
on the operator type and its attributes.The bit doesn’t automatically indicate whether an
optional field is NULL or not. Only after exercising the
operator according to the bit you’ll know if the value
is NULL or not.When using a decimal field with individual operators,
and the value of an exponent field is NULL, the
instruction for the mantissa should be skipped.You may want to have a look a this post (and other posts
in the same thread):http://www.fixprotocol.org/discuss/read/24ed599c
/David
Hello, I would need a clarification.
The handbook [section 10.5.1 – Presence Map and NULL
Utilization] says:[…]If the decimal has optional presence, the
exponent field is treated as an optional integer field
and the mantissa field is treated as a mandatory
integer field. The presence of the mantissa field and
any related bits in the presence map are dependent on
the presence of the exponent. The mantissa field
appears in the stream iff the exponent value is
considered present. If the mantissa has an operator
that requires a bit in the presence map, this bit is
present iff the exponent value is considered
present.[…]Let suppose I have the following decimal field in my
template definition:< decimal name=“MDEntryPx” id=“270”
presence=“optional”< exponent < copy value=“-2” / > < / exponent > <
mantissa > < delta /< /
mantissa
< /decimal >For the best of my comprehension in this case the
exponent is optional, and has its own bit in pmap (due
to the copy operator). If that bit is not set (the
exponent is not present in the stream for sure) then
the mantissa will be not present in the stream as
well.
- Does the same worth if the bit in pmap is set but
the exponent value is NULL?- What about the new previous value of the Scaled
Number if the exponent has to be considered absent?Moreover, the fact that the exponent bit in pmap is
not set should not imply that the value of the
exponent field will be not assigned (e.g. it should be
assigned to the copy initial value, or to the previous
value stored in the dictionary).3.Let suppose the mantissa is not in the stream
(because of the exponent absence), what does it imply
in term of the mantissa field value, and in term of
the mantissa new previous value?Many thanks in advance. Kind regards, – Ale