svf-tools 1.0.905 → 1.0.907

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 (438) hide show
  1. package/SVF-doxygen/html/AbstractInterpretation_8cpp.html +217 -0
  2. package/SVF-doxygen/html/AbstractInterpretation_8cpp_source.html +2093 -0
  3. package/SVF-doxygen/html/AbstractInterpretation_8h.html +115 -0
  4. package/SVF-doxygen/html/AbstractInterpretation_8h_source.html +459 -0
  5. package/SVF-doxygen/html/AbstractState_8cpp.html +84 -0
  6. package/SVF-doxygen/html/AbstractState_8cpp_source.html +461 -0
  7. package/SVF-doxygen/html/AbstractState_8h.html +105 -0
  8. package/SVF-doxygen/html/AbstractState_8h_source.html +891 -0
  9. package/SVF-doxygen/html/AbstractValue_8h.html +3 -3
  10. package/SVF-doxygen/html/AbstractValue_8h_source.html +652 -62
  11. package/SVF-doxygen/html/AddressValue_8h.html +4 -4
  12. package/SVF-doxygen/html/AddressValue_8h_source.html +180 -177
  13. package/SVF-doxygen/html/BufOverflowChecker_8cpp_source.html +782 -776
  14. package/SVF-doxygen/html/BufOverflowChecker_8h.html +1 -1
  15. package/SVF-doxygen/html/BufOverflowChecker_8h_source.html +19 -19
  16. package/SVF-doxygen/html/CFLGraph_8h_source.html +3 -3
  17. package/SVF-doxygen/html/CSC_8h_source.html +1 -1
  18. package/SVF-doxygen/html/ConsExeState_8cpp_source.html +1 -1
  19. package/SVF-doxygen/html/ConsExeState_8h_source.html +2 -2
  20. package/SVF-doxygen/html/ExeState_8cpp.html +1 -1
  21. package/SVF-doxygen/html/ExeState_8cpp_source.html +2 -2
  22. package/SVF-doxygen/html/ExeState_8h_source.html +8 -8
  23. package/SVF-doxygen/html/ICFGSimplification_8h.html +2 -2
  24. package/SVF-doxygen/html/ICFGSimplification_8h_source.html +17 -18
  25. package/SVF-doxygen/html/ICFG_8h_source.html +1 -1
  26. package/SVF-doxygen/html/IntervalValue_8h.html +2 -2
  27. package/SVF-doxygen/html/IntervalValue_8h_source.html +846 -864
  28. package/SVF-doxygen/html/LLVMModule_8cpp_source.html +1 -1
  29. package/SVF-doxygen/html/MSSAMuChi_8h_source.html +1 -1
  30. package/SVF-doxygen/html/MemRegion_8cpp_source.html +1 -1
  31. package/SVF-doxygen/html/ObjTypeInference_8cpp_source.html +1 -1
  32. package/SVF-doxygen/html/PointsTo_8cpp_source.html +3 -3
  33. package/SVF-doxygen/html/PointsTo_8h_source.html +3 -3
  34. package/SVF-doxygen/html/RelExeState_8h_source.html +5 -5
  35. package/SVF-doxygen/html/RelationSolver_8cpp_source.html +67 -68
  36. package/SVF-doxygen/html/RelationSolver_8h.html +1 -1
  37. package/SVF-doxygen/html/RelationSolver_8h_source.html +17 -17
  38. package/SVF-doxygen/html/SVFIR2AbsState_8cpp.html +84 -0
  39. package/SVF-doxygen/html/SVFIR2AbsState_8cpp_source.html +1348 -0
  40. package/SVF-doxygen/html/SVFIR2AbsState_8h.html +100 -0
  41. package/SVF-doxygen/html/SVFIR2AbsState_8h_source.html +378 -0
  42. package/SVF-doxygen/html/SVFIR2ConsExeState_8cpp_source.html +9 -8
  43. package/SVF-doxygen/html/SVFIR2ItvExeState_8cpp_source.html +920 -952
  44. package/SVF-doxygen/html/SVFIR2ItvExeState_8h.html +2 -3
  45. package/SVF-doxygen/html/SVFIR2ItvExeState_8h_source.html +202 -207
  46. package/SVF-doxygen/html/SVFIR2Relation_8cpp.html +1 -1
  47. package/SVF-doxygen/html/SVFIR2Relation_8cpp_source.html +76 -72
  48. package/SVF-doxygen/html/SVFType_8cpp_source.html +1 -1
  49. package/SVF-doxygen/html/SVFType_8h_source.html +1 -1
  50. package/SVF-doxygen/html/SVFValue_8h_source.html +1 -1
  51. package/SVF-doxygen/html/SparseBitVector_8h_source.html +3 -3
  52. package/SVF-doxygen/html/WorkList_8h_source.html +1 -1
  53. package/SVF-doxygen/html/ae_8cpp.html +57 -57
  54. package/SVF-doxygen/html/ae_8cpp_source.html +462 -466
  55. package/SVF-doxygen/html/annotated.html +409 -418
  56. package/SVF-doxygen/html/classSVF_1_1AEStat-members.html +2 -2
  57. package/SVF-doxygen/html/classSVF_1_1AEStat.html +184 -190
  58. package/SVF-doxygen/html/classSVF_1_1AbstractInterpretation-members.html +161 -0
  59. package/SVF-doxygen/html/classSVF_1_1AbstractInterpretation.html +4325 -0
  60. package/SVF-doxygen/html/classSVF_1_1AbstractInterpretation.png +0 -0
  61. package/SVF-doxygen/html/classSVF_1_1AbstractState-members.html +134 -0
  62. package/SVF-doxygen/html/classSVF_1_1AbstractState.html +2166 -0
  63. package/SVF-doxygen/html/classSVF_1_1AbstractState.png +0 -0
  64. package/SVF-doxygen/html/classSVF_1_1AddressValue-members.html +15 -28
  65. package/SVF-doxygen/html/classSVF_1_1AddressValue.html +171 -230
  66. package/SVF-doxygen/html/classSVF_1_1BoundedZ3Expr.html +0 -1
  67. package/SVF-doxygen/html/classSVF_1_1BoundedZ3Expr.png +0 -0
  68. package/SVF-doxygen/html/classSVF_1_1BufOverflowChecker-members.html +73 -73
  69. package/SVF-doxygen/html/classSVF_1_1BufOverflowChecker.html +578 -574
  70. package/SVF-doxygen/html/classSVF_1_1BufOverflowChecker.png +0 -0
  71. package/SVF-doxygen/html/classSVF_1_1CFLNode-members.html +48 -49
  72. package/SVF-doxygen/html/classSVF_1_1CFLNode.html +25 -25
  73. package/SVF-doxygen/html/classSVF_1_1ConsExeState.html +1 -1
  74. package/SVF-doxygen/html/classSVF_1_1ExeState.html +12 -14
  75. package/SVF-doxygen/html/classSVF_1_1ExeState.png +0 -0
  76. package/SVF-doxygen/html/classSVF_1_1FILOWorkList.html +3 -3
  77. package/SVF-doxygen/html/classSVF_1_1GenericNode.html +22 -8
  78. package/SVF-doxygen/html/classSVF_1_1GenericNode.png +0 -0
  79. package/SVF-doxygen/html/classSVF_1_1ICFGSimplification.html +1 -1
  80. package/SVF-doxygen/html/classSVF_1_1IntervalValue-members.html +50 -64
  81. package/SVF-doxygen/html/classSVF_1_1IntervalValue.html +349 -459
  82. package/SVF-doxygen/html/classSVF_1_1LLVMModuleSet.html +1 -1
  83. package/SVF-doxygen/html/classSVF_1_1ObjTypeInference.html +1 -1
  84. package/SVF-doxygen/html/classSVF_1_1RelExeState-members.html +1 -1
  85. package/SVF-doxygen/html/classSVF_1_1RelExeState.html +8 -8
  86. package/SVF-doxygen/html/classSVF_1_1RelationSolver-members.html +8 -8
  87. package/SVF-doxygen/html/classSVF_1_1RelationSolver.html +106 -107
  88. package/SVF-doxygen/html/classSVF_1_1SVFIR2AbsState-members.html +141 -0
  89. package/SVF-doxygen/html/classSVF_1_1SVFIR2AbsState.html +3137 -0
  90. package/SVF-doxygen/html/classSVF_1_1SVFIR2ConsExeState.html +5 -5
  91. package/SVF-doxygen/html/classSVF_1_1SVFIR2ItvExeState-members.html +56 -57
  92. package/SVF-doxygen/html/classSVF_1_1SVFIR2ItvExeState.html +1128 -1178
  93. package/SVF-doxygen/html/classSVF_1_1SVFStat.html +1 -1
  94. package/SVF-doxygen/html/classSVF_1_1SparseAbstractState-members.html +157 -0
  95. package/SVF-doxygen/html/classSVF_1_1SparseAbstractState.html +1512 -0
  96. package/SVF-doxygen/html/classSVF_1_1SparseAbstractState.png +0 -0
  97. package/SVF-doxygen/html/classSVF_1_1Z3Expr.html +0 -1
  98. package/SVF-doxygen/html/classSVF_1_1Z3Expr.png +0 -0
  99. package/SVF-doxygen/html/classSymblicAbstractionTest-members.html +3 -3
  100. package/SVF-doxygen/html/classSymblicAbstractionTest.html +400 -404
  101. package/SVF-doxygen/html/classes.html +326 -336
  102. package/SVF-doxygen/html/dir_2c6fb801affc4b3efe6e1ed5974683f6.html +2 -10
  103. package/SVF-doxygen/html/dir_81caa96ab1d3de93b353e2bbe80e6067.html +2 -4
  104. package/SVF-doxygen/html/dir_9a8e7a56f4029a0d9f62b1c6d1f6e85b.html +2 -8
  105. package/SVF-doxygen/html/dir_fbec400583b4bd6c5f2e89c86c5943a6.html +2 -4
  106. package/SVF-doxygen/html/fastcluster__dm_8cpp_8inc_source.html +1 -1
  107. package/SVF-doxygen/html/files.html +18 -27
  108. package/SVF-doxygen/html/functions.html +33 -56
  109. package/SVF-doxygen/html/functions_a.html +29 -42
  110. package/SVF-doxygen/html/functions_b.html +14 -21
  111. package/SVF-doxygen/html/functions_c.html +42 -52
  112. package/SVF-doxygen/html/functions_d.html +7 -4
  113. package/SVF-doxygen/html/functions_e.html +7 -21
  114. package/SVF-doxygen/html/functions_enum.html +4 -7
  115. package/SVF-doxygen/html/functions_eval.html +2 -2
  116. package/SVF-doxygen/html/functions_eval_c.html +0 -3
  117. package/SVF-doxygen/html/functions_eval_i.html +2 -3
  118. package/SVF-doxygen/html/functions_eval_m.html +2 -2
  119. package/SVF-doxygen/html/functions_eval_s.html +2 -5
  120. package/SVF-doxygen/html/functions_eval_u.html +4 -1
  121. package/SVF-doxygen/html/functions_f.html +6 -6
  122. package/SVF-doxygen/html/functions_func.html +24 -31
  123. package/SVF-doxygen/html/functions_func_b.html +10 -16
  124. package/SVF-doxygen/html/functions_func_c.html +30 -39
  125. package/SVF-doxygen/html/functions_func_d.html +1 -1
  126. package/SVF-doxygen/html/functions_func_e.html +7 -17
  127. package/SVF-doxygen/html/functions_func_g.html +61 -115
  128. package/SVF-doxygen/html/functions_func_h.html +22 -24
  129. package/SVF-doxygen/html/functions_func_i.html +64 -94
  130. package/SVF-doxygen/html/functions_func_j.html +4 -6
  131. package/SVF-doxygen/html/functions_func_l.html +9 -23
  132. package/SVF-doxygen/html/functions_func_m.html +7 -8
  133. package/SVF-doxygen/html/functions_func_n.html +8 -13
  134. package/SVF-doxygen/html/functions_func_o.html +57 -48
  135. package/SVF-doxygen/html/functions_func_p.html +6 -11
  136. package/SVF-doxygen/html/functions_func_r.html +4 -4
  137. package/SVF-doxygen/html/functions_func_s.html +35 -50
  138. package/SVF-doxygen/html/functions_func_t.html +26 -40
  139. package/SVF-doxygen/html/functions_func_u.html +6 -5
  140. package/SVF-doxygen/html/functions_func_v.html +2 -9
  141. package/SVF-doxygen/html/functions_func_w.html +9 -8
  142. package/SVF-doxygen/html/functions_func_z.html +1 -2
  143. package/SVF-doxygen/html/functions_func_~.html +10 -22
  144. package/SVF-doxygen/html/functions_g.html +61 -118
  145. package/SVF-doxygen/html/functions_h.html +21 -23
  146. package/SVF-doxygen/html/functions_i.html +76 -106
  147. package/SVF-doxygen/html/functions_j.html +4 -6
  148. package/SVF-doxygen/html/functions_k.html +0 -6
  149. package/SVF-doxygen/html/functions_l.html +11 -25
  150. package/SVF-doxygen/html/functions_m.html +8 -9
  151. package/SVF-doxygen/html/functions_n.html +14 -17
  152. package/SVF-doxygen/html/functions_o.html +71 -90
  153. package/SVF-doxygen/html/functions_p.html +31 -30
  154. package/SVF-doxygen/html/functions_r.html +11 -15
  155. package/SVF-doxygen/html/functions_rela.html +2 -3
  156. package/SVF-doxygen/html/functions_rela_b.html +0 -1
  157. package/SVF-doxygen/html/functions_rela_e.html +0 -1
  158. package/SVF-doxygen/html/functions_rela_i.html +0 -2
  159. package/SVF-doxygen/html/functions_rela_l.html +0 -1
  160. package/SVF-doxygen/html/functions_rela_o.html +0 -18
  161. package/SVF-doxygen/html/functions_rela_r.html +2 -2
  162. package/SVF-doxygen/html/functions_rela_s.html +4 -9
  163. package/SVF-doxygen/html/functions_s.html +45 -70
  164. package/SVF-doxygen/html/functions_t.html +29 -45
  165. package/SVF-doxygen/html/functions_type.html +0 -5
  166. package/SVF-doxygen/html/functions_type_c.html +1 -1
  167. package/SVF-doxygen/html/functions_type_k.html +0 -6
  168. package/SVF-doxygen/html/functions_type_l.html +4 -3
  169. package/SVF-doxygen/html/functions_type_t.html +0 -3
  170. package/SVF-doxygen/html/functions_type_v.html +3 -5
  171. package/SVF-doxygen/html/functions_u.html +8 -4
  172. package/SVF-doxygen/html/functions_v.html +11 -20
  173. package/SVF-doxygen/html/functions_vars.html +33 -56
  174. package/SVF-doxygen/html/functions_vars_a.html +3 -0
  175. package/SVF-doxygen/html/functions_vars_g.html +2 -5
  176. package/SVF-doxygen/html/functions_vars_i.html +3 -0
  177. package/SVF-doxygen/html/functions_vars_t.html +1 -0
  178. package/SVF-doxygen/html/functions_w.html +11 -10
  179. package/SVF-doxygen/html/functions_z.html +1 -2
  180. package/SVF-doxygen/html/functions_~.html +10 -22
  181. package/SVF-doxygen/html/globals.html +2 -2
  182. package/SVF-doxygen/html/globals_defs.html +1 -4
  183. package/SVF-doxygen/html/globals_n.html +2 -5
  184. package/SVF-doxygen/html/globals_s.html +1 -1
  185. package/SVF-doxygen/html/globals_vars.html +5 -5
  186. package/SVF-doxygen/html/globals_z.html +3 -3
  187. package/SVF-doxygen/html/hierarchy.html +622 -631
  188. package/SVF-doxygen/html/namespaceSVF.html +449 -458
  189. package/SVF-doxygen/html/search/all_0.js +155 -161
  190. package/SVF-doxygen/html/search/all_1.js +502 -503
  191. package/SVF-doxygen/html/search/all_10.js +325 -326
  192. package/SVF-doxygen/html/search/all_11.js +227 -227
  193. package/SVF-doxygen/html/search/all_12.js +563 -574
  194. package/SVF-doxygen/html/search/all_13.js +206 -208
  195. package/SVF-doxygen/html/search/all_14.js +74 -73
  196. package/SVF-doxygen/html/search/all_15.js +175 -176
  197. package/SVF-doxygen/html/search/all_16.js +77 -77
  198. package/SVF-doxygen/html/search/all_17.js +1 -1
  199. package/SVF-doxygen/html/search/all_18.js +1 -1
  200. package/SVF-doxygen/html/search/all_19.js +27 -27
  201. package/SVF-doxygen/html/search/all_1a.js +175 -179
  202. package/SVF-doxygen/html/search/all_2.js +180 -182
  203. package/SVF-doxygen/html/search/all_3.js +636 -642
  204. package/SVF-doxygen/html/search/all_4.js +237 -236
  205. package/SVF-doxygen/html/search/all_5.js +120 -126
  206. package/SVF-doxygen/html/search/all_6.js +236 -236
  207. package/SVF-doxygen/html/search/all_7.js +1040 -1056
  208. package/SVF-doxygen/html/search/all_8.js +211 -215
  209. package/SVF-doxygen/html/search/all_9.js +631 -638
  210. package/SVF-doxygen/html/search/all_a.js +46 -46
  211. package/SVF-doxygen/html/search/all_b.js +24 -26
  212. package/SVF-doxygen/html/search/all_c.js +113 -115
  213. package/SVF-doxygen/html/search/all_d.js +205 -205
  214. package/SVF-doxygen/html/search/all_e.js +207 -209
  215. package/SVF-doxygen/html/search/all_f.js +122 -122
  216. package/SVF-doxygen/html/search/classes_0.js +29 -28
  217. package/SVF-doxygen/html/search/classes_1.js +11 -11
  218. package/SVF-doxygen/html/search/classes_10.js +72 -74
  219. package/SVF-doxygen/html/search/classes_11.js +14 -14
  220. package/SVF-doxygen/html/search/classes_12.js +2 -2
  221. package/SVF-doxygen/html/search/classes_13.js +10 -10
  222. package/SVF-doxygen/html/search/classes_14.js +19 -19
  223. package/SVF-doxygen/html/search/classes_15.js +1 -1
  224. package/SVF-doxygen/html/search/classes_2.js +72 -73
  225. package/SVF-doxygen/html/search/classes_3.js +35 -35
  226. package/SVF-doxygen/html/search/classes_4.js +7 -8
  227. package/SVF-doxygen/html/search/classes_5.js +28 -28
  228. package/SVF-doxygen/html/search/classes_6.js +98 -98
  229. package/SVF-doxygen/html/search/classes_7.js +34 -38
  230. package/SVF-doxygen/html/search/classes_8.js +57 -59
  231. package/SVF-doxygen/html/search/classes_9.js +1 -1
  232. package/SVF-doxygen/html/search/classes_a.js +12 -12
  233. package/SVF-doxygen/html/search/classes_b.js +29 -29
  234. package/SVF-doxygen/html/search/classes_c.js +6 -6
  235. package/SVF-doxygen/html/search/classes_d.js +19 -19
  236. package/SVF-doxygen/html/search/classes_e.js +36 -36
  237. package/SVF-doxygen/html/search/classes_f.js +25 -25
  238. package/SVF-doxygen/html/search/defines_0.js +3 -3
  239. package/SVF-doxygen/html/search/defines_1.js +3 -3
  240. package/SVF-doxygen/html/search/defines_10.js +2 -2
  241. package/SVF-doxygen/html/search/defines_2.js +30 -30
  242. package/SVF-doxygen/html/search/defines_3.js +20 -20
  243. package/SVF-doxygen/html/search/defines_4.js +3 -3
  244. package/SVF-doxygen/html/search/defines_5.js +4 -4
  245. package/SVF-doxygen/html/search/defines_6.js +2 -2
  246. package/SVF-doxygen/html/search/defines_7.js +5 -5
  247. package/SVF-doxygen/html/search/defines_8.js +11 -11
  248. package/SVF-doxygen/html/search/defines_9.js +9 -9
  249. package/SVF-doxygen/html/search/defines_a.js +2 -2
  250. package/SVF-doxygen/html/search/defines_b.js +1 -1
  251. package/SVF-doxygen/html/search/defines_c.js +3 -4
  252. package/SVF-doxygen/html/search/defines_d.js +2 -2
  253. package/SVF-doxygen/html/search/defines_e.js +8 -8
  254. package/SVF-doxygen/html/search/defines_f.js +4 -4
  255. package/SVF-doxygen/html/search/enums_0.js +3 -4
  256. package/SVF-doxygen/html/search/enums_1.js +2 -2
  257. package/SVF-doxygen/html/search/enums_10.js +1 -1
  258. package/SVF-doxygen/html/search/enums_11.js +1 -1
  259. package/SVF-doxygen/html/search/enums_2.js +9 -9
  260. package/SVF-doxygen/html/search/enums_3.js +2 -1
  261. package/SVF-doxygen/html/search/enums_4.js +3 -4
  262. package/SVF-doxygen/html/search/enums_5.js +1 -1
  263. package/SVF-doxygen/html/search/enums_6.js +2 -2
  264. package/SVF-doxygen/html/search/enums_7.js +2 -2
  265. package/SVF-doxygen/html/search/enums_8.js +4 -4
  266. package/SVF-doxygen/html/search/enums_9.js +1 -1
  267. package/SVF-doxygen/html/search/enums_a.js +1 -1
  268. package/SVF-doxygen/html/search/enums_b.js +7 -7
  269. package/SVF-doxygen/html/search/enums_c.js +1 -1
  270. package/SVF-doxygen/html/search/enums_d.js +4 -4
  271. package/SVF-doxygen/html/search/enums_e.js +2 -2
  272. package/SVF-doxygen/html/search/enums_f.js +4 -4
  273. package/SVF-doxygen/html/search/enumvalues_0.js +15 -15
  274. package/SVF-doxygen/html/search/enumvalues_1.js +16 -16
  275. package/SVF-doxygen/html/search/enumvalues_10.js +36 -36
  276. package/SVF-doxygen/html/search/enumvalues_11.js +6 -5
  277. package/SVF-doxygen/html/search/enumvalues_12.js +10 -10
  278. package/SVF-doxygen/html/search/enumvalues_13.js +1 -1
  279. package/SVF-doxygen/html/search/enumvalues_14.js +1 -1
  280. package/SVF-doxygen/html/search/enumvalues_15.js +4 -4
  281. package/SVF-doxygen/html/search/enumvalues_2.js +36 -37
  282. package/SVF-doxygen/html/search/enumvalues_3.js +13 -13
  283. package/SVF-doxygen/html/search/enumvalues_4.js +2 -2
  284. package/SVF-doxygen/html/search/enumvalues_5.js +50 -50
  285. package/SVF-doxygen/html/search/enumvalues_6.js +6 -6
  286. package/SVF-doxygen/html/search/enumvalues_7.js +8 -8
  287. package/SVF-doxygen/html/search/enumvalues_8.js +24 -24
  288. package/SVF-doxygen/html/search/enumvalues_9.js +6 -6
  289. package/SVF-doxygen/html/search/enumvalues_a.js +17 -17
  290. package/SVF-doxygen/html/search/enumvalues_b.js +11 -11
  291. package/SVF-doxygen/html/search/enumvalues_c.js +5 -5
  292. package/SVF-doxygen/html/search/enumvalues_d.js +19 -19
  293. package/SVF-doxygen/html/search/enumvalues_e.js +9 -9
  294. package/SVF-doxygen/html/search/enumvalues_f.js +48 -49
  295. package/SVF-doxygen/html/search/files_0.js +18 -16
  296. package/SVF-doxygen/html/search/files_1.js +9 -9
  297. package/SVF-doxygen/html/search/files_10.js +8 -8
  298. package/SVF-doxygen/html/search/files_11.js +8 -8
  299. package/SVF-doxygen/html/search/files_12.js +2 -2
  300. package/SVF-doxygen/html/search/files_2.js +51 -53
  301. package/SVF-doxygen/html/search/files_3.js +14 -14
  302. package/SVF-doxygen/html/search/files_4.js +3 -5
  303. package/SVF-doxygen/html/search/files_5.js +13 -13
  304. package/SVF-doxygen/html/search/files_6.js +10 -10
  305. package/SVF-doxygen/html/search/files_7.js +15 -17
  306. package/SVF-doxygen/html/search/files_8.js +13 -13
  307. package/SVF-doxygen/html/search/files_9.js +18 -18
  308. package/SVF-doxygen/html/search/files_a.js +3 -3
  309. package/SVF-doxygen/html/search/files_b.js +4 -4
  310. package/SVF-doxygen/html/search/files_c.js +20 -20
  311. package/SVF-doxygen/html/search/files_d.js +4 -4
  312. package/SVF-doxygen/html/search/files_e.js +57 -62
  313. package/SVF-doxygen/html/search/files_f.js +8 -8
  314. package/SVF-doxygen/html/search/functions_0.js +13 -13
  315. package/SVF-doxygen/html/search/functions_1.js +366 -368
  316. package/SVF-doxygen/html/search/functions_10.js +139 -140
  317. package/SVF-doxygen/html/search/functions_11.js +140 -140
  318. package/SVF-doxygen/html/search/functions_12.js +294 -299
  319. package/SVF-doxygen/html/search/functions_13.js +72 -73
  320. package/SVF-doxygen/html/search/functions_14.js +41 -41
  321. package/SVF-doxygen/html/search/functions_15.js +70 -72
  322. package/SVF-doxygen/html/search/functions_16.js +38 -38
  323. package/SVF-doxygen/html/search/functions_17.js +3 -3
  324. package/SVF-doxygen/html/search/functions_18.js +175 -179
  325. package/SVF-doxygen/html/search/functions_2.js +92 -94
  326. package/SVF-doxygen/html/search/functions_3.js +258 -261
  327. package/SVF-doxygen/html/search/functions_4.js +85 -85
  328. package/SVF-doxygen/html/search/functions_5.js +54 -57
  329. package/SVF-doxygen/html/search/functions_6.js +65 -65
  330. package/SVF-doxygen/html/search/functions_7.js +857 -872
  331. package/SVF-doxygen/html/search/functions_8.js +162 -162
  332. package/SVF-doxygen/html/search/functions_9.js +440 -446
  333. package/SVF-doxygen/html/search/functions_a.js +30 -30
  334. package/SVF-doxygen/html/search/functions_b.js +2 -2
  335. package/SVF-doxygen/html/search/functions_c.js +22 -25
  336. package/SVF-doxygen/html/search/functions_d.js +82 -82
  337. package/SVF-doxygen/html/search/functions_e.js +34 -36
  338. package/SVF-doxygen/html/search/functions_f.js +58 -58
  339. package/SVF-doxygen/html/search/namespaces_0.js +1 -1
  340. package/SVF-doxygen/html/search/namespaces_1.js +7 -7
  341. package/SVF-doxygen/html/search/related_0.js +4 -4
  342. package/SVF-doxygen/html/search/related_1.js +2 -2
  343. package/SVF-doxygen/html/search/related_2.js +2 -2
  344. package/SVF-doxygen/html/search/related_3.js +2 -2
  345. package/SVF-doxygen/html/search/related_4.js +2 -2
  346. package/SVF-doxygen/html/search/related_5.js +1 -1
  347. package/SVF-doxygen/html/search/related_6.js +2 -2
  348. package/SVF-doxygen/html/search/related_7.js +5 -5
  349. package/SVF-doxygen/html/search/related_8.js +2 -2
  350. package/SVF-doxygen/html/search/related_9.js +4 -4
  351. package/SVF-doxygen/html/search/related_a.js +19 -19
  352. package/SVF-doxygen/html/search/related_b.js +4 -4
  353. package/SVF-doxygen/html/search/related_c.js +2 -2
  354. package/SVF-doxygen/html/search/related_d.js +11 -12
  355. package/SVF-doxygen/html/search/related_e.js +2 -2
  356. package/SVF-doxygen/html/search/related_f.js +2 -2
  357. package/SVF-doxygen/html/search/typedefs_0.js +18 -19
  358. package/SVF-doxygen/html/search/typedefs_1.js +27 -27
  359. package/SVF-doxygen/html/search/typedefs_10.js +65 -65
  360. package/SVF-doxygen/html/search/typedefs_11.js +12 -13
  361. package/SVF-doxygen/html/search/typedefs_12.js +13 -13
  362. package/SVF-doxygen/html/search/typedefs_13.js +40 -40
  363. package/SVF-doxygen/html/search/typedefs_14.js +11 -11
  364. package/SVF-doxygen/html/search/typedefs_2.js +125 -125
  365. package/SVF-doxygen/html/search/typedefs_3.js +39 -39
  366. package/SVF-doxygen/html/search/typedefs_4.js +17 -17
  367. package/SVF-doxygen/html/search/typedefs_5.js +42 -42
  368. package/SVF-doxygen/html/search/typedefs_6.js +54 -54
  369. package/SVF-doxygen/html/search/typedefs_7.js +47 -47
  370. package/SVF-doxygen/html/search/typedefs_8.js +1 -1
  371. package/SVF-doxygen/html/search/typedefs_9.js +4 -6
  372. package/SVF-doxygen/html/search/typedefs_a.js +30 -29
  373. package/SVF-doxygen/html/search/typedefs_b.js +29 -29
  374. package/SVF-doxygen/html/search/typedefs_c.js +41 -41
  375. package/SVF-doxygen/html/search/typedefs_d.js +15 -15
  376. package/SVF-doxygen/html/search/typedefs_e.js +52 -52
  377. package/SVF-doxygen/html/search/typedefs_f.js +14 -14
  378. package/SVF-doxygen/html/search/variables_0.js +171 -177
  379. package/SVF-doxygen/html/search/variables_1.js +78 -77
  380. package/SVF-doxygen/html/search/variables_10.js +98 -98
  381. package/SVF-doxygen/html/search/variables_11.js +47 -47
  382. package/SVF-doxygen/html/search/variables_12.js +93 -93
  383. package/SVF-doxygen/html/search/variables_13.js +76 -76
  384. package/SVF-doxygen/html/search/variables_14.js +14 -14
  385. package/SVF-doxygen/html/search/variables_15.js +49 -49
  386. package/SVF-doxygen/html/search/variables_16.js +11 -11
  387. package/SVF-doxygen/html/search/variables_17.js +1 -1
  388. package/SVF-doxygen/html/search/variables_18.js +17 -17
  389. package/SVF-doxygen/html/search/variables_2.js +40 -40
  390. package/SVF-doxygen/html/search/variables_3.js +143 -143
  391. package/SVF-doxygen/html/search/variables_4.js +51 -51
  392. package/SVF-doxygen/html/search/variables_5.js +39 -39
  393. package/SVF-doxygen/html/search/variables_6.js +66 -66
  394. package/SVF-doxygen/html/search/variables_7.js +33 -34
  395. package/SVF-doxygen/html/search/variables_8.js +8 -8
  396. package/SVF-doxygen/html/search/variables_9.js +80 -79
  397. package/SVF-doxygen/html/search/variables_a.js +4 -4
  398. package/SVF-doxygen/html/search/variables_b.js +10 -10
  399. package/SVF-doxygen/html/search/variables_c.js +44 -44
  400. package/SVF-doxygen/html/search/variables_d.js +58 -58
  401. package/SVF-doxygen/html/search/variables_e.js +123 -123
  402. package/SVF-doxygen/html/search/variables_f.js +31 -31
  403. package/SVF-doxygen/html/structSVF_1_1AbstractValue-members.html +164 -0
  404. package/SVF-doxygen/html/structSVF_1_1AbstractValue.html +2820 -0
  405. package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1SparseAbstractState_01_4-members.html +84 -0
  406. package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1SparseAbstractState_01_4.html +130 -0
  407. package/SVF-doxygen/html/svf-ex_8cpp.html +25 -25
  408. package/SVF-doxygen/html/svf-ex_8cpp_source.html +26 -26
  409. package/package.json +1 -1
  410. package/svf/include/AE/Core/AbstractState.h +749 -0
  411. package/svf/include/AE/Core/AbstractValue.h +514 -39
  412. package/svf/include/AE/Core/AddressValue.h +32 -25
  413. package/svf/include/AE/Core/IntervalValue.h +10 -24
  414. package/svf/include/AE/Core/RelExeState.h +1 -1
  415. package/svf/include/AE/Core/RelationSolver.h +9 -9
  416. package/svf/include/AE/Svfexe/{AbstractExecution.h → AbstractInterpretation.h} +27 -26
  417. package/svf/include/AE/Svfexe/BufOverflowChecker.h +5 -5
  418. package/svf/include/AE/Svfexe/ICFGSimplification.h +1 -2
  419. package/svf/include/AE/Svfexe/{SVFIR2ItvExeState.h → SVFIR2AbsState.h} +30 -33
  420. package/svf/lib/AE/Core/AbstractState.cpp +357 -0
  421. package/svf/lib/AE/Core/RelationSolver.cpp +31 -31
  422. package/svf/lib/AE/Core/SVFIR2Relation.cpp +17 -16
  423. package/svf/lib/AE/Svfexe/{AbstractExecution.cpp → AbstractInterpretation.cpp} +166 -156
  424. package/svf/lib/AE/Svfexe/BufOverflowChecker.cpp +51 -47
  425. package/svf/lib/AE/Svfexe/{SVFIR2ItvExeState.cpp → SVFIR2AbsState.cpp} +211 -247
  426. package/svf-llvm/tools/AE/ae.cpp +105 -108
  427. package/svf-llvm/tools/Example/svf-ex.cpp +2 -2
  428. package/svf/include/AE/Core/ConsExeState.h +0 -453
  429. package/svf/include/AE/Core/ExeState.h +0 -304
  430. package/svf/include/AE/Core/IntervalExeState.h +0 -650
  431. package/svf/include/AE/Core/SingleAbsValue.h +0 -477
  432. package/svf/include/AE/Core/SymState.h +0 -221
  433. package/svf/include/AE/Svfexe/SVFIR2ConsExeState.h +0 -148
  434. package/svf/lib/AE/Core/ConsExeState.cpp +0 -603
  435. package/svf/lib/AE/Core/ExeState.cpp +0 -117
  436. package/svf/lib/AE/Core/IntervalExeState.cpp +0 -329
  437. package/svf/lib/AE/Core/SymState.cpp +0 -37
  438. package/svf/lib/AE/Svfexe/SVFIR2ConsExeState.cpp +0 -772
