svf-tools 1.0.620 → 1.0.622

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (191) hide show
  1. package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +7 -2
  2. package/SVF-doxygen/html/html/CFLAlias_8h.html +4 -0
  3. package/SVF-doxygen/html/html/CFLAlias_8h_source.html +19 -10
  4. package/SVF-doxygen/html/html/CFLBase_8cpp_source.html +1 -1
  5. package/SVF-doxygen/html/html/CFLBase_8h_source.html +1 -1
  6. package/SVF-doxygen/html/html/CFLDataBuilder_8h.html +96 -0
  7. package/SVF-doxygen/html/html/CFLDataBuilder_8h_source.html +99 -0
  8. package/SVF-doxygen/html/html/CFLData_8h.html +106 -0
  9. package/SVF-doxygen/html/html/CFLData_8h_source.html +136 -0
  10. package/SVF-doxygen/html/html/CFLSolver_8cpp_source.html +7 -7
  11. package/SVF-doxygen/html/html/CFLSolver_8h.html +4 -0
  12. package/SVF-doxygen/html/html/CFLSolver_8h_source.html +22 -16
  13. package/SVF-doxygen/html/html/CFLVF_8cpp_source.html +1 -1
  14. package/SVF-doxygen/html/html/ConditionalPT_8h_source.html +1 -1
  15. package/SVF-doxygen/html/html/GraphWriter_8cpp_source.html +2 -1
  16. package/SVF-doxygen/html/html/GraphWriter_8h_source.html +2 -1
  17. package/SVF-doxygen/html/html/IntervalValue_8h_source.html +17 -15
  18. package/SVF-doxygen/html/html/LLVMLoopAnalysis_8cpp_source.html +1 -1
  19. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +1 -1
  20. package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +2 -2
  21. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +1 -1
  22. package/SVF-doxygen/html/html/Options_8cpp_source.html +4 -3
  23. package/SVF-doxygen/html/html/Options_8h_source.html +4 -3
  24. package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +3 -3
  25. package/SVF-doxygen/html/html/PointsTo_8h_source.html +3 -3
  26. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +3 -3
  27. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +22 -22
  28. package/SVF-doxygen/html/html/SVFG_8h_source.html +37 -36
  29. package/SVF-doxygen/html/html/SVFValue_8h_source.html +1 -1
  30. package/SVF-doxygen/html/html/SparseBitVector_8h_source.html +3 -3
  31. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +2 -2
  32. package/SVF-doxygen/html/html/WTO_8h_source.html +1 -1
  33. package/SVF-doxygen/html/html/annotated.html +357 -351
  34. package/SVF-doxygen/html/html/cfl_8cpp.html +1 -1
  35. package/SVF-doxygen/html/html/cfl_8cpp_source.html +1 -1
  36. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +1 -0
  37. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.png +0 -0
  38. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +27 -24
  39. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.png +0 -0
  40. package/SVF-doxygen/html/html/classSVF_1_1CFLBase.html +2 -1
  41. package/SVF-doxygen/html/html/classSVF_1_1CFLBase.png +0 -0
  42. package/SVF-doxygen/html/html/classSVF_1_1CFLData-members.html +110 -0
  43. package/SVF-doxygen/html/html/classSVF_1_1CFLData.html +1126 -0
  44. package/SVF-doxygen/html/html/classSVF_1_1CFLDataBuilder-members.html +88 -0
  45. package/SVF-doxygen/html/html/classSVF_1_1CFLDataBuilder.html +380 -0
  46. package/SVF-doxygen/html/html/classSVF_1_1CFLSolver.html +48 -39
  47. package/SVF-doxygen/html/html/classSVF_1_1CFLSolver.png +0 -0
  48. package/SVF-doxygen/html/html/classSVF_1_1CFLVF.html +1 -1
  49. package/SVF-doxygen/html/html/classSVF_1_1GraphWriter.html +3 -2
  50. package/SVF-doxygen/html/html/classSVF_1_1HybridData-members.html +89 -0
  51. package/SVF-doxygen/html/html/classSVF_1_1HybridData.html +449 -0
  52. package/SVF-doxygen/html/html/classSVF_1_1IntervalValue-members.html +5 -4
  53. package/SVF-doxygen/html/html/classSVF_1_1IntervalValue.html +32 -0
  54. package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis.html +1 -1
  55. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +1 -1
  56. package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +45 -44
  57. package/SVF-doxygen/html/html/classSVF_1_1Options.html +28 -2
  58. package/SVF-doxygen/html/html/classSVF_1_1POCRAlias-members.html +281 -0
  59. package/SVF-doxygen/html/html/classSVF_1_1POCRAlias.html +828 -0
  60. package/SVF-doxygen/html/html/classSVF_1_1POCRAlias.png +0 -0
  61. package/SVF-doxygen/html/html/classSVF_1_1POCRSolver-members.html +98 -0
  62. package/SVF-doxygen/html/html/classSVF_1_1POCRSolver.html +245 -0
  63. package/SVF-doxygen/html/html/classSVF_1_1POCRSolver.png +0 -0
  64. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +2 -1
  65. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.png +0 -0
  66. package/SVF-doxygen/html/html/classSVF_1_1SVFG-members.html +96 -95
  67. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +157 -121
  68. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT-members.html +116 -115
  69. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +13 -10
  70. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +1 -1
  71. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +2 -2
  72. package/SVF-doxygen/html/html/classes.html +110 -109
  73. package/SVF-doxygen/html/html/dir_ae8aa099e368efaa962140c6624142bc.html +4 -0
  74. package/SVF-doxygen/html/html/fastcluster__dm_8cpp_8inc_source.html +1 -1
  75. package/SVF-doxygen/html/html/files.html +9 -7
  76. package/SVF-doxygen/html/html/functions.html +7 -1
  77. package/SVF-doxygen/html/html/functions_0x7e.html +18 -0
  78. package/SVF-doxygen/html/html/functions_a.html +38 -14
  79. package/SVF-doxygen/html/html/functions_b.html +9 -4
  80. package/SVF-doxygen/html/html/functions_c.html +59 -38
  81. package/SVF-doxygen/html/html/functions_d.html +7 -1
  82. package/SVF-doxygen/html/html/functions_e.html +5 -1
  83. package/SVF-doxygen/html/html/functions_func.html +35 -11
  84. package/SVF-doxygen/html/html/functions_func_0x7e.html +18 -0
  85. package/SVF-doxygen/html/html/functions_func_b.html +8 -3
  86. package/SVF-doxygen/html/html/functions_func_c.html +42 -27
  87. package/SVF-doxygen/html/html/functions_func_e.html +2 -1
  88. package/SVF-doxygen/html/html/functions_func_g.html +20 -7
  89. package/SVF-doxygen/html/html/functions_func_h.html +17 -7
  90. package/SVF-doxygen/html/html/functions_func_i.html +14 -10
  91. package/SVF-doxygen/html/html/functions_func_m.html +3 -2
  92. package/SVF-doxygen/html/html/functions_func_o.html +13 -11
  93. package/SVF-doxygen/html/html/functions_func_p.html +6 -3
  94. package/SVF-doxygen/html/html/functions_func_t.html +4 -0
  95. package/SVF-doxygen/html/html/functions_g.html +22 -9
  96. package/SVF-doxygen/html/html/functions_h.html +15 -5
  97. package/SVF-doxygen/html/html/functions_i.html +24 -15
  98. package/SVF-doxygen/html/html/functions_l.html +5 -5
  99. package/SVF-doxygen/html/html/functions_m.html +2 -1
  100. package/SVF-doxygen/html/html/functions_n.html +3 -3
  101. package/SVF-doxygen/html/html/functions_o.html +23 -21
  102. package/SVF-doxygen/html/html/functions_p.html +23 -20
  103. package/SVF-doxygen/html/html/functions_r.html +3 -5
  104. package/SVF-doxygen/html/html/functions_s.html +16 -13
  105. package/SVF-doxygen/html/html/functions_t.html +12 -2
  106. package/SVF-doxygen/html/html/functions_type_c.html +2 -1
  107. package/SVF-doxygen/html/html/functions_type_d.html +3 -0
  108. package/SVF-doxygen/html/html/functions_type_i.html +2 -1
  109. package/SVF-doxygen/html/html/functions_type_t.html +3 -0
  110. package/SVF-doxygen/html/html/functions_v.html +6 -6
  111. package/SVF-doxygen/html/html/functions_vars.html +7 -1
  112. package/SVF-doxygen/html/html/functions_vars_c.html +3 -0
  113. package/SVF-doxygen/html/html/functions_vars_d.html +3 -0
  114. package/SVF-doxygen/html/html/functions_vars_e.html +3 -0
  115. package/SVF-doxygen/html/html/functions_vars_i.html +4 -0
  116. package/SVF-doxygen/html/html/functions_vars_p.html +6 -0
  117. package/SVF-doxygen/html/html/functions_vars_s.html +3 -0
  118. package/SVF-doxygen/html/html/functions_vars_t.html +3 -0
  119. package/SVF-doxygen/html/html/hierarchy.html +517 -511
  120. package/SVF-doxygen/html/html/namespaceSVF.html +59 -30
  121. package/SVF-doxygen/html/html/namespaceSVF_1_1DOT.html +3 -2
  122. package/SVF-doxygen/html/html/namespacemembers_l.html +3 -0
  123. package/SVF-doxygen/html/html/namespacemembers_type_l.html +3 -0
  124. package/SVF-doxygen/html/html/search/all_0.js +2 -1
  125. package/SVF-doxygen/html/html/search/all_1.js +8 -1
  126. package/SVF-doxygen/html/html/search/all_10.js +11 -8
  127. package/SVF-doxygen/html/html/search/all_11.js +3 -3
  128. package/SVF-doxygen/html/html/search/all_12.js +7 -6
  129. package/SVF-doxygen/html/html/search/all_13.js +8 -5
  130. package/SVF-doxygen/html/html/search/all_15.js +3 -3
  131. package/SVF-doxygen/html/html/search/all_16.js +1 -1
  132. package/SVF-doxygen/html/html/search/all_19.js +6 -0
  133. package/SVF-doxygen/html/html/search/all_2.js +3 -2
  134. package/SVF-doxygen/html/html/search/all_3.js +11 -6
  135. package/SVF-doxygen/html/html/search/all_4.js +2 -1
  136. package/SVF-doxygen/html/html/search/all_5.js +2 -1
  137. package/SVF-doxygen/html/html/search/all_7.js +6 -2
  138. package/SVF-doxygen/html/html/search/all_8.js +5 -2
  139. package/SVF-doxygen/html/html/search/all_9.js +8 -6
  140. package/SVF-doxygen/html/html/search/all_b.js +1 -1
  141. package/SVF-doxygen/html/html/search/all_c.js +4 -3
  142. package/SVF-doxygen/html/html/search/all_d.js +1 -1
  143. package/SVF-doxygen/html/html/search/all_e.js +2 -2
  144. package/SVF-doxygen/html/html/search/all_f.js +5 -5
  145. package/SVF-doxygen/html/html/search/classes_10.js +1 -0
  146. package/SVF-doxygen/html/html/search/classes_2.js +2 -0
  147. package/SVF-doxygen/html/html/search/classes_7.js +2 -1
  148. package/SVF-doxygen/html/html/search/classes_d.js +2 -0
  149. package/SVF-doxygen/html/html/search/files_2.js +2 -0
  150. package/SVF-doxygen/html/html/search/functions_0.js +8 -1
  151. package/SVF-doxygen/html/html/search/functions_1.js +3 -2
  152. package/SVF-doxygen/html/html/search/functions_12.js +2 -1
  153. package/SVF-doxygen/html/html/search/functions_17.js +6 -0
  154. package/SVF-doxygen/html/html/search/functions_2.js +4 -1
  155. package/SVF-doxygen/html/html/search/functions_4.js +1 -1
  156. package/SVF-doxygen/html/html/search/functions_6.js +5 -1
  157. package/SVF-doxygen/html/html/search/functions_7.js +5 -2
  158. package/SVF-doxygen/html/html/search/functions_8.js +2 -1
  159. package/SVF-doxygen/html/html/search/functions_c.js +1 -1
  160. package/SVF-doxygen/html/html/search/functions_e.js +2 -2
  161. package/SVF-doxygen/html/html/search/functions_f.js +1 -0
  162. package/SVF-doxygen/html/html/search/typedefs_11.js +2 -1
  163. package/SVF-doxygen/html/html/search/typedefs_2.js +1 -1
  164. package/SVF-doxygen/html/html/search/typedefs_3.js +1 -0
  165. package/SVF-doxygen/html/html/search/typedefs_7.js +1 -1
  166. package/SVF-doxygen/html/html/search/typedefs_a.js +1 -0
  167. package/SVF-doxygen/html/html/search/variables_0.js +2 -1
  168. package/SVF-doxygen/html/html/search/variables_10.js +2 -0
  169. package/SVF-doxygen/html/html/search/variables_12.js +1 -0
  170. package/SVF-doxygen/html/html/search/variables_13.js +3 -2
  171. package/SVF-doxygen/html/html/search/variables_3.js +1 -0
  172. package/SVF-doxygen/html/html/search/variables_4.js +1 -0
  173. package/SVF-doxygen/html/html/search/variables_5.js +1 -0
  174. package/SVF-doxygen/html/html/search/variables_7.js +1 -1
  175. package/SVF-doxygen/html/html/search/variables_9.js +2 -1
  176. package/SVF-doxygen/html/html/search/variables_c.js +1 -1
  177. package/SVF-doxygen/html/html/search/variables_e.js +1 -1
  178. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1SVFG_01_5_01_4.html +2 -2
  179. package/SVF-doxygen/html/html/structSVF_1_1HybridData_1_1TreeNode-members.html +86 -0
  180. package/SVF-doxygen/html/html/structSVF_1_1HybridData_1_1TreeNode.html +255 -0
  181. package/include/AbstractExecution/IntervalValue.h +5 -0
  182. package/include/CFL/CFLAlias.h +34 -0
  183. package/include/CFL/CFLData.h +316 -0
  184. package/include/CFL/CFLDataBuilder.h +91 -0
  185. package/include/CFL/CFLSolver.h +21 -0
  186. package/include/Graphs/SVFG.h +6 -0
  187. package/include/Util/Options.h +1 -0
  188. package/lib/CFL/CFLAlias.cpp +36 -0
  189. package/lib/Util/Options.cpp +5 -0
  190. package/package.json +1 -1
  191. package/tools/CFL/cfl.cpp +2 -0
