Computed value dependent on event declaration order
Closed this issue · 0 comments
yawnoc commented
- Version: v0.2.5 (24d0017)
- Input
ft.txt
:Event: A - probability: 0.1 Event: B - probability: 0.3 Event: C - probability: 0.5 Event: D - probability: 0.823 Event: DDD - probability: 0.823 Event: CCC - probability: 0.5 Event: BBB - probability: 0.3 Event: AAA - probability: 0.1 Gate: Ascending - type: AND - inputs: A, B, C, D Gate: Descending - type: AND - inputs: AAA, BBB, CCC, DDD Gate: Top - type: OR - inputs: Ascending, Descending
- Output
ft.txt.out/cut-sets/Top.tsv
:quantity_type quantity_value quantity_unit cut_set probability 0.01235 1 DDD.CCC.BBB.AAA probability 0.01234 1 A.B.C.D
- Expected behaviour: cut sets
DDD.CCC.BBB.AAA
andA.B.C.D
have equal probability - Observed behaviour: cut sets
DDD.CCC.BBB.AAA
andA.B.C.D
have unequal probability (0.01234 ≠ 0.01235)
The observed unequal probability appears to be caused by the floating point multiplication being performed in the order that the underlying events are declared:
>>> # A.B.C.D
>>> 0.1 * 0.3 * 0.5 * 0.823
0.012344999999999998
>>> # DDD.CCC.BBB.AAA
>>> 0.823 * 0.5 * 0.3 * 0.1
0.012345