@@ -90,9 +90,12 @@ Namespaces</h2></td></tr>
90
90
  </table><table class="memberdecls">
91
91
  <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
92
92
  Classes</h2></td></tr>
93
- <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractExecution.html">AbstractExecution</a></td></tr>
93
+ <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html">AbstractInterpretation</a></td></tr>
94
+ <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classSVF_1_1AbstractInterpretation.html" title="AbstractInterpretation is same as Abstract Execution.">AbstractInterpretation</a> is same as Abstract Execution. <a href="classSVF_1_1AbstractInterpretation.html#details">More...</a><br /></td></tr>
94
95
  <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
95
- <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractValue.html">AbstractValue</a></td></tr>
96
+ <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractState.html">AbstractState</a></td></tr>
97
+ <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
98
+ <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structSVF_1_1AbstractValue.html">AbstractValue</a></td></tr>
96
99
  <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
97
100
  <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AccessPath.html">AccessPath</a></td></tr>
98
101
  <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -238,8 +241,6 @@ Classes</h2></td></tr>
238
241
  <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
239
242
  <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CondVar.html">CondVar</a></td></tr>
240
243
  <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
241
- <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ConsExeState.html">ConsExeState</a></td></tr>
242
- <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
243
244
  <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a></td></tr>
244
245
  <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