@@ -166,6 +166,10 @@ Classes</h2></td></tr>
166
166
  <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLBase.html">CFLBase</a></td></tr>
167
167
  <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">CFL Client Base Class. <a href="classSVF_1_1CFLBase.html#details">More...</a><br /></td></tr>
168
168
  <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
169
+ <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLData.html">CFLData</a></td></tr>
170
+ <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
171
+ <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLDataBuilder.html">CFLDataBuilder</a></td></tr>
172
+ <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
169
173
  <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLEdge.html">CFLEdge</a></td></tr>
170
174
  <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
171
175
  <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLFIFOWorkList.html">CFLFIFOWorkList</a></td></tr>
@@ -450,6 +454,8 @@ Classes</h2></td></tr>
450
454
  <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
451
455
  <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structSVF_1_1Hash_3_01std_1_1pair_3_01S_00_01T_01_4_01_4.html">Hash&lt; std::pair&lt; S, T &gt; &gt;</a></td></tr>
452
456
  <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
457
+ <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1HybridData.html">HybridData</a></td></tr>
458
+ <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
453
459
  <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ICFG.html">ICFG</a></td></tr>
454
460
  <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
455
461
  <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ICFGBuilder.html">ICFGBuilder</a></td></tr>
@@ -619,6 +625,11 @@ Classes</h2></td></tr>
619
625
  <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
