Skip to content

Commit 316641f

Browse files
committed
Fix infinite precision bug for prefixed units (#1593).
Details: - add failing tests showing the problem with infinite precisions - compute proper precision for number types with prefixed unit - update CHANGELOG
1 parent 8d25be4 commit 316641f

File tree

4 files changed

+462
-21
lines changed

4 files changed

+462
-21
lines changed

CHANGELOG.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@ The project does _not_ follow Semantic Versioning and the changes are documented
99

1010
### Fixed
1111

12-
- Physical units: The units `Joule`, `Coulomb` and `Watt` can now have also prefixes with negative metric scaling, e.g., `mW` (Milliwatt). Additionally, some typos have been corrected in the physical units documentation.
12+
- Physical units:
13+
- The units `Joule`, `Coulomb` and `Watt` can now have also prefixes with negative metric scaling, e.g., `mW` (Milliwatt). Additionally, some typos have been corrected in the physical units documentation.
14+
- The precision of number types with prefixed units (e.g. `mW` or `km`) was always set to `infinite` by the typesystem. Now, the precision is as precise as possible.
1315

1416

1517
## December 2025

code/languages/org.iets3.opensource/languages/org.iets3.core.expr.simpleTypes/models/behavior.mps

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -287,6 +287,7 @@
287287
<child id="1177027386292" name="conceptArgument" index="cj9EA" />
288288
</concept>
289289
<concept id="6870613620390542976" name="jetbrains.mps.lang.smodel.structure.ConceptAliasOperation" flags="ng" index="3n3YKJ" />
290+
<concept id="1171999116870" name="jetbrains.mps.lang.smodel.structure.Node_IsNullOperation" flags="nn" index="3w_OXm" />
290291
<concept id="1172008320231" name="jetbrains.mps.lang.smodel.structure.Node_IsNotNullOperation" flags="nn" index="3x8VRR" />
291292
<concept id="1144101972840" name="jetbrains.mps.lang.smodel.structure.OperationParm_Concept" flags="ng" index="1xMEDy">
292293
<child id="1207343664468" name="conceptArgument" index="ri$Ld" />
@@ -2613,6 +2614,38 @@
26132614
</node>
26142615
</node>
26152616
</node>
2617+
<node concept="13i0hz" id="5bmRS0nolm$" role="13h7CS">
2618+
<property role="TrG5h" value="getConstantRange" />
2619+
<node concept="3Tm1VV" id="5bmRS0nolm_" role="1B3o_S" />
2620+
<node concept="17QB3L" id="5bmRS0norni" role="3clF45" />
2621+
<node concept="3clFbS" id="5bmRS0nolmB" role="3clF47">
2622+
<node concept="3clFbF" id="5bmRS0norEP" role="3cqZAp">
2623+
<node concept="3K4zz7" id="5bmRS0nov0u" role="3clFbG">
2624+
<node concept="10Nm6u" id="5bmRS0novfz" role="3K4E3e" />
2625+
<node concept="2OqwBi" id="5bmRS0nowlw" role="3K4GZi">
2626+
<node concept="2OqwBi" id="5bmRS0novKY" role="2Oq$k0">
2627+
<node concept="13iPFW" id="5bmRS0novuC" role="2Oq$k0" />
2628+
<node concept="3TrEf2" id="5bmRS0now7G" role="2OqNvi">
2629+
<ref role="3Tt5mk" to="5qo5:19PglA20qXS" resolve="range" />
2630+
</node>
2631+
</node>
2632+
<node concept="2qgKlT" id="5bmRS0nowKw" role="2OqNvi">
2633+
<ref role="37wK5l" node="5bmRS0nnZlw" resolve="getConstant" />
2634+
</node>
2635+
</node>
2636+
<node concept="2OqwBi" id="5bmRS0not0i" role="3K4Cdx">
2637+
<node concept="2OqwBi" id="5bmRS0norWG" role="2Oq$k0">
2638+
<node concept="13iPFW" id="5bmRS0norEO" role="2Oq$k0" />
2639+
<node concept="3TrEf2" id="5bmRS0nosmu" role="2OqNvi">
2640+
<ref role="3Tt5mk" to="5qo5:19PglA20qXS" resolve="range" />
2641+
</node>
2642+
</node>
2643+
<node concept="3w_OXm" id="5bmRS0notmh" role="2OqNvi" />
2644+
</node>
2645+
</node>
2646+
</node>
2647+
</node>
2648+
</node>
26162649
<node concept="13i0hz" id="3p6$WoEzKI5" role="13h7CS">
26172650
<property role="TrG5h" value="doubleRange" />
26182651
<node concept="3Tm1VV" id="3p6$WoEzKI6" role="1B3o_S" />
@@ -6136,6 +6169,78 @@
61366169
</node>
61376170
</node>
61386171
</node>
6172+
<node concept="13i0hz" id="5bmRS0nmV1W" role="13h7CS">
6173+
<property role="TrG5h" value="isConstant" />
6174+
<node concept="3Tm1VV" id="5bmRS0nmV1X" role="1B3o_S" />
6175+
<node concept="10P_77" id="5bmRS0nmVIY" role="3clF45" />
6176+
<node concept="3clFbS" id="5bmRS0nmV1Z" role="3clF47">
6177+
<node concept="3clFbF" id="5bmRS0nnS5Y" role="3cqZAp">
6178+
<node concept="1Wc70l" id="5bmRS0nnUgP" role="3clFbG">
6179+
<node concept="17R0WA" id="5bmRS0nnY40" role="3uHU7w">
6180+
<node concept="2OqwBi" id="5bmRS0nnZdZ" role="3uHU7w">
6181+
<node concept="13iPFW" id="5bmRS0nnYMh" role="2Oq$k0" />
6182+
<node concept="3TrcHB" id="5bmRS0nnZi7" role="2OqNvi">
6183+
<ref role="3TsBF5" to="5qo5:19PglA20qXK" resolve="max" />
6184+
</node>
6185+
</node>
6186+
<node concept="2OqwBi" id="5bmRS0nnUS_" role="3uHU7B">
6187+
<node concept="13iPFW" id="5bmRS0nnUvi" role="2Oq$k0" />
6188+
<node concept="3TrcHB" id="5bmRS0nnVbE" role="2OqNvi">
6189+
<ref role="3TsBF5" to="5qo5:19PglA20qXJ" resolve="min" />
6190+
</node>
6191+
</node>
6192+
</node>
6193+
<node concept="1Wc70l" id="5bmRS0nnS60" role="3uHU7B">
6194+
<node concept="3fqX7Q" id="5bmRS0nnSo5" role="3uHU7B">
6195+
<node concept="2YIFZM" id="5bmRS0nnSo7" role="3fr31v">
6196+
<ref role="37wK5l" to="oq0c:1YvLuAXO50" resolve="isNegInf" />
6197+
<ref role="1Pybhc" to="oq0c:2NHHcg2EXna" resolve="InfHelper" />
6198+
<node concept="2OqwBi" id="5bmRS0nnSo8" role="37wK5m">
6199+
<node concept="13iPFW" id="5bmRS0nnSo9" role="2Oq$k0" />
6200+
<node concept="3TrcHB" id="5bmRS0nnSoa" role="2OqNvi">
6201+
<ref role="3TsBF5" to="5qo5:19PglA20qXJ" resolve="min" />
6202+
</node>
6203+
</node>
6204+
</node>
6205+
</node>
6206+
<node concept="3fqX7Q" id="5bmRS0nnSB7" role="3uHU7w">
6207+
<node concept="2YIFZM" id="5bmRS0nnSB9" role="3fr31v">
6208+
<ref role="37wK5l" to="oq0c:6W9pdfOfpYl" resolve="isPosInf" />
6209+
<ref role="1Pybhc" to="oq0c:2NHHcg2EXna" resolve="InfHelper" />
6210+
<node concept="2OqwBi" id="5bmRS0nnSBa" role="37wK5m">
6211+
<node concept="13iPFW" id="5bmRS0nnSBb" role="2Oq$k0" />
6212+
<node concept="3TrcHB" id="5bmRS0nnSBc" role="2OqNvi">
6213+
<ref role="3TsBF5" to="5qo5:19PglA20qXK" resolve="max" />
6214+
</node>
6215+
</node>
6216+
</node>
6217+
</node>
6218+
</node>
6219+
</node>
6220+
</node>
6221+
</node>
6222+
</node>
6223+
<node concept="13i0hz" id="5bmRS0nnZlw" role="13h7CS">
6224+
<property role="TrG5h" value="getConstant" />
6225+
<node concept="3Tm1VV" id="5bmRS0nnZlx" role="1B3o_S" />
6226+
<node concept="17QB3L" id="5bmRS0no07s" role="3clF45" />
6227+
<node concept="3clFbS" id="5bmRS0nnZlz" role="3clF47">
6228+
<node concept="3clFbF" id="5bmRS0no0az" role="3cqZAp">
6229+
<node concept="3K4zz7" id="5bmRS0no0aj" role="3clFbG">
6230+
<node concept="BsUDl" id="5bmRS0no0aZ" role="3K4Cdx">
6231+
<ref role="37wK5l" node="5bmRS0nmV1W" resolve="isConstant" />
6232+
</node>
6233+
<node concept="2OqwBi" id="5bmRS0no0kY" role="3K4E3e">
6234+
<node concept="13iPFW" id="5bmRS0no0bI" role="2Oq$k0" />
6235+
<node concept="3TrcHB" id="5bmRS0no0xL" role="2OqNvi">
6236+
<ref role="3TsBF5" to="5qo5:19PglA20qXJ" resolve="min" />
6237+
</node>
6238+
</node>
6239+
<node concept="10Nm6u" id="5bmRS0no0$y" role="3K4GZi" />
6240+
</node>
6241+
</node>
6242+
</node>
6243+
</node>
61396244
</node>
61406245
<node concept="13h7C7" id="5cK3QOe0Mk2">
61416246
<property role="3GE5qa" value="string" />

0 commit comments

Comments
 (0)