245
246
  <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ConstraintGraph.html">ConstraintGraph</a></td></tr>
@@ -335,8 +336,6 @@ Classes</h2></td></tr>
335
336
  <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
336
337
  <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1EntryCHI.html">EntryCHI</a></td></tr>
337
338
  <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
338
- <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ExeState.html">ExeState</a></td></tr>
339
- <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
340
339
  <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ExtAPI.html">ExtAPI</a></td></tr>
341
340
  <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
342
341
  <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList</a></td></tr>
@@ -541,10 +540,6 @@ Classes</h2></td></tr>
541
540
  <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
542
541
  <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1InterPHIVFGNode.html">InterPHIVFGNode</a></td></tr>
543
542
  <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
544
- <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1IntervalESBase.html">IntervalESBase</a></td></tr>
545
- <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
546
- <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1IntervalExeState.html">IntervalExeState</a></td></tr>
547
- <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
548
543
  <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1IntervalValue.html">IntervalValue</a></td></tr>
549
544
  <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
550
545
  <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1IntraCFGEdge.html">IntraCFGEdge</a></td></tr>
@@ -776,7 +771,7 @@ Classes</h2></td></tr>
776
771
  <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
777
772
  <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SelectStmt.html">SelectStmt</a></td></tr>
778
773
  <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
779
- <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SingleAbsValue.html">SingleAbsValue</a></td></tr>
774
+ <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SparseAbstractState.html">SparseAbstractState</a></td></tr>
780
775
  <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
781
776
  <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SparseBitVector.html">SparseBitVector</a></td></tr>
782
777
  <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -848,9 +843,7 @@ Classes</h2></td></tr>
848
843
  <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
849
844
  <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR.html">SVFIR</a></td></tr>
850
845
  <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
851
- <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2ConsExeState.html">SVFIR2ConsExeState</a></td></tr>
852
- <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
853
- <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2ItvExeState.html">SVFIR2ItvExeState</a></td></tr>
846
+ <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html">SVFIR2AbsState</a></td></tr>
854
847
  <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
855
848
  <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIRBuilder.html">SVFIRBuilder</a></td></tr>
856
849
  <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -896,8 +889,6 @@ Classes</h2></td></tr>
896
889
  <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
897
890
  <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SymbolTableInfoReader.html">SymbolTableInfoReader</a></td></tr>
898
891
  <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
899
- <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SymState.html">SymState</a></td></tr>
900
- <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
901
892
  <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1TCT.html">TCT</a></td></tr>
902
893
  <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
903
894
  <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1TCTEdge.html">TCTEdge</a></td></tr>
@@ -5322,11 +5313,11 @@ template&lt;typename Key , typename Hash = Hash&lt;Key&gt;, typename KeyEqual
5322
5313
  <tr><td class="fieldname"><a id="a41375daa7cc99317d0aa2a21dc643b88aa5aa2ddadb5f0392b52dcbe487fe0ecd"></a>BufOverflowChecker&#160;</td><td class="fielddoc"></td></tr>
5323
5314
  </table>
5324
5315
 
5325
- <p class="definition">Definition at line <a class="el" href="AbstractExecution_8h_source.html#l00046">46</a> of file <a class="el" href="AbstractExecution_8h_source.html">AbstractExecution.h</a>.</p>
5326
- <div class="fragment"><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;{</div>
5327
- <div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <a class="code" href="namespaceSVF.html#a41375daa7cc99317d0aa2a21dc643b88a53d18d0ea8b11173db3d2f60f838ffe1">AbstractExecution</a>,</div>
5328
- <div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <a class="code" href="namespaceSVF.html#a41375daa7cc99317d0aa2a21dc643b88aa5aa2ddadb5f0392b52dcbe487fe0ecd">BufOverflowChecker</a>,</div>
5329
- <div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;};</div>
5316
+ <p class="definition">Definition at line <a class="el" href="AbstractInterpretation_8h_source.html#l00044">44</a> of file <a class="el" href="AbstractInterpretation_8h_source.html">AbstractInterpretation.h</a>.</p>
5317
+ <div class="fragment"><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;{</div>
5318
+ <div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <a class="code" href="namespaceSVF.html#a41375daa7cc99317d0aa2a21dc643b88a53d18d0ea8b11173db3d2f60f838ffe1">AbstractExecution</a>,</div>
5319
+ <div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <a class="code" href="namespaceSVF.html#a41375daa7cc99317d0aa2a21dc643b88aa5aa2ddadb5f0392b52dcbe487fe0ecd">BufOverflowChecker</a>,</div>
5320
+ <div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;};</div>
5330
5321
  </div><!-- fragment -->