620
626
  <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1PHIVFGNode.html">PHIVFGNode</a></td></tr>
621
627
  <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
628
+ <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1POCRAlias.html">POCRAlias</a></td></tr>
629
+ <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
630
+ <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1POCRSolver.html">POCRSolver</a></td></tr>
631
+ <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Solver Utilize <a class="el" href="classSVF_1_1CFLData.html">CFLData</a>. <a href="classSVF_1_1POCRSolver.html#details">More...</a><br /></td></tr>
632
+ <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
622
633
  <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structSVF_1_1pointee__iter.html">pointee_iter</a></td></tr>
623
634
  <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
624
635
  <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1pointer__iterator.html">pointer_iterator</a></td></tr>
@@ -861,6 +872,8 @@ Classes</h2></td></tr>
861
872
  </table><table class="memberdecls">
862
873
  <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
863
874
  Typedefs</h2></td></tr>
875
+ <tr class="memitem:a3e0f8e5e6b3c433f557a1ca8e17599c9"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="structSVF_1_1GrammarBase_1_1Symbol.html">GrammarBase::Symbol</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF.html#a3e0f8e5e6b3c433f557a1ca8e17599c9">Label</a></td></tr>
876
+ <tr class="separator:a3e0f8e5e6b3c433f557a1ca8e17599c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
864
877
  <tr class="memitem:aa612d67dfa9b0c2999eeef980ca6c893"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classSVF_1_1CxtStmtDPItem.html">CxtStmtDPItem</a>&lt; <a class="el" href="namespaceSVF.html#a5dfa3fa5129bacdc0be0c051ccf386df">SVFGNode</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF.html#aa612d67dfa9b0c2999eeef980ca6c893">CxtLocDPItem</a></td></tr>
865
878
  <tr class="separator:aa612d67dfa9b0c2999eeef980ca6c893"><td class="memSeparator" colspan="2">&#160;</td></tr>
866
879
  <tr class="memitem:aa50ee8563f99ba1eb897301f55e9d855"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classSVF_1_1StmtDPItem.html">StmtDPItem</a>&lt; <a class="el" href="namespaceSVF.html#a5dfa3fa5129bacdc0be0c051ccf386df">SVFGNode</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF.html#aa50ee8563f99ba1eb897301f55e9d855">LocDPItem</a></td></tr>
@@ -3190,6 +3203,22 @@ Functions</h2></td></tr>
3190
3203
 
3191
3204
  <p class="definition">Definition at line <a class="el" href="BasicTypes_8h_source.html#l00048">48</a> of file <a class="el" href="BasicTypes_8h_source.html">BasicTypes.h</a>.</p>
3192
3205
 
3206
+ </div>
3207
+ </div>
3208
+ <a id="a3e0f8e5e6b3c433f557a1ca8e17599c9"></a>
3209
+ <h2 class="memtitle"><span class="permalink"><a href="#a3e0f8e5e6b3c433f557a1ca8e17599c9">&#9670;&nbsp;</a></span>Label</h2>
3210
+
3211
+ <div class="memitem">
3212
+ <div class="memproto">
3213
+ <table class="memname">
3214
+ <tr>
3215
+ <td class="memname">typedef <a class="el" href="structSVF_1_1GrammarBase_1_1Symbol.html">GrammarBase::Symbol</a> <a class="el" href="namespaceSVF.html#a3e0f8e5e6b3c433f557a1ca8e17599c9">SVF::Label</a></td>
3216
+ </tr>
3217
+ </table>
3218
+ </div><div class="memdoc">
3219
+
3220
+ <p class="definition">Definition at line <a class="el" href="CFLData_8h_source.html#l00043">43</a> of file <a class="el" href="CFLData_8h_source.html">CFLData.h</a>.</p>
3221
+
3193
3222
  </div>
3194
3223
  </div>
3195
3224
  <a id="afa513a3c76371907221ee2b1ef289c71"></a>
@@ -5248,8 +5277,8 @@ template&lt;class GraphType &gt; </div>
5248
5277
 
5249
5278
  <p>Bitwise AND of IntervalValues. </p>
5250
5279
 
5251
- <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00770">770</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
5252
- <div class="fragment"><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160;{</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.is_numeral() &amp;&amp; rhs.is_numeral())</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; {</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; <span class="keywordflow">return</span> IntervalValue((<a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a>)lhs.getNumeral() &amp; (<a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a>)rhs.getNumeral());</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; }</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.lb().getNumeral() &gt;= 0 &amp;&amp; rhs.lb().getNumeral() &gt;= 0)</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; {</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; <span class="keywordflow">return</span> IntervalValue(0.0, std::min(lhs.ub().getNumeral(), rhs.ub().getNumeral()));</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; }</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.lb().getNumeral() &gt;= 0)</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; {</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; <span class="keywordflow">return</span> IntervalValue(0.0, lhs.ub().getNumeral());</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; }</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (rhs.lb().getNumeral() &gt;= 0)</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; {</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; <span class="keywordflow">return</span> IntervalValue(0.0, rhs.ub().getNumeral());</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; }</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; {</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; <span class="keywordflow">return</span> IntervalValue::top();</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; }</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a9b707002523ece2ac54ca893ee9a2d4e"><div class="ttname"><a href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">SVF::s32_t</a></div><div class="ttdeci">signed s32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00051">SVFType.h:51</a></div></div>
5280
+ <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00775">775</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
5281
+ <div class="fragment"><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160;{</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.is_numeral() &amp;&amp; rhs.is_numeral())</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; {</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; <span class="keywordflow">return</span> IntervalValue((<a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a>)lhs.getNumeral() &amp; (<a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a>)rhs.getNumeral());</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; }</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.lb().getNumeral() &gt;= 0 &amp;&amp; rhs.lb().getNumeral() &gt;= 0)</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; {</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; <span class="keywordflow">return</span> IntervalValue(0.0, std::min(lhs.ub().getNumeral(), rhs.ub().getNumeral()));</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; }</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.lb().getNumeral() &gt;= 0)</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; {</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; <span class="keywordflow">return</span> IntervalValue(0.0, lhs.ub().getNumeral());</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; }</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (rhs.lb().getNumeral() &gt;= 0)</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; {</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; <span class="keywordflow">return</span> IntervalValue(0.0, rhs.ub().getNumeral());</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; }</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; {</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; <span class="keywordflow">return</span> IntervalValue::top();</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; }</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a9b707002523ece2ac54ca893ee9a2d4e"><div class="ttname"><a href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">SVF::s32_t</a></div><div class="ttdeci">signed s32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00051">SVFType.h:51</a></div></div>
5253
5282
  </div><!-- fragment -->
5254
5283
  </div>
5255
5284
  </div>
@@ -5329,8 +5358,8 @@ template&lt;unsigned ElementSize&gt; </div>
5329
5358
 
5330
5359
  <p>Divide IntervalValues. </p>
5331
5360
 
5332
- <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00519">519</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
5333
- <div class="fragment"><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160;{</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; {</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; }</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (rhs.contains(0))</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; {</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <span class="keywordflow">return</span> lhs.is_zero() ? IntervalValue(0, 0) : IntervalValue::top();</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; }</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.is_numeral() &amp;&amp; rhs.is_numeral())</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; {</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <span class="keywordflow">return</span> IntervalValue(lhs.lb() % rhs.lb(), lhs.lb() % rhs.lb());</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; }</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; {</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <span class="keywordtype">double</span> n_ub = std::max(std::abs(lhs.lb().getNumeral()), std::abs(lhs.ub().getNumeral()));</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <span class="keywordtype">double</span> d_ub = std::max(std::abs(rhs.lb().getNumeral()), std::abs(rhs.ub().getNumeral())) - 1;</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <span class="keywordtype">double</span> ub = std::min(n_ub, d_ub);</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160;</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; <span class="keywordflow">if</span> (lhs.lb().getNumeral() &lt; 0)</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; {</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <span class="keywordflow">if</span> (lhs.ub().getNumeral() &gt; 0)</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; {</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; <span class="keywordflow">return</span> IntervalValue(-ub, ub);</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; }</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; {</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <span class="keywordflow">return</span> IntervalValue(-ub, <span class="keywordtype">double</span>(0));</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; }</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; }</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; {</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <span class="keywordflow">return</span> IntervalValue(<span class="keywordtype">double</span>(0), ub);</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; }</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; }</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160;}</div></div><!-- fragment -->
5361
+ <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00524">524</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
5362
+ <div class="fragment"><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160;{</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; {</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; }</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (rhs.contains(0))</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; {</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <span class="keywordflow">return</span> lhs.is_zero() ? IntervalValue(0, 0) : IntervalValue::top();</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; }</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.is_numeral() &amp;&amp; rhs.is_numeral())</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; {</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <span class="keywordflow">return</span> IntervalValue(lhs.lb() % rhs.lb(), lhs.lb() % rhs.lb());</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; }</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; {</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; <span class="keywordtype">double</span> n_ub = std::max(std::abs(lhs.lb().getNumeral()), std::abs(lhs.ub().getNumeral()));</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <span class="keywordtype">double</span> d_ub = std::max(std::abs(rhs.lb().getNumeral()), std::abs(rhs.ub().getNumeral())) - 1;</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; <span class="keywordtype">double</span> ub = std::min(n_ub, d_ub);</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160;</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <span class="keywordflow">if</span> (lhs.lb().getNumeral() &lt; 0)</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; {</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <span class="keywordflow">if</span> (lhs.ub().getNumeral() &gt; 0)</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; {</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <span class="keywordflow">return</span> IntervalValue(-ub, ub);</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; }</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; {</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <span class="keywordflow">return</span> IntervalValue(-ub, <span class="keywordtype">double</span>(0));</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; }</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; }</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; {</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <span class="keywordflow">return</span> IntervalValue(<span class="keywordtype">double</span>(0), ub);</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; }</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; }</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160;}</div></div><!-- fragment -->
5334
5363
  </div>
5335
5364
  </div>
5336
5365
  <a id="a9d6c986a34096a3552a6385ccbb724e4"></a>
@@ -5449,8 +5478,8 @@ template&lt;unsigned ElementSize&gt; </div>
5449
5478
 
5450
5479
  <p>Multiply IntervalValues. </p>
5451
5480
 
5452
- <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00476">476</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
5453
- <div class="fragment"><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160;{</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; {</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; }</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; {</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; NumericLiteral ll = lhs.lb() * rhs.lb();</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; NumericLiteral lu = lhs.lb() * rhs.ub();</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; NumericLiteral ul = lhs.ub() * rhs.lb();</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; NumericLiteral uu = lhs.ub() * rhs.ub();</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <span class="keywordflow">return</span> IntervalValue(std::min({ll.getNumeral(), lu.getNumeral(), ul.getNumeral(), uu.getNumeral()}),</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; std::max({ll.getNumeral(), lu.getNumeral(), ul.getNumeral(), uu.getNumeral()}));</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; }</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;}</div></div><!-- fragment -->
5481
+ <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00481">481</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
5482
+ <div class="fragment"><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160;{</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; {</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; }</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; {</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; NumericLiteral ll = lhs.lb() * rhs.lb();</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; NumericLiteral lu = lhs.lb() * rhs.ub();</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; NumericLiteral ul = lhs.ub() * rhs.lb();</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; NumericLiteral uu = lhs.ub() * rhs.ub();</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="keywordflow">return</span> IntervalValue(std::min({ll.getNumeral(), lu.getNumeral(), ul.getNumeral(), uu.getNumeral()}),</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; std::max({ll.getNumeral(), lu.getNumeral(), ul.getNumeral(), uu.getNumeral()}));</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; }</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160;}</div></div><!-- fragment -->
5454
5483
  </div>
5455
5484
  </div>
5456
5485
  <a id="ad9d56b31ab074c813b48da4c2e0742aa"></a>
@@ -5489,8 +5518,8 @@ template&lt;unsigned ElementSize&gt; </div>
5489
5518
 
5490
5519
  <p>Add IntervalValues. </p>
5491
5520
 
5492
- <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00440">440</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
5493
- <div class="fragment"><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160;{</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; {</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; }</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.isTop() || rhs.isTop())</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; {</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="keywordflow">return</span> IntervalValue::top();</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; }</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; {</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="keywordflow">return</span> IntervalValue(lhs.lb() + rhs.lb(), lhs.ub() + rhs.ub());</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; }</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;}</div></div><!-- fragment -->
5521
+ <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00445">445</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
5522
+ <div class="fragment"><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160;{</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; {</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; }</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.isTop() || rhs.isTop())</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; {</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="keywordflow">return</span> IntervalValue::top();</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; }</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; {</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <span class="keywordflow">return</span> IntervalValue(lhs.lb() + rhs.lb(), lhs.ub() + rhs.ub());</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; }</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160;}</div></div><!-- fragment -->
5494
5523
  </div>
5495
5524
  </div>
5496
5525
  <a id="a6c2f7ce4908d39a17b29830a2e4bd781"></a>
@@ -5561,8 +5590,8 @@ template&lt;unsigned ElementSize&gt; </div>
5561
5590
 
5562
5591
  <p>Substract IntervalValues. </p>