5331
5322
  </div>
5332
5323
  </div>
@@ -7133,43 +7124,43 @@ template&lt;class GraphType &gt; </div>
7133
7124
 
7134
7125
  <p>Divide IntervalValues. </p>
7135
7126
 
7136
- <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00593">593</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
7137
- <div class="fragment"><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160;{</div>
7138
- <div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div>
7139
- <div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; {</div>
7140
- <div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div>
7141
- <div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; }</div>
7142
- <div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (rhs.contains(0))</div>
7143
- <div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; {</div>
7144
- <div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <span class="keywordflow">return</span> lhs.is_zero() ? IntervalValue(0, 0) : IntervalValue::top();</div>
7145
- <div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; }</div>
7146
- <div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.is_numeral() &amp;&amp; rhs.is_numeral())</div>
7147
- <div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; {</div>
7148
- <div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; <span class="keywordflow">return</span> IntervalValue(lhs.lb() % rhs.lb(), lhs.lb() % rhs.lb());</div>
7149
- <div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; }</div>
7150
- <div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; <span class="keywordflow">else</span></div>
7151
- <div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; {</div>
7152
- <div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; NumericLiteral n_ub = max(abs(lhs.lb()), abs(lhs.ub()));</div>
7153
- <div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; NumericLiteral d_ub = max(abs(rhs.lb()), rhs.ub()) - 1;</div>
7154
- <div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; NumericLiteral ub = min(n_ub, d_ub);</div>
7155
- <div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; </div>
7156
- <div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; <span class="keywordflow">if</span> (lhs.lb().getNumeral() &lt; 0)</div>
7157
- <div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; {</div>
7158
- <div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; <span class="keywordflow">if</span> (lhs.ub().getNumeral() &gt; 0)</div>
7159
- <div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; {</div>
7160
- <div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <span class="keywordflow">return</span> IntervalValue(-ub, ub);</div>
7161
- <div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; }</div>
7162
- <div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <span class="keywordflow">else</span></div>
7163
- <div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; {</div>
7164
- <div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; <span class="keywordflow">return</span> IntervalValue(-ub, 0);</div>
7165
- <div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; }</div>
7166
- <div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; }</div>
7167
- <div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; <span class="keywordflow">else</span></div>
7168
- <div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; {</div>
7169
- <div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <span class="keywordflow">return</span> IntervalValue(0, ub);</div>
7170
- <div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; }</div>
7171
- <div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; }</div>
7172
- <div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160;}</div>
7127
+ <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00579">579</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
7128
+ <div class="fragment"><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160;{</div>
7129
+ <div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div>
7130
+ <div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; {</div>
7131
+ <div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div>
7132
+ <div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; }</div>
7133
+ <div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (rhs.contains(0))</div>
7134
+ <div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; {</div>
7135
+ <div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; <span class="keywordflow">return</span> lhs.is_zero() ? IntervalValue(0, 0) : IntervalValue::top();</div>
7136
+ <div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; }</div>
7137
+ <div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.is_numeral() &amp;&amp; rhs.is_numeral())</div>
7138
+ <div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; {</div>
7139
+ <div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <span class="keywordflow">return</span> IntervalValue(lhs.lb() % rhs.lb(), lhs.lb() % rhs.lb());</div>
7140
+ <div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; }</div>
7141
+ <div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <span class="keywordflow">else</span></div>
7142
+ <div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; {</div>
7143
+ <div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; NumericLiteral n_ub = max(abs(lhs.lb()), abs(lhs.ub()));</div>
7144
+ <div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; NumericLiteral d_ub = max(abs(rhs.lb()), rhs.ub()) - 1;</div>
7145
+ <div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; NumericLiteral ub = min(n_ub, d_ub);</div>
7146
+ <div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; </div>
7147
+ <div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <span class="keywordflow">if</span> (lhs.lb().getNumeral() &lt; 0)</div>
7148
+ <div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; {</div>
7149
+ <div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <span class="keywordflow">if</span> (lhs.ub().getNumeral() &gt; 0)</div>
7150
+ <div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; {</div>
7151
+ <div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; <span class="keywordflow">return</span> IntervalValue(-ub, ub);</div>
7152
+ <div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; }</div>
7153
+ <div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; <span class="keywordflow">else</span></div>
7154
+ <div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; {</div>
7155
+ <div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; <span class="keywordflow">return</span> IntervalValue(-ub, 0);</div>
7156
+ <div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; }</div>
7157
+ <div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; }</div>
7158
+ <div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <span class="keywordflow">else</span></div>
7159
+ <div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; {</div>
7160
+ <div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; <span class="keywordflow">return</span> IntervalValue(0, ub);</div>
7161
+ <div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; }</div>
7162
+ <div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; }</div>
7163
+ <div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160;}</div>
7173
7164
  </div><!-- fragment -->
7174
7165
  </div>
7175
7166
  </div>
@@ -7209,31 +7200,31 @@ template&lt;class GraphType &gt; </div>
7209
7200
 
7210
7201
  <p>Bitwise AND of IntervalValues. </p>
7211
7202
 
7212
- <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00893">893</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
7213
- <div class="fragment"><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160;{</div>
7214
- <div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div>
7215
- <div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div>
7216
- <div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.is_numeral() &amp;&amp; rhs.is_numeral())</div>
7217
- <div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; {</div>
7218
- <div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; <span class="keywordflow">return</span> IntervalValue(lhs.lb() &amp; rhs.lb());</div>
7219
- <div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; }</div>
7220
- <div class="line"><a name="l00901"></a><span class="lineno"> 901</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>
7221
- <div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; {</div>
7222
- <div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; <span class="keywordflow">return</span> IntervalValue((<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a>) 0, min(lhs.ub(), rhs.ub()));</div>
7223
- <div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; }</div>
7224
- <div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.lb().getNumeral() &gt;= 0)</div>
7225
- <div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; {</div>
7226
- <div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; <span class="keywordflow">return</span> IntervalValue((<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a>) 0, lhs.ub());</div>
7227
- <div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; }</div>
7228
- <div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (rhs.lb().getNumeral() &gt;= 0)</div>
7229
- <div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; {</div>
7230
- <div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; <span class="keywordflow">return</span> IntervalValue((<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a>) 0, rhs.ub());</div>
7231
- <div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; }</div>
7232
- <div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; <span class="keywordflow">else</span></div>
7233
- <div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; {</div>
7234
- <div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; <span class="keywordflow">return</span> IntervalValue::top();</div>
7235
- <div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; }</div>
7236
- <div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160;}</div>
7203
+ <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00879">879</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
7204
+ <div class="fragment"><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160;{</div>
7205
+ <div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div>
7206
+ <div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div>
7207
+ <div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.is_numeral() &amp;&amp; rhs.is_numeral())</div>
7208
+ <div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; {</div>
7209
+ <div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; <span class="keywordflow">return</span> IntervalValue(lhs.lb() &amp; rhs.lb());</div>
7210
+ <div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; }</div>
7211
+ <div class="line"><a name="l00887"></a><span class="lineno"> 887</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>
7212
+ <div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; {</div>
7213
+ <div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; <span class="keywordflow">return</span> IntervalValue((<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a>) 0, min(lhs.ub(), rhs.ub()));</div>
7214
+ <div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; }</div>
7215
+ <div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.lb().getNumeral() &gt;= 0)</div>
7216
+ <div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; {</div>
7217
+ <div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; <span class="keywordflow">return</span> IntervalValue((<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a>) 0, lhs.ub());</div>
7218
+ <div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; }</div>
7219
+ <div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (rhs.lb().getNumeral() &gt;= 0)</div>
7220
+ <div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; {</div>
7221
+ <div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; <span class="keywordflow">return</span> IntervalValue((<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a>) 0, rhs.ub());</div>
7222
+ <div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; }</div>
7223
+ <div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; <span class="keywordflow">else</span></div>
7224
+ <div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; {</div>
7225
+ <div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; <span class="keywordflow">return</span> IntervalValue::top();</div>
7226
+ <div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; }</div>
7227
+ <div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160;}</div>
7237
7228
  </div><!-- fragment -->
7238
7229
  </div>
7239
7230
  </div>
@@ -7442,23 +7433,23 @@ template&lt;unsigned ElementSize&gt; </div>
7442
7433
 
7443
7434
  <p>Multiply IntervalValues. </p>
7444
7435
 
7445
- <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00547">547</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
7446
- <div class="fragment"><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160;{</div>
7447
- <div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div>
7448
- <div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; {</div>
7449
- <div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div>
7450
- <div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; }</div>
7451
- <div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <span class="keywordflow">else</span></div>
7452
- <div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; {</div>
7453
- <div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; NumericLiteral ll = lhs.lb() * rhs.lb();</div>
7454
- <div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; NumericLiteral lu = lhs.lb() * rhs.ub();</div>
7455
- <div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; NumericLiteral ul = lhs.ub() * rhs.lb();</div>
7456
- <div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; NumericLiteral uu = lhs.ub() * rhs.ub();</div>
7457
- <div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; std::vector&lt;NumericLiteral&gt; vec{ll, lu, ul, uu};</div>
7458
- <div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <span class="keywordflow">return</span> IntervalValue(NumericLiteral::min(vec),</div>
7459
- <div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; NumericLiteral::max(vec));</div>
7460
- <div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; }</div>
7461
- <div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160;}</div>
7436
+ <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00533">533</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
7437
+ <div class="fragment"><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160;{</div>
7438
+ <div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div>
7439
+ <div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; {</div>
7440
+ <div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div>
7441
+ <div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; }</div>
7442
+ <div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; <span class="keywordflow">else</span></div>
7443
+ <div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; {</div>
7444
+ <div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; NumericLiteral ll = lhs.lb() * rhs.lb();</div>
7445
+ <div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; NumericLiteral lu = lhs.lb() * rhs.ub();</div>
7446
+ <div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; NumericLiteral ul = lhs.ub() * rhs.lb();</div>
7447
+ <div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; NumericLiteral uu = lhs.ub() * rhs.ub();</div>
7448
+ <div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; std::vector&lt;NumericLiteral&gt; vec{ll, lu, ul, uu};</div>
7449
+ <div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <span class="keywordflow">return</span> IntervalValue(NumericLiteral::min(vec),</div>
7450
+ <div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; NumericLiteral::max(vec));</div>
7451
+ <div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; }</div>
7452
+ <div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160;}</div>
7462
7453
  </div><!-- fragment -->
7463
7454
  </div>
7464
7455
  </div>
@@ -7498,21 +7489,21 @@ template&lt;unsigned ElementSize&gt; </div>
7498
7489
 
7499
7490
  <p>Add IntervalValues. </p>
7500
7491
 
7501
- <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00511">511</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
7502
- <div class="fragment"><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160;{</div>
7503
- <div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div>
7504
- <div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; {</div>
7505
- <div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div>
7506
- <div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; }</div>
7507
- <div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.isTop() || rhs.isTop())</div>
7508
- <div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; {</div>
7509
- <div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <span class="keywordflow">return</span> IntervalValue::top();</div>
7510
- <div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; }</div>
7511
- <div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <span class="keywordflow">else</span></div>
7512
- <div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; {</div>
7513
- <div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="keywordflow">return</span> IntervalValue(lhs.lb() + rhs.lb(), lhs.ub() + rhs.ub());</div>
7514
- <div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; }</div>
7515
- <div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160;}</div>
7492
+ <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00497">497</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
7493
+ <div class="fragment"><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160;{</div>
7494
+ <div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div>
7495
+ <div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; {</div>
7496
+ <div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div>
7497
+ <div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; }</div>
7498
+ <div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.isTop() || rhs.isTop())</div>
7499
+ <div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; {</div>
7500
+ <div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="keywordflow">return</span> IntervalValue::top();</div>
7501
+ <div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; }</div>
7502
+ <div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <span class="keywordflow">else</span></div>
7503
+ <div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; {</div>
7504
+ <div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; <span class="keywordflow">return</span> IntervalValue(lhs.lb() + rhs.lb(), lhs.ub() + rhs.ub());</div>
7505
+ <div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; }</div>
7506
+ <div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160;}</div>
7516
7507
  </div><!-- fragment -->
7517
7508
  </div>
7518
7509
  </div>
@@ -7552,21 +7543,21 @@ template&lt;unsigned ElementSize&gt; </div>
7552
7543
 
7553
7544
  <p>Subtract IntervalValues. </p>
7554
7545
 
7555
- <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00529">529</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
7556
- <div class="fragment"><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160;{</div>
7557
- <div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div>
7558
- <div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; {</div>
7559
- <div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div>
7560
- <div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; }</div>
7561
- <div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.isTop() || rhs.isTop())</div>
7562
- <div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; {</div>
7563
- <div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <span class="keywordflow">return</span> IntervalValue::top();</div>
7564
- <div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; }</div>
7565
- <div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; <span class="keywordflow">else</span></div>
7566
- <div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; {</div>
7567
- <div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <span class="keywordflow">return</span> IntervalValue(lhs.lb() - rhs.ub(), lhs.ub() - rhs.lb());</div>
7568
- <div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; }</div>
7569
- <div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160;}</div>
7546
+ <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00515">515</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
7547
+ <div class="fragment"><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160;{</div>
7548
+ <div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div>
7549
+ <div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; {</div>
7550
+ <div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div>
7551
+ <div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; }</div>
7552
+ <div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.isTop() || rhs.isTop())</div>
7553
+ <div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; {</div>
7554
+ <div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="keywordflow">return</span> IntervalValue::top();</div>
7555
+ <div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; }</div>
7556
+ <div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; <span class="keywordflow">else</span></div>
7557
+ <div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; {</div>
7558
+ <div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <span class="keywordflow">return</span> IntervalValue(lhs.lb() - rhs.ub(), lhs.ub() - rhs.lb());</div>
7559
+ <div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; }</div>
7560
+ <div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160;}</div>
7570
7561
  </div><!-- fragment -->
7571
7562
  </div>
7572
7563
  </div>
@@ -7689,29 +7680,29 @@ template&lt;unsigned ElementSize&gt; </div>
7689
7680
 
7690
7681
  <p>Divide IntervalValues. </p>
7691
7682
 
7692
- <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00567">567</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
7693
- <div class="fragment"><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160;{</div>
7694
- <div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div>
7695
- <div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; {</div>
7696
- <div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div>
7697
- <div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; }</div>
7698
- <div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (rhs.contains(0))</div>
7699
- <div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; {</div>
7700
- <div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; <span class="keywordflow">return</span> lhs.is_zero() ? IntervalValue(0, 0) : IntervalValue::top();</div>
7701
- <div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; }</div>
7702
- <div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; <span class="keywordflow">else</span></div>
7703
- <div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; {</div>
7704
- <div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="comment">// Neither the dividend nor the divisor contains 0</span></div>
7705
- <div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; NumericLiteral ll = lhs.lb() / rhs.lb();</div>
7706
- <div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; NumericLiteral lu = lhs.lb() / rhs.ub();</div>
7707
- <div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; NumericLiteral ul = lhs.ub() / rhs.lb();</div>
7708
- <div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; NumericLiteral uu = lhs.ub() / rhs.ub();</div>
7709
- <div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; std::vector&lt;NumericLiteral&gt; vec{ll, lu, ul, uu};</div>
7710
- <div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; </div>
7711
- <div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; <span class="keywordflow">return</span> IntervalValue(NumericLiteral::min(vec),</div>
7712
- <div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; NumericLiteral::max(vec));</div>
7713
- <div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; }</div>
7714
- <div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160;}</div>
7683
+ <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00553">553</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
7684
+ <div class="fragment"><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160;{</div>
7685
+ <div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div>
7686
+ <div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; {</div>
7687
+ <div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div>
7688
+ <div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; }</div>
7689
+ <div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (rhs.contains(0))</div>
7690
+ <div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; {</div>
7691
+ <div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <span class="keywordflow">return</span> lhs.is_zero() ? IntervalValue(0, 0) : IntervalValue::top();</div>
7692
+ <div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; }</div>
7693
+ <div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; <span class="keywordflow">else</span></div>
7694
+ <div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; {</div>
7695
+ <div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <span class="comment">// Neither the dividend nor the divisor contains 0</span></div>
7696
+ <div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; NumericLiteral ll = lhs.lb() / rhs.lb();</div>
7697
+ <div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; NumericLiteral lu = lhs.lb() / rhs.ub();</div>
7698
+ <div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; NumericLiteral ul = lhs.ub() / rhs.lb();</div>
7699
+ <div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; NumericLiteral uu = lhs.ub() / rhs.ub();</div>
7700
+ <div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; std::vector&lt;NumericLiteral&gt; vec{ll, lu, ul, uu};</div>
7701
+ <div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; </div>
7702
+ <div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <span class="keywordflow">return</span> IntervalValue(NumericLiteral::min(vec),</div>
7703
+ <div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; NumericLiteral::max(vec));</div>
7704
+ <div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; }</div>
7705
+ <div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160;}</div>
7715
7706
  </div><!-- fragment -->
7716
7707
  </div>
7717
7708
  </div>
@@ -7749,55 +7740,55 @@ template&lt;unsigned ElementSize&gt; </div>
7749
7740
  </table>
7750
7741
  </div><div class="memdoc">
7751
7742
 
7752
- <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00684">684</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
7753
- <div class="fragment"><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160;{</div>
7754
- <div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; <span class="comment">// If either lhs or rhs is bottom, the result is bottom</span></div>
7755
- <div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div>
7756
- <div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; {</div>
7757
- <div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div>
7758
- <div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; }</div>
7759
- <div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; <span class="comment">// If either lhs or rhs is top, the result is top</span></div>
7760
- <div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.isTop() || rhs.isTop())</div>
7761
- <div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; {</div>
7762
- <div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; <span class="keywordflow">return</span> IntervalValue::top();</div>
7763
- <div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; }</div>
7764
- <div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; <span class="keywordflow">else</span></div>
7765
- <div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; {</div>
7766
- <div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; <span class="comment">// If both lhs and rhs are numerals (lb = ub), directly compare their values</span></div>
7767
- <div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; <span class="keywordflow">if</span> (lhs.is_numeral() &amp;&amp; rhs.is_numeral())</div>
7768
- <div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; {</div>
7769
- <div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; <span class="comment">// It means lhs.lb() &lt; rhs.lb()? true: false</span></div>
7770
- <div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; <span class="keywordflow">return</span> lhs.lb().geq(rhs.lb()) ? IntervalValue(0, 0) : IntervalValue(1, 1);</div>
7771
- <div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; }</div>
7772
- <div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; <span class="keywordflow">else</span></div>
7773
- <div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; {</div>
7774
- <div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <span class="comment">// Return [1,1] means lhs is totally less than rhs</span></div>
7775
- <div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; <span class="comment">// When lhs.ub &lt; rhs.lb, e.g., lhs:[1, 2] rhs:[3, 4]</span></div>
7776
- <div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; <span class="comment">// lhs.ub(2) &lt; rhs.lb(3)</span></div>
7777
- <div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; <span class="comment">// It means lhs.ub() &lt; rhs.lb()</span></div>
7778
- <div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; <span class="keywordflow">if</span> (!lhs.ub().geq(rhs.lb()))</div>
7779
- <div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; {</div>
7780
- <div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; <span class="keywordflow">return</span> IntervalValue(1, 1);</div>
7781
- <div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; }</div>
7782
- <div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; <span class="comment">// Return [0,0] means lhs is totally impossible to be less than rhs</span></div>
7783
- <div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; <span class="comment">// i.e., lhs is totally greater than or equal to rhs</span></div>
7784
- <div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; <span class="comment">// When lhs.lb &gt;= rhs.ub, e.g., lhs:[4,5] rhs:[3,4]</span></div>
7785
- <div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; <span class="comment">// lhs.lb(4) &gt;= rhs.ub(4)</span></div>
7786
- <div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.lb().geq(rhs.ub()))</div>
7787
- <div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; {</div>
7788
- <div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; <span class="keywordflow">return</span> IntervalValue(0, 0);</div>
7789
- <div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; }</div>
7790
- <div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; <span class="comment">// For other cases, lhs can be less than rhs or not, depending on the values</span></div>
7791
- <div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; <span class="comment">// e.g., lhs: [2,4], rhs: [1,3],</span></div>
7792
- <div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; <span class="comment">// lhs can be less than rhs if lhs is 2, rhs is 3.</span></div>
7793
- <div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; <span class="comment">// lhs can also not be less than rhs if lhs is 4 and rhs is 1</span></div>
7794
- <div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; <span class="keywordflow">else</span></div>
7795
- <div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; {</div>
7796
- <div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; <span class="keywordflow">return</span> IntervalValue(0, 1);</div>
7797
- <div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; }</div>
7798
- <div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; }</div>
7799
- <div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; }</div>
7800
- <div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160;}</div>
7743
+ <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00670">670</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
7744
+ <div class="fragment"><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160;{</div>
7745
+ <div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; <span class="comment">// If either lhs or rhs is bottom, the result is bottom</span></div>
7746
+ <div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div>
7747
+ <div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; {</div>
7748
+ <div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div>
7749
+ <div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; }</div>
7750
+ <div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; <span class="comment">// If either lhs or rhs is top, the result is top</span></div>
7751
+ <div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.isTop() || rhs.isTop())</div>
7752
+ <div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; {</div>
7753
+ <div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; <span class="keywordflow">return</span> IntervalValue::top();</div>
7754
+ <div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; }</div>
7755
+ <div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; <span class="keywordflow">else</span></div>
7756
+ <div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; {</div>
7757
+ <div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; <span class="comment">// If both lhs and rhs are numerals (lb = ub), directly compare their values</span></div>
7758
+ <div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; <span class="keywordflow">if</span> (lhs.is_numeral() &amp;&amp; rhs.is_numeral())</div>
7759
+ <div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; {</div>
7760
+ <div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; <span class="comment">// It means lhs.lb() &lt; rhs.lb()? true: false</span></div>
7761
+ <div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; <span class="keywordflow">return</span> lhs.lb().geq(rhs.lb()) ? IntervalValue(0, 0) : IntervalValue(1, 1);</div>
7762
+ <div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; }</div>
7763
+ <div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; <span class="keywordflow">else</span></div>
7764
+ <div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; {</div>
7765
+ <div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; <span class="comment">// Return [1,1] means lhs is totally less than rhs</span></div>
7766
+ <div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; <span class="comment">// When lhs.ub &lt; rhs.lb, e.g., lhs:[1, 2] rhs:[3, 4]</span></div>
7767
+ <div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; <span class="comment">// lhs.ub(2) &lt; rhs.lb(3)</span></div>
7768
+ <div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; <span class="comment">// It means lhs.ub() &lt; rhs.lb()</span></div>
7769
+ <div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; <span class="keywordflow">if</span> (!lhs.ub().geq(rhs.lb()))</div>
7770
+ <div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; {</div>
7771
+ <div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; <span class="keywordflow">return</span> IntervalValue(1, 1);</div>
7772
+ <div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; }</div>
7773
+ <div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; <span class="comment">// Return [0,0] means lhs is totally impossible to be less than rhs</span></div>
7774
+ <div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; <span class="comment">// i.e., lhs is totally greater than or equal to rhs</span></div>
7775
+ <div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; <span class="comment">// When lhs.lb &gt;= rhs.ub, e.g., lhs:[4,5] rhs:[3,4]</span></div>
7776
+ <div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; <span class="comment">// lhs.lb(4) &gt;= rhs.ub(4)</span></div>
7777
+ <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().geq(rhs.ub()))</div>
7778
+ <div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; {</div>
7779
+ <div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <span class="keywordflow">return</span> IntervalValue(0, 0);</div>
7780
+ <div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; }</div>
7781
+ <div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; <span class="comment">// For other cases, lhs can be less than rhs or not, depending on the values</span></div>
7782
+ <div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; <span class="comment">// e.g., lhs: [2,4], rhs: [1,3],</span></div>
7783
+ <div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; <span class="comment">// lhs can be less than rhs if lhs is 2, rhs is 3.</span></div>
7784
+ <div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; <span class="comment">// lhs can also not be less than rhs if lhs is 4 and rhs is 1</span></div>
7785
+ <div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; <span class="keywordflow">else</span></div>
7786
+ <div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; {</div>
7787
+ <div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; <span class="keywordflow">return</span> IntervalValue(0, 1);</div>
7788
+ <div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; }</div>
7789
+ <div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; }</div>
7790
+ <div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; }</div>
7791
+ <div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160;}</div>
7801
7792
  </div><!-- fragment -->
7802
7793
  </div>
7803
7794
  </div>
@@ -7837,25 +7828,25 @@ template&lt;unsigned ElementSize&gt; </div>
7837
7828
 
7838
7829
  <p>Left binary shift of IntervalValues. </p>
7839
7830
 
7840
- <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00836">836</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
7841
- <div class="fragment"><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160;{</div>
7842
- <div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; <span class="comment">//TODO: implement &lt;&lt;</span></div>
7843
- <div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div>
7844
- <div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div>
7845
- <div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; <span class="keywordflow">if</span> (lhs.isTop() &amp;&amp; rhs.isTop())</div>
7846
- <div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; <span class="keywordflow">return</span> IntervalValue::top();</div>
7847
- <div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; <span class="keywordflow">else</span></div>
7848
- <div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; {</div>
7849
- <div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; IntervalValue shift = rhs;</div>
7850
- <div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; shift.meet_with(IntervalValue(0, IntervalValue::plus_infinity()));</div>
7851
- <div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; <span class="keywordflow">if</span> (shift.isBottom())</div>
7852
- <div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div>
7853
- <div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; IntervalValue coeff(1 &lt;&lt; (<a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a>) shift.lb().getNumeral(),</div>
7854
- <div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; shift.ub().is_infinity() ? IntervalValue::plus_infinity() : 1</div>
7855
- <div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; &lt;&lt; (<a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a>) shift.ub().getNumeral());</div>
7856
- <div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; <span class="keywordflow">return</span> lhs * coeff;</div>
7857
- <div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; }</div>
7858
- <div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160;}</div>
7831
+ <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00822">822</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
7832
+ <div class="fragment"><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160;{</div>
7833
+ <div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; <span class="comment">//TODO: implement &lt;&lt;</span></div>
7834
+ <div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div>
7835
+ <div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div>
7836
+ <div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; <span class="keywordflow">if</span> (lhs.isTop() &amp;&amp; rhs.isTop())</div>
7837
+ <div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; <span class="keywordflow">return</span> IntervalValue::top();</div>
7838
+ <div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; <span class="keywordflow">else</span></div>
7839
+ <div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; {</div>
7840
+ <div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; IntervalValue shift = rhs;</div>
7841
+ <div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; shift.meet_with(IntervalValue(0, IntervalValue::plus_infinity()));</div>
7842
+ <div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; <span class="keywordflow">if</span> (shift.isBottom())</div>
7843
+ <div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div>
7844
+ <div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; IntervalValue coeff(1 &lt;&lt; (<a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a>) shift.lb().getNumeral(),</div>
7845
+ <div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; shift.ub().is_infinity() ? IntervalValue::plus_infinity() : 1</div>
7846
+ <div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; &lt;&lt; (<a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a>) shift.ub().getNumeral());</div>
7847
+ <div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; <span class="keywordflow">return</span> lhs * coeff;</div>
7848
+ <div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; }</div>
7849
+ <div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160;}</div>
7859
7850
  </div><!-- fragment -->