5563
5592
 
5564
- <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00458">458</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
5565
- <div class="fragment"><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160;{</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; {</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; }</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.isTop() || rhs.isTop())</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; {</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keywordflow">return</span> IntervalValue::top();</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; }</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; {</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keywordflow">return</span> IntervalValue(lhs.lb() - rhs.ub(), lhs.ub() - rhs.lb());</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; }</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160;}</div></div><!-- fragment -->
5593
+ <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00463">463</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
5594
+ <div class="fragment"><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;{</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; {</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; }</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.isTop() || rhs.isTop())</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; {</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keywordflow">return</span> IntervalValue::top();</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; }</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; {</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="keywordflow">return</span> IntervalValue(lhs.lb() - rhs.ub(), lhs.ub() - rhs.lb());</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; }</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160;}</div></div><!-- fragment -->
5566
5595
  </div>
5567
5596
  </div>
5568
5597
  <a id="a1b6662f895cfd942996ac4d578960eed"></a>
@@ -5641,8 +5670,8 @@ template&lt;unsigned ElementSize&gt; </div>
5641
5670
 
5642
5671
  <p>Divide IntervalValues. </p>
5643
5672
 
5644
- <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00495">495</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
5645
- <div class="fragment"><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160;{</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; {</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; }</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (rhs.contains(0))</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; {</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <span class="keywordflow">return</span> lhs.is_zero() ? IntervalValue(0, 0) : IntervalValue::top();</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; }</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; {</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <span class="comment">// Neither the dividend nor the divisor contains 0</span></div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; NumericLiteral ll = lhs.lb() / rhs.lb();</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; NumericLiteral lu = lhs.lb() / rhs.ub();</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; NumericLiteral ul = lhs.ub() / rhs.lb();</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; NumericLiteral uu = lhs.ub() / rhs.ub();</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="keywordflow">return</span> IntervalValue(std::min({ll.getNumeral(), lu.getNumeral(), ul.getNumeral(), uu.getNumeral()}),</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; std::max({ll.getNumeral(), lu.getNumeral(), ul.getNumeral(), uu.getNumeral()}));</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; }</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160;}</div></div><!-- fragment -->
5673
+ <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00500">500</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
5674
+ <div class="fragment"><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160;{</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; {</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; }</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (rhs.contains(0))</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; {</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <span class="keywordflow">return</span> lhs.is_zero() ? IntervalValue(0, 0) : IntervalValue::top();</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; }</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; {</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="comment">// Neither the dividend nor the divisor contains 0</span></div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; NumericLiteral ll = lhs.lb() / rhs.lb();</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; NumericLiteral lu = lhs.lb() / rhs.ub();</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; NumericLiteral ul = lhs.ub() / rhs.lb();</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; NumericLiteral uu = lhs.ub() / rhs.ub();</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <span class="keywordflow">return</span> IntervalValue(std::min({ll.getNumeral(), lu.getNumeral(), ul.getNumeral(), uu.getNumeral()}),</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; std::max({ll.getNumeral(), lu.getNumeral(), ul.getNumeral(), uu.getNumeral()}));</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; }</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160;}</div></div><!-- fragment -->
5646
5675
  </div>
5647
5676
  </div>
5648
5677
  <a id="adeb418bb692b6b0c3498a24927e1068b"></a>
@@ -5681,8 +5710,8 @@ template&lt;unsigned ElementSize&gt; </div>
5681
5710
 
5682
5711
  <p>Greater than IntervalValues. </p>
5683
5712
 
5684
- <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00597">597</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
5685
- <div class="fragment"><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160;{</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; {</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; }</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.isTop() || lhs.isTop())</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; {</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; <span class="keywordflow">return</span> IntervalValue::top();</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; }</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; {</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; <span class="keywordflow">if</span> (lhs.is_numeral() &amp;&amp; rhs.is_numeral())</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; {</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <span class="keywordflow">return</span> lhs.lb().geq(rhs.lb()) ? IntervalValue(0, 0) : IntervalValue(1, 1);</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; }</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; {</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; <span class="comment">// lhs [1,2] rhs [3,4]</span></div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; <span class="keywordflow">if</span> (lhs.ub().getNumeral() &lt; rhs.lb().getNumeral())</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; {</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <span class="keywordflow">return</span> IntervalValue(1, 1);</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; <span class="comment">// lhs [3,4] rhs [1,2]</span></div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; }</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.lb().getNumeral() &gt; rhs.ub().getNumeral())</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; {</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; <span class="keywordflow">return</span> IntervalValue(0, 0);</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; <span class="comment">// lhs [1,3] rhs [2,4]</span></div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; }</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; {</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <span class="keywordflow">return</span> IntervalValue(0, 1);</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; }</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; }</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; }</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160;}</div></div><!-- fragment -->
5713
+ <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00602">602</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
5714
+ <div class="fragment"><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160;{</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; {</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; }</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.isTop() || lhs.isTop())</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; {</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; <span class="keywordflow">return</span> IntervalValue::top();</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; }</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; {</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; <span class="keywordflow">if</span> (lhs.is_numeral() &amp;&amp; rhs.is_numeral())</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; {</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; <span class="keywordflow">return</span> lhs.lb().geq(rhs.lb()) ? IntervalValue(0, 0) : IntervalValue(1, 1);</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; }</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; {</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <span class="comment">// lhs [1,2] rhs [3,4]</span></div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <span class="keywordflow">if</span> (lhs.ub().getNumeral() &lt; rhs.lb().getNumeral())</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; {</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; <span class="keywordflow">return</span> IntervalValue(1, 1);</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; <span class="comment">// lhs [3,4] rhs [1,2]</span></div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; }</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.lb().getNumeral() &gt; rhs.ub().getNumeral())</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; {</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <span class="keywordflow">return</span> IntervalValue(0, 0);</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <span class="comment">// lhs [1,3] rhs [2,4]</span></div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; }</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; {</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <span class="keywordflow">return</span> IntervalValue(0, 1);</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; }</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; }</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; }</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160;}</div></div><!-- fragment -->
5686
5715
  </div>
5687
5716
  </div>
5688
5717
  <a id="af95793adab8fb9aa19e19027e73372a6"></a>
@@ -5721,8 +5750,8 @@ template&lt;unsigned ElementSize&gt; </div>
5721
5750
 
5722
5751
  <p>Left binary shift of IntervalValues. </p>
5723
5752
 
5724
- <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00714">714</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
5725
- <div class="fragment"><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160;{</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; <span class="comment">//TODO: implement &lt;&lt;</span></div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; <span class="keywordflow">if</span> (lhs.isTop() &amp;&amp; rhs.isTop())</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; <span class="keywordflow">return</span> IntervalValue::top();</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; {</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; IntervalValue shift = rhs;</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; shift.meet_with(IntervalValue(0, IntervalValue::plus_infinity()));</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; <span class="keywordflow">if</span> (shift.isBottom())</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; IntervalValue coeff(1 &lt;&lt; (<a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a>) shift.lb().getNumeral(),</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; shift.ub().is_infinity() ? IntervalValue::plus_infinity() : 1</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; &lt;&lt; (<a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a>) shift.ub().getNumeral());</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; <span class="keywordflow">return</span> lhs * coeff;</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; }</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a9b707002523ece2ac54ca893ee9a2d4e"><div class="ttname"><a href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">SVF::s32_t</a></div><div class="ttdeci">signed s32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00051">SVFType.h:51</a></div></div>
5753
+ <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00719">719</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
5754
+ <div class="fragment"><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160;{</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; <span class="comment">//TODO: implement &lt;&lt;</span></div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; <span class="keywordflow">if</span> (lhs.isTop() &amp;&amp; rhs.isTop())</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; <span class="keywordflow">return</span> IntervalValue::top();</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; {</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; IntervalValue shift = rhs;</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; shift.meet_with(IntervalValue(0, IntervalValue::plus_infinity()));</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; <span class="keywordflow">if</span> (shift.isBottom())</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; IntervalValue coeff(1 &lt;&lt; (<a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a>) shift.lb().getNumeral(),</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; shift.ub().is_infinity() ? IntervalValue::plus_infinity() : 1</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; &lt;&lt; (<a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a>) shift.ub().getNumeral());</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; <span class="keywordflow">return</span> lhs * coeff;</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; }</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a9b707002523ece2ac54ca893ee9a2d4e"><div class="ttname"><a href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">SVF::s32_t</a></div><div class="ttdeci">signed s32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00051">SVFType.h:51</a></div></div>
5726
5755
  </div><!-- fragment -->
5727
5756
  </div>
5728
5757
  </div>
@@ -5799,8 +5828,8 @@ template&lt;unsigned ElementSize&gt; </div>
5799
5828
 
5800
5829
  <p>Write an <a class="el" href="classSVF_1_1IntervalValue.html">IntervalValue</a> on a stream. </p>
5801
5830
 
5802
- <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00855">855</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
5803
- <div class="fragment"><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160;{</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; IntervalValue.dump(o);</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; <span class="keywordflow">return</span> o;</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160;}</div></div><!-- fragment -->
5831
+ <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00860">860</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
5832
+ <div class="fragment"><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160;{</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; IntervalValue.dump(o);</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; <span class="keywordflow">return</span> o;</div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160;}</div></div><!-- fragment -->
5804
5833
  </div>
5805
5834
  </div>
5806
5835
  <a id="af83f5c5c68cdb80576cdc1d62c01b207"></a>
@@ -5871,8 +5900,8 @@ template&lt;typename F , typename S &gt; </div>
5871
5900
 
5872
5901
  <p>Greater than IntervalValues. </p>
5873
5902
 
5874
- <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00675">675</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
5875
- <div class="fragment"><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160;{</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; {</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; }</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.isTop() || lhs.isTop())</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; {</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; <span class="keywordflow">return</span> IntervalValue::top();</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; }</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; {</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; <span class="keywordflow">if</span> (lhs.is_numeral() &amp;&amp; rhs.is_numeral())</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; {</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; <span class="keywordflow">return</span> lhs.lb().leq(rhs.lb()) ? IntervalValue(1, 1) : IntervalValue(0, 0);</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; }</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; {</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; <span class="comment">// lhs [1,2] rhs [2,3]</span></div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; <span class="keywordflow">if</span> (lhs.ub().getNumeral() &lt;= rhs.lb().getNumeral())</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; {</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; <span class="keywordflow">return</span> IntervalValue(1, 1);</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; <span class="comment">// lhs [3,4] rhs[1,2]</span></div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; }</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.lb().getNumeral() &gt; rhs.ub().getNumeral())</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; {</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; <span class="keywordflow">return</span> IntervalValue(0, 0);</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; <span class="comment">// lhs [1,3] rhs [2,4]</span></div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; }</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; {</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <span class="keywordflow">if</span> (lhs.equals(rhs)) <span class="keywordflow">return</span> IntervalValue(1, 1);</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">return</span> IntervalValue(0, 1);</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; }</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; }</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; }</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160;}</div></div><!-- fragment -->
5903
+ <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00680">680</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
5904
+ <div class="fragment"><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160;{</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; {</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; }</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.isTop() || lhs.isTop())</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; {</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; <span class="keywordflow">return</span> IntervalValue::top();</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; }</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; {</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; <span class="keywordflow">if</span> (lhs.is_numeral() &amp;&amp; rhs.is_numeral())</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; {</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; <span class="keywordflow">return</span> lhs.lb().leq(rhs.lb()) ? IntervalValue(1, 1) : IntervalValue(0, 0);</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; }</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; {</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; <span class="comment">// lhs [1,2] rhs [2,3]</span></div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; <span class="keywordflow">if</span> (lhs.ub().getNumeral() &lt;= rhs.lb().getNumeral())</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; {</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; <span class="keywordflow">return</span> IntervalValue(1, 1);</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; <span class="comment">// lhs [3,4] rhs[1,2]</span></div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; }</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.lb().getNumeral() &gt; rhs.ub().getNumeral())</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; {</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <span class="keywordflow">return</span> IntervalValue(0, 0);</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; <span class="comment">// lhs [1,3] rhs [2,4]</span></div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; }</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; {</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; <span class="keywordflow">if</span> (lhs.equals(rhs)) <span class="keywordflow">return</span> IntervalValue(1, 1);</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">return</span> IntervalValue(0, 1);</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; }</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; }</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; }</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160;}</div></div><!-- fragment -->
5876
5905
  </div>
5877
5906
  </div>
5878
5907
  <a id="aedd9d023a68dddd66314be63bb8e48d2"></a>
@@ -5911,8 +5940,8 @@ template&lt;typename F , typename S &gt; </div>
5911
5940
 
5912
5941
  <p>Greater than IntervalValues. </p>
5913
5942
 
5914
- <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00559">559</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
5915
- <div class="fragment"><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160;{</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; {</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; }</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.isTop() || lhs.isTop())</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; {</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <span class="keywordflow">return</span> IntervalValue::top();</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; }</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; {</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <span class="keywordflow">if</span> (lhs.is_numeral() &amp;&amp; rhs.is_numeral())</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; {</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <span class="keywordflow">return</span> lhs.lb().leq(rhs.lb()) ? IntervalValue(0, 0) : IntervalValue(1, 1);</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; }</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; {</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; <span class="comment">// lhs[3,4] rhs[1,2]</span></div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; <span class="keywordflow">if</span> (lhs.lb().getNumeral() &gt; rhs.ub().getNumeral())</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; {</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="keywordflow">return</span> IntervalValue(1, 1);</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <span class="comment">// lhs[1,2] rhs[3,4]</span></div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; }</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.ub().getNumeral() &lt; rhs.lb().getNumeral())</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; {</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; <span class="keywordflow">return</span> IntervalValue(0, 0);</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; }</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; {</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <span class="comment">// lhs[1,3] rhs[2,4]</span></div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; <span class="keywordflow">return</span> IntervalValue(0, 1);</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; }</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; }</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; }</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160;}</div></div><!-- fragment -->
5943
+ <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00564">564</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
5944
+ <div class="fragment"><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160;{</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; {</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; }</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.isTop() || lhs.isTop())</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; {</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <span class="keywordflow">return</span> IntervalValue::top();</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; }</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; {</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; <span class="keywordflow">if</span> (lhs.is_numeral() &amp;&amp; rhs.is_numeral())</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; {</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; <span class="keywordflow">return</span> lhs.lb().leq(rhs.lb()) ? IntervalValue(0, 0) : IntervalValue(1, 1);</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; }</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; {</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="comment">// lhs[3,4] rhs[1,2]</span></div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <span class="keywordflow">if</span> (lhs.lb().getNumeral() &gt; rhs.ub().getNumeral())</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; {</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; <span class="keywordflow">return</span> IntervalValue(1, 1);</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; <span class="comment">// lhs[1,2] rhs[3,4]</span></div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; }</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.ub().getNumeral() &lt; rhs.lb().getNumeral())</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; {</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; <span class="keywordflow">return</span> IntervalValue(0, 0);</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; }</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; {</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <span class="comment">// lhs[1,3] rhs[2,4]</span></div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <span class="keywordflow">return</span> IntervalValue(0, 1);</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; }</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; }</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; }</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160;}</div></div><!-- fragment -->
5916
5945
  </div>
5917
5946
  </div>
5918
5947
  <a id="a08938c05911dac4ebd102adfafd14d24"></a>
@@ -5951,8 +5980,8 @@ template&lt;typename F , typename S &gt; </div>
5951
5980
 
5952
5981
  <p>Greater than IntervalValues. </p>
5953
5982
 
5954
- <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00636">636</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
5955
- <div class="fragment"><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160;{</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; {</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; }</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.isTop() || lhs.isTop())</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; {</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <span class="keywordflow">return</span> IntervalValue::top();</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; }</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; {</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; <span class="keywordflow">if</span> (lhs.is_numeral() &amp;&amp; rhs.is_numeral())</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; {</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; <span class="keywordflow">return</span> lhs.lb().geq(rhs.lb()) ? IntervalValue(1, 1) : IntervalValue(0, 0);</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; }</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; {</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; <span class="comment">// lhs [2,3] rhs [1,2]</span></div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <span class="keywordflow">if</span> (lhs.lb().getNumeral() &gt;= rhs.ub().getNumeral())</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; {</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <span class="keywordflow">return</span> IntervalValue(1, 1);</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <span class="comment">// lhs [1,2] rhs[3,4]</span></div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; }</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.ub().getNumeral() &lt; rhs.lb().getNumeral())</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; {</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <span class="keywordflow">return</span> IntervalValue(0, 0);</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="comment">// lhs [1,3] rhs [2,4]</span></div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; }</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; {</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; <span class="keywordflow">if</span> (lhs.equals(rhs)) <span class="keywordflow">return</span> IntervalValue(1, 1);</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">return</span> IntervalValue(0, 1);</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; }</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; }</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; }</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160;}</div></div><!-- fragment -->
5983
+ <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00641">641</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
5984
+ <div class="fragment"><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160;{</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; {</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; }</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.isTop() || lhs.isTop())</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; {</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; <span class="keywordflow">return</span> IntervalValue::top();</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; }</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; {</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <span class="keywordflow">if</span> (lhs.is_numeral() &amp;&amp; rhs.is_numeral())</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; {</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <span class="keywordflow">return</span> lhs.lb().geq(rhs.lb()) ? IntervalValue(1, 1) : IntervalValue(0, 0);</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; }</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; {</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <span class="comment">// lhs [2,3] rhs [1,2]</span></div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; <span class="keywordflow">if</span> (lhs.lb().getNumeral() &gt;= rhs.ub().getNumeral())</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; {</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <span class="keywordflow">return</span> IntervalValue(1, 1);</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="comment">// lhs [1,2] rhs[3,4]</span></div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; }</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.ub().getNumeral() &lt; rhs.lb().getNumeral())</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; {</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; <span class="keywordflow">return</span> IntervalValue(0, 0);</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; <span class="comment">// lhs [1,3] rhs [2,4]</span></div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; }</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; {</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; <span class="keywordflow">if</span> (lhs.equals(rhs)) <span class="keywordflow">return</span> IntervalValue(1, 1);</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">return</span> IntervalValue(0, 1);</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; }</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; }</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; }</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160;}</div></div><!-- fragment -->
5956
5985
  </div>
5957
5986
  </div>
5958
5987
  <a id="a4b2b5d8755b9f0c4f82a9f82b4631fee"></a>
@@ -5991,8 +6020,8 @@ template&lt;typename F , typename S &gt; </div>
5991
6020
 
5992
6021
  <p>Left binary shift of IntervalValues. </p>
5993
6022
 
5994
- <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00735">735</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
5995
- <div class="fragment"><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160;{</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; <span class="comment">//TODO: implement &gt;&gt;</span></div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.isTop() &amp;&amp; rhs.isTop())</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; <span class="keywordflow">return</span> IntervalValue::top();</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; {</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; IntervalValue shift = rhs;</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; shift.meet_with(IntervalValue(0, IntervalValue::plus_infinity()));</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; <span class="keywordflow">if</span> (shift.isBottom())</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; <span class="keywordflow">if</span> (lhs.contains(0))</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; {</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; IntervalValue l(lhs.lb(), -1);</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; IntervalValue u(1, lhs.ub());</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; IntervalValue tmp = l &gt;&gt; rhs;</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; tmp.join_with(u &gt;&gt; rhs);</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; tmp.join_with(IntervalValue(0));</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; <span class="keywordflow">return</span> tmp;</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; }</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; {</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; NumericLiteral ll = lhs.lb() &gt;&gt; shift.lb();</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; NumericLiteral lu = lhs.lb() &gt;&gt; shift.ub();</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; NumericLiteral ul = lhs.ub() &gt;&gt; shift.lb();</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; NumericLiteral uu = lhs.ub() &gt;&gt; shift.ub();</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; <span class="keywordflow">return</span> IntervalValue(std::min({ll.getNumeral(), lu.getNumeral(), ul.getNumeral(), uu.getNumeral()}),</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; std::max({ll.getNumeral(), lu.getNumeral(), ul.getNumeral(), uu.getNumeral()}));</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; }</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; }</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160;}</div></div><!-- fragment -->
6023
+ <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00740">740</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
6024
+ <div class="fragment"><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160;{</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; <span class="comment">//TODO: implement &gt;&gt;</span></div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.isTop() &amp;&amp; rhs.isTop())</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; <span class="keywordflow">return</span> IntervalValue::top();</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; {</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; IntervalValue shift = rhs;</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; shift.meet_with(IntervalValue(0, IntervalValue::plus_infinity()));</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; <span class="keywordflow">if</span> (shift.isBottom())</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; <span class="keywordflow">if</span> (lhs.contains(0))</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; {</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; IntervalValue l(lhs.lb(), -1);</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; IntervalValue u(1, lhs.ub());</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; IntervalValue tmp = l &gt;&gt; rhs;</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; tmp.join_with(u &gt;&gt; rhs);</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; tmp.join_with(IntervalValue(0));</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; <span class="keywordflow">return</span> tmp;</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; }</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; {</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; NumericLiteral ll = lhs.lb() &gt;&gt; shift.lb();</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; NumericLiteral lu = lhs.lb() &gt;&gt; shift.ub();</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; NumericLiteral ul = lhs.ub() &gt;&gt; shift.lb();</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; NumericLiteral uu = lhs.ub() &gt;&gt; shift.ub();</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; <span class="keywordflow">return</span> IntervalValue(std::min({ll.getNumeral(), lu.getNumeral(), ul.getNumeral(), uu.getNumeral()}),</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; std::max({ll.getNumeral(), lu.getNumeral(), ul.getNumeral(), uu.getNumeral()}));</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; }</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; }</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160;}</div></div><!-- fragment -->
5996
6025
  </div>
5997
6026
  </div>
5998
6027
  <a id="a8803e977797624599af5b0a84fe1de3d"></a>
@@ -6031,8 +6060,8 @@ template&lt;typename F , typename S &gt; </div>
6031
6060
 
6032
6061
  <p>Bitwise XOR of IntervalValues. </p>
6033
6062
 
6034
- <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00826">826</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
6035
- <div class="fragment"><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160;{</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; <span class="keyword">auto</span> next_power_of_2 = [](<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> num)</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; {</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; <span class="keywordtype">int</span> i = 1;</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; <span class="keywordflow">while</span> ((num &gt;&gt; i) != 0)</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; {</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; ++i;</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; }</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; <span class="keywordflow">return</span> 1 &lt;&lt; i;</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; };</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.is_numeral() &amp;&amp; rhs.is_numeral())</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; <span class="keywordflow">return</span> IntervalValue((<a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a>)lhs.getNumeral() ^ (<a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a>)rhs.getNumeral());</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.lb().getNumeral() &gt;= 0 &amp;&amp; !lhs.ub().is_infinity() &amp;&amp;</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; rhs.lb().getNumeral() &gt;= 0 &amp;&amp; !rhs.ub().is_infinity())</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; {</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; <span class="keywordtype">double</span> m = std::max(lhs.ub().getNumeral(), rhs.ub().getNumeral());</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; <span class="keywordtype">double</span> ub = next_power_of_2(<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a>(m+1));</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; <span class="keywordflow">return</span> IntervalValue(0.0, ub);</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; }</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; {</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; <span class="keywordflow">return</span> IntervalValue::top();</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; }</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a9b707002523ece2ac54ca893ee9a2d4e"><div class="ttname"><a href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">SVF::s32_t</a></div><div class="ttdeci">signed s32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00051">SVFType.h:51</a></div></div>
6063
+ <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00831">831</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
6064
+ <div class="fragment"><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160;{</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; <span class="keyword">auto</span> next_power_of_2 = [](<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> num)</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; {</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; <span class="keywordtype">int</span> i = 1;</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; <span class="keywordflow">while</span> ((num &gt;&gt; i) != 0)</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; {</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; ++i;</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; }</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; <span class="keywordflow">return</span> 1 &lt;&lt; i;</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; };</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.is_numeral() &amp;&amp; rhs.is_numeral())</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; <span class="keywordflow">return</span> IntervalValue((<a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a>)lhs.getNumeral() ^ (<a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a>)rhs.getNumeral());</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.lb().getNumeral() &gt;= 0 &amp;&amp; !lhs.ub().is_infinity() &amp;&amp;</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; rhs.lb().getNumeral() &gt;= 0 &amp;&amp; !rhs.ub().is_infinity())</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; {</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; <span class="keywordtype">double</span> m = std::max(lhs.ub().getNumeral(), rhs.ub().getNumeral());</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; <span class="keywordtype">double</span> ub = next_power_of_2(<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a>(m+1));</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; <span class="keywordflow">return</span> IntervalValue(0.0, ub);</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; }</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; {</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; <span class="keywordflow">return</span> IntervalValue::top();</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; }</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a9b707002523ece2ac54ca893ee9a2d4e"><div class="ttname"><a href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">SVF::s32_t</a></div><div class="ttdeci">signed s32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00051">SVFType.h:51</a></div></div>
6036
6065
  <div class="ttc" id="namespaceSVF_html_ad781b0b14e89773e774072b280658ef3"><div class="ttname"><a href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">SVF::s64_t</a></div><div class="ttdeci">signed long long s64_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00053">SVFType.h:53</a></div></div>
6037
6066
  </div><!-- fragment -->
6038
6067
  </div>
@@ -6105,8 +6134,8 @@ template&lt;typename F , typename S &gt; </div>
6105
6134
 
6106
6135
  <p>Bitwise OR of IntervalValues. </p>
6107
6136
 
6108
- <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00797">797</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
6109
- <div class="fragment"><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160;{</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; <span class="keyword">auto</span> next_power_of_2 = [](<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> num)</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; {</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; <span class="keywordtype">int</span> i = 1;</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; <span class="keywordflow">while</span> ((num &gt;&gt; i) != 0)</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; {</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; ++i;</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; }</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; <span class="keywordflow">return</span> 1 &lt;&lt; i;</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; };</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.is_numeral() &amp;&amp; rhs.is_numeral())</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; <span class="keywordflow">return</span> IntervalValue((<a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a>)lhs.getNumeral() | (<a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a>)rhs.getNumeral());</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.lb().getNumeral() &gt;= 0 &amp;&amp; !lhs.ub().is_infinity() &amp;&amp;</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; rhs.lb().getNumeral() &gt;= 0 &amp;&amp; !rhs.ub().is_infinity())</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; {</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; <span class="keywordtype">double</span> m = std::max(lhs.ub().getNumeral(), rhs.ub().getNumeral());</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; <span class="keywordtype">double</span> ub = next_power_of_2(<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a>(m+1));</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; <span class="keywordflow">return</span> IntervalValue(0.0, ub);</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; }</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; {</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; <span class="keywordflow">return</span> IntervalValue::top();</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; }</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a9b707002523ece2ac54ca893ee9a2d4e"><div class="ttname"><a href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">SVF::s32_t</a></div><div class="ttdeci">signed s32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00051">SVFType.h:51</a></div></div>
6137
+ <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00802">802</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
6138
+ <div class="fragment"><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160;{</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; <span class="keyword">auto</span> next_power_of_2 = [](<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> num)</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; {</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; <span class="keywordtype">int</span> i = 1;</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; <span class="keywordflow">while</span> ((num &gt;&gt; i) != 0)</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; {</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; ++i;</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; }</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; <span class="keywordflow">return</span> 1 &lt;&lt; i;</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; };</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.is_numeral() &amp;&amp; rhs.is_numeral())</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; <span class="keywordflow">return</span> IntervalValue((<a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a>)lhs.getNumeral() | (<a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a>)rhs.getNumeral());</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.lb().getNumeral() &gt;= 0 &amp;&amp; !lhs.ub().is_infinity() &amp;&amp;</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; rhs.lb().getNumeral() &gt;= 0 &amp;&amp; !rhs.ub().is_infinity())</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; {</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; <span class="keywordtype">double</span> m = std::max(lhs.ub().getNumeral(), rhs.ub().getNumeral());</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; <span class="keywordtype">double</span> ub = next_power_of_2(<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a>(m+1));</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; <span class="keywordflow">return</span> IntervalValue(0.0, ub);</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; }</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; {</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; <span class="keywordflow">return</span> IntervalValue::top();</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; }</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a9b707002523ece2ac54ca893ee9a2d4e"><div class="ttname"><a href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">SVF::s32_t</a></div><div class="ttdeci">signed s32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00051">SVFType.h:51</a></div></div>
6110
6139
  <div class="ttc" id="namespaceSVF_html_ad781b0b14e89773e774072b280658ef3"><div class="ttname"><a href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">SVF::s64_t</a></div><div class="ttdeci">signed long long s64_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00053">SVFType.h:53</a></div></div>
6111
6140
  </div><!-- fragment -->
6112
6141
  </div>