7860
7851
  </div>
7861
7852
  </div>
@@ -7931,11 +7922,11 @@ template&lt;typename F , typename S &gt; </div>
7931
7922
 
7932
7923
  <p>Write an <a class="el" href="classSVF_1_1IntervalValue.html">IntervalValue</a> on a stream. </p>
7933
7924
 
7934
- <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00978">978</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
7935
- <div class="fragment"><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160;{</div>
7936
- <div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; IntervalValue.dump(o);</div>
7937
- <div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; <span class="keywordflow">return</span> o;</div>
7938
- <div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160;}</div>
7925
+ <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00964">964</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
7926
+ <div class="fragment"><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160;{</div>
7927
+ <div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; IntervalValue.dump(o);</div>
7928
+ <div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; <span class="keywordflow">return</span> o;</div>
7929
+ <div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160;}</div>
7939
7930
  </div><!-- fragment -->
7940
7931
  </div>
7941
7932
  </div>
@@ -8036,54 +8027,54 @@ template&lt;typename F , typename S &gt; </div>
8036
8027
  </table>
8037
8028
  </div><div class="memdoc">
8038
8029
 
8039
- <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00786">786</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
8040
- <div class="fragment"><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160;{</div>
8041
- <div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; <span class="comment">// If either lhs or rhs is bottom, the result is bottom</span></div>
8042
- <div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div>
8043
- <div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; {</div>
8044
- <div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div>
8045
- <div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; }</div>
8046
- <div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; <span class="comment">// If either lhs or rhs is top, the result is top</span></div>
8047
- <div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.isTop() || rhs.isTop())</div>
8048
- <div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; {</div>
8049
- <div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; <span class="keywordflow">return</span> IntervalValue::top();</div>
8050
- <div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; }</div>
8051
- <div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; <span class="keywordflow">else</span></div>
8052
- <div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; {</div>
8053
- <div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; <span class="comment">// If both lhs and rhs are numerals (lb = ub), directly compare their values</span></div>
8054
- <div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; <span class="keywordflow">if</span> (lhs.is_numeral() &amp;&amp; rhs.is_numeral())</div>
8055
- <div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; {</div>
8056
- <div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; <span class="keywordflow">return</span> lhs.lb().leq(rhs.lb()) ? IntervalValue(1, 1) : IntervalValue(0, 0);</div>
8057
- <div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; }</div>
8058
- <div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; <span class="keywordflow">else</span></div>
8059
- <div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; {</div>
8060
- <div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; <span class="comment">// Return [1,1] means lhs is totally less than or equal to rhs</span></div>
8061
- <div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; <span class="comment">// When lhs.ub &lt;= rhs.lb, e.g., lhs:[1, 2] rhs:[2, 3]</span></div>
8062
- <div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; <span class="comment">// lhs.ub(2) &lt;= rhs.lb(2)</span></div>
8063
- <div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; <span class="keywordflow">if</span> (lhs.ub().leq(rhs.lb()))</div>
8064
- <div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; {</div>
8065
- <div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; <span class="keywordflow">return</span> IntervalValue(1, 1);</div>
8066
- <div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; }</div>
8067
- <div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; <span class="comment">// Return [0,0] means lhs is totally impossible to be less than or equal to rhs</span></div>
8068
- <div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; <span class="comment">// i.e., lhs is totally greater than rhs</span></div>
8069
- <div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; <span class="comment">// When lhs.lb &gt; rhs.ub, e.g., lhs:[3, 4] rhs:[1, 2]</span></div>
8070
- <div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; <span class="comment">// lhs.lb(3) &gt; rhs.ub(2)</span></div>
8071
- <div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; <span class="comment">// It means lhs.lb() &gt; rhs.ub()</span></div>
8072
- <div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!lhs.lb().leq(rhs.ub()))</div>
8073
- <div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; {</div>
8074
- <div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; <span class="keywordflow">return</span> IntervalValue(0, 0);</div>
8075
- <div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; }</div>
8076
- <div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; <span class="comment">// For other cases, lhs can be less than or equal to rhs or not, depending on the values</span></div>
8077
- <div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; <span class="comment">// e.g., lhs: [2,4], rhs: [1,3],</span></div>
8078
- <div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; <span class="comment">// lhs can be less than or equal to rhs if lhs is 3, rhs is 3.</span></div>
8079
- <div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; <span class="comment">// lhs can also not be less than or equal to rhs if lhs is 3 and rhs is 2</span></div>
8080
- <div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; <span class="keywordflow">else</span></div>
8081
- <div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; {</div>
8082
- <div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; <span class="keywordflow">return</span> IntervalValue(0, 1);</div>
8083
- <div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; }</div>
8084
- <div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; }</div>
8085
- <div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; }</div>
8086
- <div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160;}</div>
8030
+ <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00772">772</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
8031
+ <div class="fragment"><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160;{</div>
8032
+ <div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; <span class="comment">// If either lhs or rhs is bottom, the result is bottom</span></div>
8033
+ <div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div>
8034
+ <div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; {</div>
8035
+ <div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div>
8036
+ <div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; }</div>
8037
+ <div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <span class="comment">// If either lhs or rhs is top, the result is top</span></div>
8038
+ <div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.isTop() || rhs.isTop())</div>
8039
+ <div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; {</div>
8040
+ <div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; <span class="keywordflow">return</span> IntervalValue::top();</div>
8041
+ <div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; }</div>
8042
+ <div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; <span class="keywordflow">else</span></div>
8043
+ <div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; {</div>
8044
+ <div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; <span class="comment">// If both lhs and rhs are numerals (lb = ub), directly compare their values</span></div>
8045
+ <div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; <span class="keywordflow">if</span> (lhs.is_numeral() &amp;&amp; rhs.is_numeral())</div>
8046
+ <div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; {</div>
8047
+ <div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; <span class="keywordflow">return</span> lhs.lb().leq(rhs.lb()) ? IntervalValue(1, 1) : IntervalValue(0, 0);</div>
8048
+ <div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; }</div>
8049
+ <div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; <span class="keywordflow">else</span></div>
8050
+ <div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; {</div>
8051
+ <div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; <span class="comment">// Return [1,1] means lhs is totally less than or equal to rhs</span></div>
8052
+ <div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; <span class="comment">// When lhs.ub &lt;= rhs.lb, e.g., lhs:[1, 2] rhs:[2, 3]</span></div>
8053
+ <div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; <span class="comment">// lhs.ub(2) &lt;= rhs.lb(2)</span></div>
8054
+ <div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; <span class="keywordflow">if</span> (lhs.ub().leq(rhs.lb()))</div>
8055
+ <div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; {</div>
8056
+ <div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; <span class="keywordflow">return</span> IntervalValue(1, 1);</div>
8057
+ <div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; }</div>
8058
+ <div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; <span class="comment">// Return [0,0] means lhs is totally impossible to be less than or equal to rhs</span></div>
8059
+ <div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; <span class="comment">// i.e., lhs is totally greater than rhs</span></div>
8060
+ <div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; <span class="comment">// When lhs.lb &gt; rhs.ub, e.g., lhs:[3, 4] rhs:[1, 2]</span></div>
8061
+ <div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; <span class="comment">// lhs.lb(3) &gt; rhs.ub(2)</span></div>
8062
+ <div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; <span class="comment">// It means lhs.lb() &gt; rhs.ub()</span></div>
8063
+ <div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!lhs.lb().leq(rhs.ub()))</div>
8064
+ <div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; {</div>
8065
+ <div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; <span class="keywordflow">return</span> IntervalValue(0, 0);</div>
8066
+ <div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; }</div>
8067
+ <div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; <span class="comment">// For other cases, lhs can be less than or equal to rhs or not, depending on the values</span></div>
8068
+ <div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; <span class="comment">// e.g., lhs: [2,4], rhs: [1,3],</span></div>
8069
+ <div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; <span class="comment">// lhs can be less than or equal to rhs if lhs is 3, rhs is 3.</span></div>
8070
+ <div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; <span class="comment">// lhs can also not be less than or equal to rhs if lhs is 3 and rhs is 2</span></div>
8071
+ <div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; <span class="keywordflow">else</span></div>
8072
+ <div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; {</div>
8073
+ <div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; <span class="keywordflow">return</span> IntervalValue(0, 1);</div>
8074
+ <div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; }</div>
8075
+ <div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; }</div>
8076
+ <div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; }</div>
8077
+ <div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160;}</div>
8087
8078
  </div><!-- fragment -->
8088
8079
  </div>
8089
8080
  </div>
@@ -8121,55 +8112,55 @@ template&lt;typename F , typename S &gt; </div>
8121
8112
  </table>
8122
8113
  </div><div class="memdoc">
8123
8114
 
8124
- <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00633">633</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
8125
- <div class="fragment"><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160;{</div>
8126
- <div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <span class="comment">// If either lhs or rhs is bottom, the result is bottom</span></div>
8127
- <div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div>
8128
- <div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; {</div>
8129
- <div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div>
8130
- <div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; }</div>
8131
- <div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <span class="comment">// If either lhs or rhs is top, the result is top</span></div>
8132
- <div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.isTop() || rhs.isTop())</div>
8133
- <div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; {</div>
8134
- <div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <span class="keywordflow">return</span> IntervalValue::top();</div>
8135
- <div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; }</div>
8136
- <div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <span class="keywordflow">else</span></div>
8137
- <div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; {</div>
8138
- <div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; <span class="comment">// If both lhs and rhs are numerals (lb = ub), directly compare their values</span></div>
8139
- <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>
8140
- <div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; {</div>
8141
- <div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; <span class="comment">// It means lhs.lb() &gt; rhs.lb()? true: false</span></div>
8142
- <div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; <span class="keywordflow">return</span> lhs.lb().leq(rhs.lb()) ? IntervalValue(0, 0) : IntervalValue(1, 1);</div>
8143
- <div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; }</div>
8144
- <div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <span class="keywordflow">else</span></div>
8145
- <div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; {</div>
8146
- <div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <span class="comment">// Return [1,1] means lhs is totally greater than rhs</span></div>
8147
- <div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; <span class="comment">// When lhs.lb &gt; rhs.ub, e.g., lhs:[3, 4] rhs:[1, 2]</span></div>
8148
- <div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <span class="comment">// lhs.lb(3) &gt; rhs.ub(2)</span></div>
8149
- <div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <span class="comment">// It means lhs.lb() &gt; rhs.ub()</span></div>
8150
- <div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <span class="keywordflow">if</span> (!lhs.lb().leq(rhs.ub()))</div>
8151
- <div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; {</div>
8152
- <div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="keywordflow">return</span> IntervalValue(1, 1);</div>
8153
- <div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; }</div>
8154
- <div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="comment">// Return [0,0] means lhs is totally impossible to be greater than rhs</span></div>
8155
- <div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; <span class="comment">// i.e., lhs is totally less than or equal to rhs</span></div>
8156
- <div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; <span class="comment">// When lhs.ub &lt;= rhs.lb, e.g., lhs:[3, 4] rhs:[4,5]</span></div>
8157
- <div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <span class="comment">// lhs.ub(4) &lt;= rhs.lb(4)</span></div>
8158
- <div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.ub().leq(rhs.lb()))</div>
8159
- <div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; {</div>
8160
- <div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; <span class="keywordflow">return</span> IntervalValue(0, 0);</div>
8161
- <div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; }</div>
8162
- <div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; <span class="comment">// For other cases, lhs can be greater than or not, depending on the values</span></div>
8163
- <div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; <span class="comment">// e.g., lhs: [2,4], rhs: [1,3],</span></div>
8164
- <div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; <span class="comment">// lhs can be greater than rhs if lhs is 4 and rhs is 1.</span></div>
8165
- <div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; <span class="comment">// lhs can also not be greater than rhs if lhs is 2 and rhs is 3</span></div>
8166
- <div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <span class="keywordflow">else</span></div>
8167
- <div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; {</div>
8168
- <div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; <span class="keywordflow">return</span> IntervalValue(0, 1);</div>
8169
- <div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; }</div>
8170
- <div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; }</div>
8171
- <div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; }</div>
8172
- <div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160;}</div>
8115
+ <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00619">619</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
8116
+ <div class="fragment"><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160;{</div>
8117
+ <div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <span class="comment">// If either lhs or rhs is bottom, the result is bottom</span></div>
8118
+ <div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div>
8119
+ <div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; {</div>
8120
+ <div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div>
8121
+ <div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; }</div>
8122
+ <div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; <span class="comment">// If either lhs or rhs is top, the result is top</span></div>
8123
+ <div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.isTop() || rhs.isTop())</div>
8124
+ <div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; {</div>
8125
+ <div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <span class="keywordflow">return</span> IntervalValue::top();</div>
8126
+ <div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; }</div>
8127
+ <div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; <span class="keywordflow">else</span></div>
8128
+ <div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; {</div>
8129
+ <div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <span class="comment">// If both lhs and rhs are numerals (lb = ub), directly compare their values</span></div>
8130
+ <div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; <span class="keywordflow">if</span> (lhs.is_numeral() &amp;&amp; rhs.is_numeral())</div>
8131
+ <div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; {</div>
8132
+ <div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <span class="comment">// It means lhs.lb() &gt; rhs.lb()? true: false</span></div>
8133
+ <div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; <span class="keywordflow">return</span> lhs.lb().leq(rhs.lb()) ? IntervalValue(0, 0) : IntervalValue(1, 1);</div>
8134
+ <div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; }</div>
8135
+ <div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; <span class="keywordflow">else</span></div>
8136
+ <div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; {</div>
8137
+ <div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; <span class="comment">// Return [1,1] means lhs is totally greater than rhs</span></div>
8138
+ <div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <span class="comment">// When lhs.lb &gt; rhs.ub, e.g., lhs:[3, 4] rhs:[1, 2]</span></div>
8139
+ <div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <span class="comment">// lhs.lb(3) &gt; rhs.ub(2)</span></div>
8140
+ <div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <span class="comment">// It means lhs.lb() &gt; rhs.ub()</span></div>
8141
+ <div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <span class="keywordflow">if</span> (!lhs.lb().leq(rhs.ub()))</div>
8142
+ <div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; {</div>
8143
+ <div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; <span class="keywordflow">return</span> IntervalValue(1, 1);</div>
8144
+ <div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; }</div>
8145
+ <div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; <span class="comment">// Return [0,0] means lhs is totally impossible to be greater than rhs</span></div>
8146
+ <div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; <span class="comment">// i.e., lhs is totally less than or equal to rhs</span></div>
8147
+ <div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; <span class="comment">// When lhs.ub &lt;= rhs.lb, e.g., lhs:[3, 4] rhs:[4,5]</span></div>
8148
+ <div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; <span class="comment">// lhs.ub(4) &lt;= rhs.lb(4)</span></div>
8149
+ <div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.ub().leq(rhs.lb()))</div>
8150
+ <div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; {</div>
8151
+ <div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <span class="keywordflow">return</span> IntervalValue(0, 0);</div>
8152
+ <div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; }</div>
8153
+ <div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <span class="comment">// For other cases, lhs can be greater than or not, depending on the values</span></div>
8154
+ <div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <span class="comment">// e.g., lhs: [2,4], rhs: [1,3],</span></div>
8155
+ <div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <span class="comment">// lhs can be greater than rhs if lhs is 4 and rhs is 1.</span></div>
8156
+ <div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; <span class="comment">// lhs can also not be greater than rhs if lhs is 2 and rhs is 3</span></div>
8157
+ <div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="keywordflow">else</span></div>
8158
+ <div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; {</div>
8159
+ <div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="keywordflow">return</span> IntervalValue(0, 1);</div>
8160
+ <div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; }</div>
8161
+ <div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; }</div>
8162
+ <div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; }</div>
8163
+ <div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160;}</div>
8173
8164
  </div><!-- fragment -->
8174
8165
  </div>
8175
8166
  </div>
@@ -8207,54 +8198,54 @@ template&lt;typename F , typename S &gt; </div>
8207
8198
  </table>
8208
8199
  </div><div class="memdoc">
8209
8200
 
8210
- <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00736">736</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
8211
- <div class="fragment"><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160;{</div>
8212
- <div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; <span class="comment">// If either lhs or rhs is bottom, the result is bottom</span></div>
8213
- <div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div>
8214
- <div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; {</div>
8215
- <div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div>
8216
- <div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; }</div>
8217
- <div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; <span class="comment">// If either lhs or rhs is top, the result is top</span></div>
8218
- <div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.isTop() || rhs.isTop())</div>
8219
- <div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; {</div>
8220
- <div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; <span class="keywordflow">return</span> IntervalValue::top();</div>
8221
- <div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; }</div>
8222
- <div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; <span class="keywordflow">else</span></div>
8223
- <div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; {</div>
8224
- <div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; <span class="comment">// If both lhs and rhs are numerals (lb = ub), directly compare their values</span></div>
8225
- <div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; <span class="keywordflow">if</span> (lhs.is_numeral() &amp;&amp; rhs.is_numeral())</div>
8226
- <div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; {</div>
8227
- <div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; <span class="keywordflow">return</span> lhs.lb().geq(rhs.lb()) ? IntervalValue(1, 1) : IntervalValue(0, 0);</div>
8228
- <div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; }</div>
8229
- <div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; <span class="keywordflow">else</span></div>
8230
- <div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; {</div>
8231
- <div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; <span class="comment">// Return [1,1] means lhs is totally greater than or equal to rhs</span></div>
8232
- <div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; <span class="comment">// When lhs.lb &gt;= rhs.ub, e.g., lhs:[2, 3] rhs:[1, 2]</span></div>
8233
- <div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; <span class="comment">// lhs.lb(2) &gt;= rhs.ub(2)</span></div>
8234
- <div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; <span class="keywordflow">if</span> (lhs.lb().geq(rhs.ub()))</div>
8235
- <div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; {</div>
8236
- <div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; <span class="keywordflow">return</span> IntervalValue(1, 1);</div>
8237
- <div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; }</div>
8238
- <div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; <span class="comment">// Return [0,0] means lhs is totally impossible to be greater than or equal to rhs</span></div>
8239
- <div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; <span class="comment">// i.e., lhs is totally less than rhs</span></div>
8240
- <div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; <span class="comment">// When lhs.ub &lt; rhs.lb, e.g., lhs:[1, 2] rhs:[3, 4]</span></div>
8241
- <div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; <span class="comment">// lhs.ub(2) &lt; rhs.lb(3)</span></div>
8242
- <div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; <span class="comment">// It means lhs.ub() &lt; rhs.lb()</span></div>
8243
- <div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!lhs.ub().geq(rhs.lb()))</div>
8244
- <div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; {</div>
8245
- <div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; <span class="keywordflow">return</span> IntervalValue(0, 0);</div>
8246
- <div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; }</div>
8247
- <div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; <span class="comment">// For other cases, lhs can be greater than or equal to rhs or not, depending on the values</span></div>
8248
- <div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; <span class="comment">// e.g., lhs: [2,4], rhs: [1,3],</span></div>
8249
- <div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; <span class="comment">// lhs can be greater than or equal to rhs if lhs is 3, rhs is 2.</span></div>
8250
- <div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; <span class="comment">// lhs can also not be greater than or equal to rhs if lhs is 2 and rhs is 3</span></div>
8251
- <div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; <span class="keywordflow">else</span></div>
8252
- <div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; {</div>
8253
- <div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <span class="keywordflow">return</span> IntervalValue(0, 1);</div>
8254
- <div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; }</div>
8255
- <div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; }</div>
8256
- <div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; }</div>
8257
- <div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160;}</div>
8201
+ <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00722">722</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
8202
+ <div class="fragment"><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160;{</div>
8203
+ <div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; <span class="comment">// If either lhs or rhs is bottom, the result is bottom</span></div>
8204
+ <div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div>
8205
+ <div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; {</div>
8206
+ <div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div>
8207
+ <div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; }</div>
8208
+ <div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; <span class="comment">// If either lhs or rhs is top, the result is top</span></div>
8209
+ <div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.isTop() || rhs.isTop())</div>
8210
+ <div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; {</div>
8211
+ <div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; <span class="keywordflow">return</span> IntervalValue::top();</div>
8212
+ <div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; }</div>
8213
+ <div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; <span class="keywordflow">else</span></div>
8214
+ <div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; {</div>
8215
+ <div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; <span class="comment">// If both lhs and rhs are numerals (lb = ub), directly compare their values</span></div>
8216
+ <div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; <span class="keywordflow">if</span> (lhs.is_numeral() &amp;&amp; rhs.is_numeral())</div>
8217
+ <div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; {</div>
8218
+ <div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; <span class="keywordflow">return</span> lhs.lb().geq(rhs.lb()) ? IntervalValue(1, 1) : IntervalValue(0, 0);</div>
8219
+ <div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; }</div>
8220
+ <div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; <span class="keywordflow">else</span></div>
8221
+ <div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; {</div>
8222
+ <div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; <span class="comment">// Return [1,1] means lhs is totally greater than or equal to rhs</span></div>
8223
+ <div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; <span class="comment">// When lhs.lb &gt;= rhs.ub, e.g., lhs:[2, 3] rhs:[1, 2]</span></div>
8224
+ <div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; <span class="comment">// lhs.lb(2) &gt;= rhs.ub(2)</span></div>
8225
+ <div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; <span class="keywordflow">if</span> (lhs.lb().geq(rhs.ub()))</div>
8226
+ <div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; {</div>
8227
+ <div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; <span class="keywordflow">return</span> IntervalValue(1, 1);</div>
8228
+ <div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; }</div>
8229
+ <div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; <span class="comment">// Return [0,0] means lhs is totally impossible to be greater than or equal to rhs</span></div>
8230
+ <div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; <span class="comment">// i.e., lhs is totally less than rhs</span></div>
8231
+ <div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; <span class="comment">// When lhs.ub &lt; rhs.lb, e.g., lhs:[1, 2] rhs:[3, 4]</span></div>
8232
+ <div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; <span class="comment">// lhs.ub(2) &lt; rhs.lb(3)</span></div>
8233
+ <div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; <span class="comment">// It means lhs.ub() &lt; rhs.lb()</span></div>
8234
+ <div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!lhs.ub().geq(rhs.lb()))</div>
8235
+ <div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; {</div>
8236
+ <div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; <span class="keywordflow">return</span> IntervalValue(0, 0);</div>
8237
+ <div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; }</div>
8238
+ <div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; <span class="comment">// For other cases, lhs can be greater than or equal to rhs or not, depending on the values</span></div>
8239
+ <div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; <span class="comment">// e.g., lhs: [2,4], rhs: [1,3],</span></div>
8240
+ <div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; <span class="comment">// lhs can be greater than or equal to rhs if lhs is 3, rhs is 2.</span></div>
8241
+ <div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; <span class="comment">// lhs can also not be greater than or equal to rhs if lhs is 2 and rhs is 3</span></div>
8242
+ <div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; <span class="keywordflow">else</span></div>
8243
+ <div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; {</div>
8244
+ <div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; <span class="keywordflow">return</span> IntervalValue(0, 1);</div>
8245
+ <div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; }</div>
8246
+ <div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; }</div>
8247
+ <div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; }</div>
8248
+ <div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160;}</div>
8258
8249
  </div><!-- fragment -->
8259
8250
  </div>
8260
8251
  </div>
@@ -8294,40 +8285,40 @@ template&lt;typename F , typename S &gt; </div>
8294
8285
 
8295
8286
  <p>Left binary shift of IntervalValues. </p>
8296
8287
 
8297
- <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00857">857</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
8298
- <div class="fragment"><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160;{</div>
8299
- <div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; <span class="comment">//TODO: implement &gt;&gt;</span></div>
8300
- <div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div>
8301
- <div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div>
8302
- <div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.isTop() &amp;&amp; rhs.isTop())</div>
8303
- <div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; <span class="keywordflow">return</span> IntervalValue::top();</div>
8304
- <div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; <span class="keywordflow">else</span></div>
8305
- <div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; {</div>
8306
- <div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; IntervalValue shift = rhs;</div>
8307
- <div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; shift.meet_with(IntervalValue(0, IntervalValue::plus_infinity()));</div>
8308
- <div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160; <span class="keywordflow">if</span> (shift.isBottom())</div>
8309
- <div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div>
8310
- <div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; <span class="keywordflow">if</span> (lhs.contains(0))</div>
8311
- <div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; {</div>
8312
- <div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; IntervalValue l(lhs.lb(), -1);</div>
8313
- <div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; IntervalValue u(1, lhs.ub());</div>
8314
- <div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; IntervalValue tmp = l &gt;&gt; rhs;</div>
8315
- <div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; tmp.join_with(u &gt;&gt; rhs);</div>
8316
- <div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; tmp.join_with(IntervalValue(0));</div>
8317
- <div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; <span class="keywordflow">return</span> tmp;</div>
8318
- <div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; }</div>
8319
- <div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; <span class="keywordflow">else</span></div>
8320
- <div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; {</div>
8321
- <div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; NumericLiteral ll = lhs.lb() &gt;&gt; shift.lb();</div>
8322
- <div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; NumericLiteral lu = lhs.lb() &gt;&gt; shift.ub();</div>
8323
- <div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; NumericLiteral ul = lhs.ub() &gt;&gt; shift.lb();</div>
8324
- <div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; NumericLiteral uu = lhs.ub() &gt;&gt; shift.ub();</div>
8325
- <div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; std::vector&lt;NumericLiteral&gt; vec{ll, lu, ul, uu};</div>
8326
- <div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; <span class="keywordflow">return</span> IntervalValue(NumericLiteral::min(vec),</div>
8327
- <div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; NumericLiteral::max(vec));</div>
8328
- <div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; }</div>
8329
- <div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; }</div>
8330
- <div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160;}</div>
8288
+ <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00843">843</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
8289
+ <div class="fragment"><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160;{</div>
8290
+ <div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; <span class="comment">//TODO: implement &gt;&gt;</span></div>
8291
+ <div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div>
8292
+ <div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div>
8293
+ <div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.isTop() &amp;&amp; rhs.isTop())</div>
8294
+ <div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; <span class="keywordflow">return</span> IntervalValue::top();</div>
8295
+ <div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; <span class="keywordflow">else</span></div>
8296
+ <div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; {</div>
8297
+ <div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; IntervalValue shift = rhs;</div>
8298
+ <div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; shift.meet_with(IntervalValue(0, IntervalValue::plus_infinity()));</div>
8299
+ <div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; <span class="keywordflow">if</span> (shift.isBottom())</div>
8300
+ <div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div>
8301
+ <div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; <span class="keywordflow">if</span> (lhs.contains(0))</div>
8302
+ <div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; {</div>
8303
+ <div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; IntervalValue l(lhs.lb(), -1);</div>
8304
+ <div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; IntervalValue u(1, lhs.ub());</div>
8305
+ <div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; IntervalValue tmp = l &gt;&gt; rhs;</div>
8306
+ <div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; tmp.join_with(u &gt;&gt; rhs);</div>
8307
+ <div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; tmp.join_with(IntervalValue(0));</div>
8308
+ <div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; <span class="keywordflow">return</span> tmp;</div>
8309
+ <div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; }</div>
8310
+ <div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; <span class="keywordflow">else</span></div>
8311
+ <div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; {</div>
8312
+ <div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; NumericLiteral ll = lhs.lb() &gt;&gt; shift.lb();</div>
8313
+ <div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160; NumericLiteral lu = lhs.lb() &gt;&gt; shift.ub();</div>
8314
+ <div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; NumericLiteral ul = lhs.ub() &gt;&gt; shift.lb();</div>
8315
+ <div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; NumericLiteral uu = lhs.ub() &gt;&gt; shift.ub();</div>
8316
+ <div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; std::vector&lt;NumericLiteral&gt; vec{ll, lu, ul, uu};</div>
8317
+ <div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; <span class="keywordflow">return</span> IntervalValue(NumericLiteral::min(vec),</div>
8318
+ <div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; NumericLiteral::max(vec));</div>
8319
+ <div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; }</div>
8320
+ <div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; }</div>
8321
+ <div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160;}</div>
8331
8322
  </div><!-- fragment -->
8332
8323
  </div>
8333
8324
  </div>
@@ -8367,33 +8358,33 @@ template&lt;typename F , typename S &gt; </div>
8367
8358
 
8368
8359
  <p>Bitwise XOR of IntervalValues. </p>
8369
8360
 
8370
- <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00949">949</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
8371
- <div class="fragment"><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160;{</div>
8372
- <div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; <span class="keyword">auto</span> next_power_of_2 = [](<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> num)</div>
8361
+ <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00935">935</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
8362
+ <div class="fragment"><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160;{</div>
8363
+ <div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; <span class="keyword">auto</span> next_power_of_2 = [](<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> num)</div>
8364
+ <div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; {</div>
8365
+ <div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; <span class="keywordtype">int</span> i = 1;</div>
8366
+ <div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; <span class="keywordflow">while</span> ((num &gt;&gt; i) != 0)</div>
8367
+ <div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; {</div>
8368
+ <div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; ++i;</div>
8369
+ <div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; }</div>
8370
+ <div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; <span class="keywordflow">return</span> 1 &lt;&lt; i;</div>
8371
+ <div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; };</div>
8372
+ <div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div>
8373
+ <div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div>
8374
+ <div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.is_numeral() &amp;&amp; rhs.is_numeral())</div>
8375
+ <div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; <span class="keywordflow">return</span> IntervalValue(lhs.lb() ^ rhs.lb());</div>
8376
+ <div class="line"><a name="l00950"></a><span class="lineno"> 950</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>
8377
+ <div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; rhs.lb().getNumeral() &gt;= 0 &amp;&amp; !rhs.ub().is_infinity())</div>
8373
8378
  <div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; {</div>
8374
- <div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; <span class="keywordtype">int</span> i = 1;</div>
8375
- <div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; <span class="keywordflow">while</span> ((num &gt;&gt; i) != 0)</div>
8376
- <div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; {</div>
8377
- <div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; ++i;</div>
8378
- <div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; }</div>
8379
- <div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; <span class="keywordflow">return</span> 1 &lt;&lt; i;</div>
8380
- <div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; };</div>
8381
- <div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div>
8382
- <div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div>
8383
- <div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.is_numeral() &amp;&amp; rhs.is_numeral())</div>
8384
- <div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; <span class="keywordflow">return</span> IntervalValue(lhs.lb() ^ rhs.lb());</div>
8385
- <div class="line"><a name="l00964"></a><span class="lineno"> 964</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>
8386
- <div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; rhs.lb().getNumeral() &gt;= 0 &amp;&amp; !rhs.ub().is_infinity())</div>
8387
- <div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; {</div>
8388
- <div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> m = std::max(lhs.ub().getNumeral(), rhs.ub().getNumeral());</div>
8389
- <div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> ub = next_power_of_2(<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a>(m+1));</div>
8390
- <div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; <span class="keywordflow">return</span> IntervalValue((<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a>) 0, (<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a>) ub);</div>
8391
- <div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; }</div>
8392
- <div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; <span class="keywordflow">else</span></div>
8393
- <div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160; {</div>
8394
- <div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160; <span class="keywordflow">return</span> IntervalValue::top();</div>
8395
- <div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160; }</div>
8396
- <div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160;}</div>
8379
+ <div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> m = std::max(lhs.ub().getNumeral(), rhs.ub().getNumeral());</div>
8380
+ <div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> ub = next_power_of_2(<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a>(m+1));</div>
8381
+ <div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; <span class="keywordflow">return</span> IntervalValue((<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a>) 0, (<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a>) ub);</div>
8382
+ <div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; }</div>
8383
+ <div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; <span class="keywordflow">else</span></div>
8384
+ <div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; {</div>
8385
+ <div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; <span class="keywordflow">return</span> IntervalValue::top();</div>
8386
+ <div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; }</div>
8387
+ <div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160;}</div>
8397
8388
  </div><!-- fragment -->
8398
8389
  </div>
8399
8390
  </div>
@@ -8433,33 +8424,33 @@ template&lt;typename F , typename S &gt; </div>
8433
8424
 
8434
8425
  <p>Bitwise OR of IntervalValues. </p>
8435
8426
 
8436
- <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00920">920</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
8437
- <div class="fragment"><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160;{</div>
8438
- <div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; <span class="keyword">auto</span> next_power_of_2 = [](<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> num)</div>
8427
+ <p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00906">906</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
8428
+ <div class="fragment"><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160;{</div>
8429
+ <div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; <span class="keyword">auto</span> next_power_of_2 = [](<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> num)</div>
8430
+ <div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; {</div>
8431
+ <div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; <span class="keywordtype">int</span> i = 1;</div>
8432
+ <div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; <span class="keywordflow">while</span> ((num &gt;&gt; i) != 0)</div>
8433
+ <div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; {</div>
8434
+ <div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; ++i;</div>
8435
+ <div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; }</div>
8436
+ <div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; <span class="keywordflow">return</span> 1 &lt;&lt; i;</div>
8437
+ <div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; };</div>
8438
+ <div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div>
8439
+ <div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div>
8440
+ <div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.is_numeral() &amp;&amp; rhs.is_numeral())</div>
8441
+ <div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; <span class="keywordflow">return</span> IntervalValue(lhs.lb() | rhs.lb());</div>
8442
+ <div class="line"><a name="l00921"></a><span class="lineno"> 921</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>
8443
+ <div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; rhs.lb().getNumeral() &gt;= 0 &amp;&amp; !rhs.ub().is_infinity())</div>
8439
8444
  <div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; {</div>
8440
- <div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; <span class="keywordtype">int</span> i = 1;</div>
8441
- <div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; <span class="keywordflow">while</span> ((num &gt;&gt; i) != 0)</div>
8442
- <div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; {</div>
8443
- <div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; ++i;</div>
8444
- <div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; }</div>
8445
- <div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; <span class="keywordflow">return</span> 1 &lt;&lt; i;</div>
8446
- <div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; };</div>
8447
- <div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div>
8448
- <div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; <span class="keywordflow">return</span> IntervalValue::bottom();</div>
8449
- <div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.is_numeral() &amp;&amp; rhs.is_numeral())</div>
8450
- <div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; <span class="keywordflow">return</span> IntervalValue(lhs.lb() | rhs.lb());</div>
8451
- <div class="line"><a name="l00935"></a><span class="lineno"> 935</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>
8452
- <div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; rhs.lb().getNumeral() &gt;= 0 &amp;&amp; !rhs.ub().is_infinity())</div>
8453
- <div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; {</div>
8454
- <div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> m = std::max(lhs.ub().getNumeral(), rhs.ub().getNumeral());</div>
8455
- <div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> ub = next_power_of_2(<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a>(m+1));</div>
8456
- <div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; <span class="keywordflow">return</span> IntervalValue((<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a>) 0, (<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a>) ub);</div>
8457
- <div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; }</div>
8458
- <div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; <span class="keywordflow">else</span></div>
8459
- <div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; {</div>
8460
- <div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; <span class="keywordflow">return</span> IntervalValue::top();</div>
8461
- <div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; }</div>
8462
- <div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160;}</div>
8445
+ <div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> m = std::max(lhs.ub().getNumeral(), rhs.ub().getNumeral());</div>
8446
+ <div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> ub = next_power_of_2(<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a>(m+1));</div>
8447
+ <div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; <span class="keywordflow">return</span> IntervalValue((<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a>) 0, (<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a>) ub);</div>
8448
+ <div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; }</div>
8449
+ <div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; <span class="keywordflow">else</span></div>
8450
+ <div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; {</div>
8451
+ <div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; <span class="keywordflow">return</span> IntervalValue::top();</div>
8452
+ <div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; }</div>
8453
+ <div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160;}</div>
8463
8454
  </div><!-- fragment -->
8464
8455
  </div>
8465
8456
  </div>
@@ -8891,7 +8882,7 @@ template&lt;typename GraphType &gt; </div>
8891
8882
  <div class="ttc" id="anamespaceSVF_html_a41375daa7cc99317d0aa2a21dc643b88a53d18d0ea8b11173db3d2f60f838ffe1"><div class="ttname"><a href="namespaceSVF.html#a41375daa7cc99317d0aa2a21dc643b88a53d18d0ea8b11173db3d2f60f838ffe1">SVF::AEKind::AbstractExecution</a></div><div class="ttdeci">@ AbstractExecution</div></div>
8892
8883
  <div class="ttc" id="acJSON_8h_html_a6288dae99eabb0a393b1d4974e01cde7"><div class="ttname"><a href="cJSON_8h.html#a6288dae99eabb0a393b1d4974e01cde7">number</a></div><div class="ttdeci">const char *const const double number</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00268">cJSON.h:268</a></div></div>
8893
8884
  <div class="ttc" id="anamespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdoc">LLVM Basic classes.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00082">BasicTypes.h:82</a></div></div>
8894
- <div class="ttc" id="anamespaceSVF_html_af95793adab8fb9aa19e19027e73372a6"><div class="ttname"><a href="namespaceSVF.html#af95793adab8fb9aa19e19027e73372a6">SVF::operator&lt;&lt;</a></div><div class="ttdeci">IntervalValue operator&lt;&lt;(const IntervalValue &amp;lhs, const IntervalValue &amp;rhs)</div><div class="ttdoc">Left binary shift of IntervalValues.</div><div class="ttdef"><b>Definition:</b> <a href="IntervalValue_8h_source.html#l00836">IntervalValue.h:836</a></div></div>
8885
+ <div class="ttc" id="anamespaceSVF_html_af95793adab8fb9aa19e19027e73372a6"><div class="ttname"><a href="namespaceSVF.html#af95793adab8fb9aa19e19027e73372a6">SVF::operator&lt;&lt;</a></div><div class="ttdeci">IntervalValue operator&lt;&lt;(const IntervalValue &amp;lhs, const IntervalValue &amp;rhs)</div><div class="ttdoc">Left binary shift of IntervalValues.</div><div class="ttdef"><b>Definition:</b> <a href="IntervalValue_8h_source.html#l00822">IntervalValue.h:822</a></div></div>
8895
8886
  <div class="ttc" id="anamespaceSVF_html_a61c01e2e687ab3a001fb806737583943afdd83ddff93d38902f07775cd36df239"><div class="ttname"><a href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943afdd83ddff93d38902f07775cd36df239">SVF::NoAlias</a></div><div class="ttdeci">@ NoAlias</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00528">SVFType.h:528</a></div></div>
8896
8887
  <div class="ttc" id="acJSON_8h_html_a25d22ecc7e656d2c59332072684e8766"><div class="ttname"><a href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a></div><div class="ttdeci">const char *const name</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00264">cJSON.h:264</a></div></div>
8897
8888
  <div class="ttc" id="anamespaceSVF_html_a3e2b6638b0fbca37846e953142bcc844a7f99364c041329bd5758261c8c440b30"><div class="ttname"><a href="namespaceSVF.html#a3e2b6638b0fbca37846e953142bcc844a7f99364c041329bd5758261c8c440b30">SVF::ModRef</a></div><div class="ttdeci">@ ModRef</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00520">SVFType.h:520</a></div></div>