svf-tools 1.0.803 → 1.0.804
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.
- package/SVF-doxygen/html/IntervalValue_8h.html +0 -4
- package/SVF-doxygen/html/IntervalValue_8h_source.html +354 -302
- package/SVF-doxygen/html/LLVMModule_8cpp_source.html +1 -1
- package/SVF-doxygen/html/MSSAMuChi_8h_source.html +1 -1
- package/SVF-doxygen/html/MemRegion_8cpp_source.html +1 -1
- package/SVF-doxygen/html/PointsTo_8cpp_source.html +2 -2
- package/SVF-doxygen/html/PointsTo_8h_source.html +2 -2
- package/SVF-doxygen/html/SVFType_8cpp_source.html +1 -1
- package/SVF-doxygen/html/SVFType_8h_source.html +1 -1
- package/SVF-doxygen/html/SVFValue_8h_source.html +1 -1
- package/SVF-doxygen/html/SparseBitVector_8h_source.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1LLVMModuleSet.html +1 -1
- package/SVF-doxygen/html/fastcluster__dm_8cpp_8inc_source.html +1 -1
- package/SVF-doxygen/html/namespaceSVF.html +330 -294
- package/package.json +1 -1
- package/svf/include/AbstractExecution/IntervalValue.h +74 -26
|
@@ -1463,16 +1463,12 @@ Functions</h2></td></tr>
|
|
|
1463
1463
|
<tr class="memdesc:a2f3ddba25bc972f70300128369e4cd1d"><td class="mdescLeft"> </td><td class="mdescRight">Divide IntervalValues. <a href="namespaceSVF.html#a2f3ddba25bc972f70300128369e4cd1d">More...</a><br /></td></tr>
|
|
1464
1464
|
<tr class="separator:a2f3ddba25bc972f70300128369e4cd1d"><td class="memSeparator" colspan="2"> </td></tr>
|
|
1465
1465
|
<tr class="memitem:aedd9d023a68dddd66314be63bb8e48d2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1IntervalValue.html">IntervalValue</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF.html#aedd9d023a68dddd66314be63bb8e48d2">operator></a> (const <a class="el" href="classSVF_1_1IntervalValue.html">IntervalValue</a> &lhs, const <a class="el" href="classSVF_1_1IntervalValue.html">IntervalValue</a> &rhs)</td></tr>
|
|
1466
|
-
<tr class="memdesc:aedd9d023a68dddd66314be63bb8e48d2"><td class="mdescLeft"> </td><td class="mdescRight">Greater than IntervalValues. <a href="namespaceSVF.html#aedd9d023a68dddd66314be63bb8e48d2">More...</a><br /></td></tr>
|
|
1467
1466
|
<tr class="separator:aedd9d023a68dddd66314be63bb8e48d2"><td class="memSeparator" colspan="2"> </td></tr>
|
|
1468
1467
|
<tr class="memitem:adeb418bb692b6b0c3498a24927e1068b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1IntervalValue.html">IntervalValue</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF.html#adeb418bb692b6b0c3498a24927e1068b">operator<</a> (const <a class="el" href="classSVF_1_1IntervalValue.html">IntervalValue</a> &lhs, const <a class="el" href="classSVF_1_1IntervalValue.html">IntervalValue</a> &rhs)</td></tr>
|
|
1469
|
-
<tr class="memdesc:adeb418bb692b6b0c3498a24927e1068b"><td class="mdescLeft"> </td><td class="mdescRight">Greater than IntervalValues. <a href="namespaceSVF.html#adeb418bb692b6b0c3498a24927e1068b">More...</a><br /></td></tr>
|
|
1470
1468
|
<tr class="separator:adeb418bb692b6b0c3498a24927e1068b"><td class="memSeparator" colspan="2"> </td></tr>
|
|
1471
1469
|
<tr class="memitem:a08938c05911dac4ebd102adfafd14d24"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1IntervalValue.html">IntervalValue</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF.html#a08938c05911dac4ebd102adfafd14d24">operator>=</a> (const <a class="el" href="classSVF_1_1IntervalValue.html">IntervalValue</a> &lhs, const <a class="el" href="classSVF_1_1IntervalValue.html">IntervalValue</a> &rhs)</td></tr>
|
|
1472
|
-
<tr class="memdesc:a08938c05911dac4ebd102adfafd14d24"><td class="mdescLeft"> </td><td class="mdescRight">Greater than IntervalValues. <a href="namespaceSVF.html#a08938c05911dac4ebd102adfafd14d24">More...</a><br /></td></tr>
|
|
1473
1470
|
<tr class="separator:a08938c05911dac4ebd102adfafd14d24"><td class="memSeparator" colspan="2"> </td></tr>
|
|
1474
1471
|
<tr class="memitem:a1dab362b7d3da3375b60c94e78275293"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1IntervalValue.html">IntervalValue</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF.html#a1dab362b7d3da3375b60c94e78275293">operator<=</a> (const <a class="el" href="classSVF_1_1IntervalValue.html">IntervalValue</a> &lhs, const <a class="el" href="classSVF_1_1IntervalValue.html">IntervalValue</a> &rhs)</td></tr>
|
|
1475
|
-
<tr class="memdesc:a1dab362b7d3da3375b60c94e78275293"><td class="mdescLeft"> </td><td class="mdescRight">Greater than IntervalValues. <a href="namespaceSVF.html#a1dab362b7d3da3375b60c94e78275293">More...</a><br /></td></tr>
|
|
1476
1472
|
<tr class="separator:a1dab362b7d3da3375b60c94e78275293"><td class="memSeparator" colspan="2"> </td></tr>
|
|
1477
1473
|
<tr class="memitem:af95793adab8fb9aa19e19027e73372a6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1IntervalValue.html">IntervalValue</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF.html#af95793adab8fb9aa19e19027e73372a6">operator<<</a> (const <a class="el" href="classSVF_1_1IntervalValue.html">IntervalValue</a> &lhs, const <a class="el" href="classSVF_1_1IntervalValue.html">IntervalValue</a> &rhs)</td></tr>
|
|
1478
1474
|
<tr class="memdesc:af95793adab8fb9aa19e19027e73372a6"><td class="mdescLeft"> </td><td class="mdescRight">Left binary shift of IntervalValues. <a href="namespaceSVF.html#af95793adab8fb9aa19e19027e73372a6">More...</a><br /></td></tr>
|
|
@@ -7038,31 +7034,31 @@ template<class GraphType > </div>
|
|
|
7038
7034
|
|
|
7039
7035
|
<p>Bitwise AND of IntervalValues. </p>
|
|
7040
7036
|
|
|
7041
|
-
<p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#
|
|
7042
|
-
<div class="fragment"><div class="line"><a name="
|
|
7043
|
-
<div class="line"><a name="
|
|
7044
|
-
<div class="line"><a name="
|
|
7045
|
-
<div class="line"><a name="
|
|
7046
|
-
<div class="line"><a name="
|
|
7047
|
-
<div class="line"><a name="
|
|
7048
|
-
<div class="line"><a name="
|
|
7049
|
-
<div class="line"><a name="
|
|
7050
|
-
<div class="line"><a name="
|
|
7051
|
-
<div class="line"><a name="
|
|
7052
|
-
<div class="line"><a name="
|
|
7053
|
-
<div class="line"><a name="
|
|
7054
|
-
<div class="line"><a name="
|
|
7055
|
-
<div class="line"><a name="
|
|
7056
|
-
<div class="line"><a name="
|
|
7057
|
-
<div class="line"><a name="
|
|
7058
|
-
<div class="line"><a name="
|
|
7059
|
-
<div class="line"><a name="
|
|
7060
|
-
<div class="line"><a name="
|
|
7061
|
-
<div class="line"><a name="
|
|
7062
|
-
<div class="line"><a name="
|
|
7063
|
-
<div class="line"><a name="
|
|
7064
|
-
<div class="line"><a name="
|
|
7065
|
-
<div class="line"><a name="
|
|
7037
|
+
<p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00841">841</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
|
|
7038
|
+
<div class="fragment"><div class="line"><a name="l00842"></a><span class="lineno"> 842</span> {</div>
|
|
7039
|
+
<div class="line"><a name="l00843"></a><span class="lineno"> 843</span>  <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div>
|
|
7040
|
+
<div class="line"><a name="l00844"></a><span class="lineno"> 844</span>  <span class="keywordflow">return</span> IntervalValue::bottom();</div>
|
|
7041
|
+
<div class="line"><a name="l00845"></a><span class="lineno"> 845</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.is_numeral() && rhs.is_numeral())</div>
|
|
7042
|
+
<div class="line"><a name="l00846"></a><span class="lineno"> 846</span>  {</div>
|
|
7043
|
+
<div class="line"><a name="l00847"></a><span class="lineno"> 847</span>  <span class="keywordflow">return</span> IntervalValue(lhs.lb() & rhs.lb());</div>
|
|
7044
|
+
<div class="line"><a name="l00848"></a><span class="lineno"> 848</span>  }</div>
|
|
7045
|
+
<div class="line"><a name="l00849"></a><span class="lineno"> 849</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.lb().getNumeral() >= 0 && rhs.lb().getNumeral() >= 0)</div>
|
|
7046
|
+
<div class="line"><a name="l00850"></a><span class="lineno"> 850</span>  {</div>
|
|
7047
|
+
<div class="line"><a name="l00851"></a><span class="lineno"> 851</span>  <span class="keywordflow">return</span> IntervalValue((<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a>) 0, min(lhs.ub(), rhs.ub()));</div>
|
|
7048
|
+
<div class="line"><a name="l00852"></a><span class="lineno"> 852</span>  }</div>
|
|
7049
|
+
<div class="line"><a name="l00853"></a><span class="lineno"> 853</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.lb().getNumeral() >= 0)</div>
|
|
7050
|
+
<div class="line"><a name="l00854"></a><span class="lineno"> 854</span>  {</div>
|
|
7051
|
+
<div class="line"><a name="l00855"></a><span class="lineno"> 855</span>  <span class="keywordflow">return</span> IntervalValue((<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a>) 0, lhs.ub());</div>
|
|
7052
|
+
<div class="line"><a name="l00856"></a><span class="lineno"> 856</span>  }</div>
|
|
7053
|
+
<div class="line"><a name="l00857"></a><span class="lineno"> 857</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (rhs.lb().getNumeral() >= 0)</div>
|
|
7054
|
+
<div class="line"><a name="l00858"></a><span class="lineno"> 858</span>  {</div>
|
|
7055
|
+
<div class="line"><a name="l00859"></a><span class="lineno"> 859</span>  <span class="keywordflow">return</span> IntervalValue((<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a>) 0, rhs.ub());</div>
|
|
7056
|
+
<div class="line"><a name="l00860"></a><span class="lineno"> 860</span>  }</div>
|
|
7057
|
+
<div class="line"><a name="l00861"></a><span class="lineno"> 861</span>  <span class="keywordflow">else</span></div>
|
|
7058
|
+
<div class="line"><a name="l00862"></a><span class="lineno"> 862</span>  {</div>
|
|
7059
|
+
<div class="line"><a name="l00863"></a><span class="lineno"> 863</span>  <span class="keywordflow">return</span> IntervalValue::top();</div>
|
|
7060
|
+
<div class="line"><a name="l00864"></a><span class="lineno"> 864</span>  }</div>
|
|
7061
|
+
<div class="line"><a name="l00865"></a><span class="lineno"> 865</span> }</div>
|
|
7066
7062
|
</div><!-- fragment -->
|
|
7067
7063
|
</div>
|
|
7068
7064
|
</div>
|
|
@@ -7578,44 +7574,55 @@ template<unsigned ElementSize> </div>
|
|
|
7578
7574
|
</table>
|
|
7579
7575
|
</div><div class="memdoc">
|
|
7580
7576
|
|
|
7581
|
-
<p>
|
|
7582
|
-
|
|
7583
|
-
<
|
|
7584
|
-
<div class="
|
|
7585
|
-
<div class="line"><a name="
|
|
7586
|
-
<div class="line"><a name="
|
|
7587
|
-
<div class="line"><a name="
|
|
7588
|
-
<div class="line"><a name="
|
|
7589
|
-
<div class="line"><a name="
|
|
7590
|
-
<div class="line"><a name="
|
|
7591
|
-
<div class="line"><a name="
|
|
7592
|
-
<div class="line"><a name="
|
|
7593
|
-
<div class="line"><a name="
|
|
7594
|
-
<div class="line"><a name="
|
|
7595
|
-
<div class="line"><a name="
|
|
7596
|
-
<div class="line"><a name="
|
|
7597
|
-
<div class="line"><a name="
|
|
7598
|
-
<div class="line"><a name="
|
|
7599
|
-
<div class="line"><a name="
|
|
7600
|
-
<div class="line"><a name="
|
|
7601
|
-
<div class="line"><a name="
|
|
7602
|
-
<div class="line"><a name="
|
|
7603
|
-
<div class="line"><a name="
|
|
7604
|
-
<div class="line"><a name="
|
|
7605
|
-
<div class="line"><a name="
|
|
7606
|
-
<div class="line"><a name="
|
|
7607
|
-
<div class="line"><a name="
|
|
7608
|
-
<div class="line"><a name="
|
|
7609
|
-
<div class="line"><a name="
|
|
7610
|
-
<div class="line"><a name="
|
|
7611
|
-
<div class="line"><a name="
|
|
7612
|
-
<div class="line"><a name="
|
|
7613
|
-
<div class="line"><a name="
|
|
7614
|
-
<div class="line"><a name="
|
|
7615
|
-
<div class="line"><a name="
|
|
7616
|
-
<div class="line"><a name="
|
|
7617
|
-
<div class="line"><a name="
|
|
7618
|
-
<div class="line"><a name="
|
|
7577
|
+
<p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00632">632</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
|
|
7578
|
+
<div class="fragment"><div class="line"><a name="l00633"></a><span class="lineno"> 633</span> {</div>
|
|
7579
|
+
<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  <span class="comment">// If either lhs or rhs is bottom, the result is bottom</span></div>
|
|
7580
|
+
<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div>
|
|
7581
|
+
<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  {</div>
|
|
7582
|
+
<div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  <span class="keywordflow">return</span> IntervalValue::bottom();</div>
|
|
7583
|
+
<div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  }</div>
|
|
7584
|
+
<div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  <span class="comment">// If either lhs or rhs is top, the result is top</span></div>
|
|
7585
|
+
<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.isTop() || rhs.isTop())</div>
|
|
7586
|
+
<div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  {</div>
|
|
7587
|
+
<div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  <span class="keywordflow">return</span> IntervalValue::top();</div>
|
|
7588
|
+
<div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  }</div>
|
|
7589
|
+
<div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  <span class="keywordflow">else</span></div>
|
|
7590
|
+
<div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  {</div>
|
|
7591
|
+
<div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  <span class="comment">// If both lhs and rhs are numerals (lb = ub), directly compare their values</span></div>
|
|
7592
|
+
<div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  <span class="keywordflow">if</span> (lhs.is_numeral() && rhs.is_numeral())</div>
|
|
7593
|
+
<div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  {</div>
|
|
7594
|
+
<div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  <span class="comment">// It means lhs.lb() < rhs.lb()? true: false</span></div>
|
|
7595
|
+
<div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  <span class="keywordflow">return</span> lhs.lb().geq(rhs.lb()) ? IntervalValue(0, 0) : IntervalValue(1, 1);</div>
|
|
7596
|
+
<div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  }</div>
|
|
7597
|
+
<div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  <span class="keywordflow">else</span></div>
|
|
7598
|
+
<div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  {</div>
|
|
7599
|
+
<div class="line"><a name="l00654"></a><span class="lineno"> 654</span>  <span class="comment">// Return [1,1] means lhs is totally less than rhs</span></div>
|
|
7600
|
+
<div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  <span class="comment">// When lhs.ub < rhs.lb, e.g., lhs:[1, 2] rhs:[3, 4]</span></div>
|
|
7601
|
+
<div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  <span class="comment">// lhs.ub(2) < rhs.lb(3)</span></div>
|
|
7602
|
+
<div class="line"><a name="l00657"></a><span class="lineno"> 657</span>  <span class="comment">// It means lhs.ub() < rhs.lb()</span></div>
|
|
7603
|
+
<div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  <span class="keywordflow">if</span> (!lhs.ub().geq(rhs.lb()))</div>
|
|
7604
|
+
<div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  {</div>
|
|
7605
|
+
<div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  <span class="keywordflow">return</span> IntervalValue(1, 1);</div>
|
|
7606
|
+
<div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  }</div>
|
|
7607
|
+
<div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  <span class="comment">// Return [0,0] means lhs is totally impossible to be less than rhs</span></div>
|
|
7608
|
+
<div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  <span class="comment">// i.e., lhs is totally greater than or equal to rhs</span></div>
|
|
7609
|
+
<div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  <span class="comment">// When lhs.ub >= rhs.lb, e.g., lhs:[3, 4] rhs:[4,5]</span></div>
|
|
7610
|
+
<div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  <span class="comment">// lhs.ub(4) >= rhs.lb(4)</span></div>
|
|
7611
|
+
<div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (rhs.ub().geq(lhs.lb()))</div>
|
|
7612
|
+
<div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  {</div>
|
|
7613
|
+
<div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  <span class="keywordflow">return</span> IntervalValue(0, 0);</div>
|
|
7614
|
+
<div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  }</div>
|
|
7615
|
+
<div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  <span class="comment">// For other cases, lhs can be less than rhs or not, depending on the values</span></div>
|
|
7616
|
+
<div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  <span class="comment">// e.g., lhs: [2,4], rhs: [1,3],</span></div>
|
|
7617
|
+
<div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  <span class="comment">// lhs can be less than rhs if lhs is 2, rhs is 3.</span></div>
|
|
7618
|
+
<div class="line"><a name="l00673"></a><span class="lineno"> 673</span>  <span class="comment">// lhs can also not be less than rhs if lhs is 4 and rhs is 1</span></div>
|
|
7619
|
+
<div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  <span class="keywordflow">else</span></div>
|
|
7620
|
+
<div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  {</div>
|
|
7621
|
+
<div class="line"><a name="l00676"></a><span class="lineno"> 676</span>  <span class="keywordflow">return</span> IntervalValue(0, 1);</div>
|
|
7622
|
+
<div class="line"><a name="l00677"></a><span class="lineno"> 677</span>  }</div>
|
|
7623
|
+
<div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  }</div>
|
|
7624
|
+
<div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  }</div>
|
|
7625
|
+
<div class="line"><a name="l00680"></a><span class="lineno"> 680</span> }</div>
|
|
7619
7626
|
</div><!-- fragment -->
|
|
7620
7627
|
</div>
|
|
7621
7628
|
</div>
|
|
@@ -7655,25 +7662,25 @@ template<unsigned ElementSize> </div>
|
|
|
7655
7662
|
|
|
7656
7663
|
<p>Left binary shift of IntervalValues. </p>
|
|
7657
7664
|
|
|
7658
|
-
<p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#
|
|
7659
|
-
<div class="fragment"><div class="line"><a name="
|
|
7660
|
-
<div class="line"><a name="
|
|
7661
|
-
<div class="line"><a name="
|
|
7662
|
-
<div class="line"><a name="
|
|
7663
|
-
<div class="line"><a name="
|
|
7664
|
-
<div class="line"><a name="
|
|
7665
|
-
<div class="line"><a name="
|
|
7666
|
-
<div class="line"><a name="
|
|
7667
|
-
<div class="line"><a name="
|
|
7668
|
-
<div class="line"><a name="
|
|
7669
|
-
<div class="line"><a name="
|
|
7670
|
-
<div class="line"><a name="
|
|
7671
|
-
<div class="line"><a name="
|
|
7672
|
-
<div class="line"><a name="
|
|
7673
|
-
<div class="line"><a name="
|
|
7674
|
-
<div class="line"><a name="
|
|
7675
|
-
<div class="line"><a name="
|
|
7676
|
-
<div class="line"><a name="
|
|
7665
|
+
<p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00784">784</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
|
|
7666
|
+
<div class="fragment"><div class="line"><a name="l00785"></a><span class="lineno"> 785</span> {</div>
|
|
7667
|
+
<div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  <span class="comment">//TODO: implement <<</span></div>
|
|
7668
|
+
<div class="line"><a name="l00787"></a><span class="lineno"> 787</span>  <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div>
|
|
7669
|
+
<div class="line"><a name="l00788"></a><span class="lineno"> 788</span>  <span class="keywordflow">return</span> IntervalValue::bottom();</div>
|
|
7670
|
+
<div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  <span class="keywordflow">if</span> (lhs.isTop() && rhs.isTop())</div>
|
|
7671
|
+
<div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  <span class="keywordflow">return</span> IntervalValue::top();</div>
|
|
7672
|
+
<div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  <span class="keywordflow">else</span></div>
|
|
7673
|
+
<div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  {</div>
|
|
7674
|
+
<div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  IntervalValue shift = rhs;</div>
|
|
7675
|
+
<div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  shift.meet_with(IntervalValue(0, IntervalValue::plus_infinity()));</div>
|
|
7676
|
+
<div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  <span class="keywordflow">if</span> (shift.isBottom())</div>
|
|
7677
|
+
<div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  <span class="keywordflow">return</span> IntervalValue::bottom();</div>
|
|
7678
|
+
<div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  IntervalValue coeff(1 << (<a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a>) shift.lb().getNumeral(),</div>
|
|
7679
|
+
<div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  shift.ub().is_infinity() ? IntervalValue::plus_infinity() : 1</div>
|
|
7680
|
+
<div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  << (<a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a>) shift.ub().getNumeral());</div>
|
|
7681
|
+
<div class="line"><a name="l00800"></a><span class="lineno"> 800</span>  <span class="keywordflow">return</span> lhs * coeff;</div>
|
|
7682
|
+
<div class="line"><a name="l00801"></a><span class="lineno"> 801</span>  }</div>
|
|
7683
|
+
<div class="line"><a name="l00802"></a><span class="lineno"> 802</span> }</div>
|
|
7677
7684
|
</div><!-- fragment -->
|
|
7678
7685
|
</div>
|
|
7679
7686
|
</div>
|
|
@@ -7749,11 +7756,11 @@ template<typename F , typename S > </div>
|
|
|
7749
7756
|
|
|
7750
7757
|
<p>Write an <a class="el" href="classSVF_1_1IntervalValue.html">IntervalValue</a> on a stream. </p>
|
|
7751
7758
|
|
|
7752
|
-
<p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#
|
|
7753
|
-
<div class="fragment"><div class="line"><a name="
|
|
7754
|
-
<div class="line"><a name="
|
|
7755
|
-
<div class="line"><a name="
|
|
7756
|
-
<div class="line"><a name="
|
|
7759
|
+
<p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00926">926</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
|
|
7760
|
+
<div class="fragment"><div class="line"><a name="l00928"></a><span class="lineno"> 928</span> {</div>
|
|
7761
|
+
<div class="line"><a name="l00929"></a><span class="lineno"> 929</span>  IntervalValue.dump(o);</div>
|
|
7762
|
+
<div class="line"><a name="l00930"></a><span class="lineno"> 930</span>  <span class="keywordflow">return</span> o;</div>
|
|
7763
|
+
<div class="line"><a name="l00931"></a><span class="lineno"> 931</span> }</div>
|
|
7757
7764
|
</div><!-- fragment -->
|
|
7758
7765
|
</div>
|
|
7759
7766
|
</div>
|
|
@@ -7854,45 +7861,54 @@ template<typename F , typename S > </div>
|
|
|
7854
7861
|
</table>
|
|
7855
7862
|
</div><div class="memdoc">
|
|
7856
7863
|
|
|
7857
|
-
<p>
|
|
7858
|
-
|
|
7859
|
-
<
|
|
7860
|
-
<div class="
|
|
7861
|
-
<div class="line"><a name="
|
|
7862
|
-
<div class="line"><a name="
|
|
7863
|
-
<div class="line"><a name="
|
|
7864
|
-
<div class="line"><a name="
|
|
7865
|
-
<div class="line"><a name="
|
|
7866
|
-
<div class="line"><a name="
|
|
7867
|
-
<div class="line"><a name="
|
|
7868
|
-
<div class="line"><a name="
|
|
7869
|
-
<div class="line"><a name="
|
|
7870
|
-
<div class="line"><a name="
|
|
7871
|
-
<div class="line"><a name="
|
|
7872
|
-
<div class="line"><a name="
|
|
7873
|
-
<div class="line"><a name="
|
|
7874
|
-
<div class="line"><a name="
|
|
7875
|
-
<div class="line"><a name="
|
|
7876
|
-
<div class="line"><a name="
|
|
7877
|
-
<div class="line"><a name="
|
|
7878
|
-
<div class="line"><a name="
|
|
7879
|
-
<div class="line"><a name="
|
|
7880
|
-
<div class="line"><a name="
|
|
7881
|
-
<div class="line"><a name="
|
|
7882
|
-
<div class="line"><a name="
|
|
7883
|
-
<div class="line"><a name="
|
|
7884
|
-
<div class="line"><a name="
|
|
7885
|
-
<div class="line"><a name="
|
|
7886
|
-
<div class="line"><a name="
|
|
7887
|
-
<div class="line"><a name="
|
|
7888
|
-
<div class="line"><a name="
|
|
7889
|
-
<div class="line"><a name="
|
|
7890
|
-
<div class="line"><a name="
|
|
7891
|
-
<div class="line"><a name="
|
|
7892
|
-
<div class="line"><a name="
|
|
7893
|
-
<div class="line"><a name="
|
|
7894
|
-
<div class="line"><a name="
|
|
7895
|
-
<div class="line"><a name="
|
|
7864
|
+
<p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00734">734</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
|
|
7865
|
+
<div class="fragment"><div class="line"><a name="l00735"></a><span class="lineno"> 735</span> {</div>
|
|
7866
|
+
<div class="line"><a name="l00736"></a><span class="lineno"> 736</span>  <span class="comment">// If either lhs or rhs is bottom, the result is bottom</span></div>
|
|
7867
|
+
<div class="line"><a name="l00737"></a><span class="lineno"> 737</span>  <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div>
|
|
7868
|
+
<div class="line"><a name="l00738"></a><span class="lineno"> 738</span>  {</div>
|
|
7869
|
+
<div class="line"><a name="l00739"></a><span class="lineno"> 739</span>  <span class="keywordflow">return</span> IntervalValue::bottom();</div>
|
|
7870
|
+
<div class="line"><a name="l00740"></a><span class="lineno"> 740</span>  }</div>
|
|
7871
|
+
<div class="line"><a name="l00741"></a><span class="lineno"> 741</span>  <span class="comment">// If either lhs or rhs is top, the result is top</span></div>
|
|
7872
|
+
<div class="line"><a name="l00742"></a><span class="lineno"> 742</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.isTop() || rhs.isTop())</div>
|
|
7873
|
+
<div class="line"><a name="l00743"></a><span class="lineno"> 743</span>  {</div>
|
|
7874
|
+
<div class="line"><a name="l00744"></a><span class="lineno"> 744</span>  <span class="keywordflow">return</span> IntervalValue::top();</div>
|
|
7875
|
+
<div class="line"><a name="l00745"></a><span class="lineno"> 745</span>  }</div>
|
|
7876
|
+
<div class="line"><a name="l00746"></a><span class="lineno"> 746</span>  <span class="keywordflow">else</span></div>
|
|
7877
|
+
<div class="line"><a name="l00747"></a><span class="lineno"> 747</span>  {</div>
|
|
7878
|
+
<div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  <span class="comment">// If both lhs and rhs are numerals (lb = ub), directly compare their values</span></div>
|
|
7879
|
+
<div class="line"><a name="l00749"></a><span class="lineno"> 749</span>  <span class="keywordflow">if</span> (lhs.is_numeral() && rhs.is_numeral())</div>
|
|
7880
|
+
<div class="line"><a name="l00750"></a><span class="lineno"> 750</span>  {</div>
|
|
7881
|
+
<div class="line"><a name="l00751"></a><span class="lineno"> 751</span>  <span class="keywordflow">return</span> lhs.lb().leq(rhs.lb()) ? IntervalValue(1, 1) : IntervalValue(0, 0);</div>
|
|
7882
|
+
<div class="line"><a name="l00752"></a><span class="lineno"> 752</span>  }</div>
|
|
7883
|
+
<div class="line"><a name="l00753"></a><span class="lineno"> 753</span>  <span class="keywordflow">else</span></div>
|
|
7884
|
+
<div class="line"><a name="l00754"></a><span class="lineno"> 754</span>  {</div>
|
|
7885
|
+
<div class="line"><a name="l00755"></a><span class="lineno"> 755</span>  <span class="comment">// Return [1,1] means lhs is totally less than or equal to rhs</span></div>
|
|
7886
|
+
<div class="line"><a name="l00756"></a><span class="lineno"> 756</span>  <span class="comment">// When lhs.ub <= rhs.lb, e.g., lhs:[1, 2] rhs:[2, 3]</span></div>
|
|
7887
|
+
<div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  <span class="comment">// lhs.ub(2) <= rhs.lb(2)</span></div>
|
|
7888
|
+
<div class="line"><a name="l00758"></a><span class="lineno"> 758</span>  <span class="keywordflow">if</span> (lhs.ub().leq(rhs.lb()))</div>
|
|
7889
|
+
<div class="line"><a name="l00759"></a><span class="lineno"> 759</span>  {</div>
|
|
7890
|
+
<div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  <span class="keywordflow">return</span> IntervalValue(1, 1);</div>
|
|
7891
|
+
<div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  }</div>
|
|
7892
|
+
<div class="line"><a name="l00762"></a><span class="lineno"> 762</span>  <span class="comment">// Return [0,0] means lhs is totally impossible to be less than or equal to rhs</span></div>
|
|
7893
|
+
<div class="line"><a name="l00763"></a><span class="lineno"> 763</span>  <span class="comment">// i.e., lhs is totally greater than rhs</span></div>
|
|
7894
|
+
<div class="line"><a name="l00764"></a><span class="lineno"> 764</span>  <span class="comment">// When lhs.lb > rhs.ub, e.g., lhs:[3, 4] rhs:[1, 2]</span></div>
|
|
7895
|
+
<div class="line"><a name="l00765"></a><span class="lineno"> 765</span>  <span class="comment">// lhs.lb(3) > rhs.ub(2)</span></div>
|
|
7896
|
+
<div class="line"><a name="l00766"></a><span class="lineno"> 766</span>  <span class="comment">// It means lhs.lb() > rhs.ub()</span></div>
|
|
7897
|
+
<div class="line"><a name="l00767"></a><span class="lineno"> 767</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!lhs.lb().leq(rhs.ub()))</div>
|
|
7898
|
+
<div class="line"><a name="l00768"></a><span class="lineno"> 768</span>  {</div>
|
|
7899
|
+
<div class="line"><a name="l00769"></a><span class="lineno"> 769</span>  <span class="keywordflow">return</span> IntervalValue(0, 0);</div>
|
|
7900
|
+
<div class="line"><a name="l00770"></a><span class="lineno"> 770</span>  }</div>
|
|
7901
|
+
<div class="line"><a name="l00771"></a><span class="lineno"> 771</span>  <span class="comment">// For other cases, lhs can be less than or equal to rhs or not, depending on the values</span></div>
|
|
7902
|
+
<div class="line"><a name="l00772"></a><span class="lineno"> 772</span>  <span class="comment">// e.g., lhs: [2,4], rhs: [1,3],</span></div>
|
|
7903
|
+
<div class="line"><a name="l00773"></a><span class="lineno"> 773</span>  <span class="comment">// lhs can be less than or equal to rhs if lhs is 3, rhs is 3.</span></div>
|
|
7904
|
+
<div class="line"><a name="l00774"></a><span class="lineno"> 774</span>  <span class="comment">// lhs can also not be less than or equal to rhs if lhs is 3 and rhs is 2</span></div>
|
|
7905
|
+
<div class="line"><a name="l00775"></a><span class="lineno"> 775</span>  <span class="keywordflow">else</span></div>
|
|
7906
|
+
<div class="line"><a name="l00776"></a><span class="lineno"> 776</span>  {</div>
|
|
7907
|
+
<div class="line"><a name="l00777"></a><span class="lineno"> 777</span>  <span class="keywordflow">return</span> IntervalValue(0, 1);</div>
|
|
7908
|
+
<div class="line"><a name="l00778"></a><span class="lineno"> 778</span>  }</div>
|
|
7909
|
+
<div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  }</div>
|
|
7910
|
+
<div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  }</div>
|
|
7911
|
+
<div class="line"><a name="l00781"></a><span class="lineno"> 781</span> }</div>
|
|
7896
7912
|
</div><!-- fragment -->
|
|
7897
7913
|
</div>
|
|
7898
7914
|
</div>
|
|
@@ -7930,44 +7946,55 @@ template<typename F , typename S > </div>
|
|
|
7930
7946
|
</table>
|
|
7931
7947
|
</div><div class="memdoc">
|
|
7932
7948
|
|
|
7933
|
-
<p>Greater than IntervalValues. </p>
|
|
7934
|
-
|
|
7935
7949
|
<p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00581">581</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
|
|
7936
7950
|
<div class="fragment"><div class="line"><a name="l00582"></a><span class="lineno"> 582</span> {</div>
|
|
7937
|
-
<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  <span class="
|
|
7938
|
-
<div class="line"><a name="l00584"></a><span class="lineno"> 584</span> 
|
|
7939
|
-
<div class="line"><a name="l00585"></a><span class="lineno"> 585</span> 
|
|
7940
|
-
<div class="line"><a name="l00586"></a><span class="lineno"> 586</span> 
|
|
7941
|
-
<div class="line"><a name="l00587"></a><span class="lineno"> 587</span> 
|
|
7942
|
-
<div class="line"><a name="l00588"></a><span class="lineno"> 588</span> 
|
|
7943
|
-
<div class="line"><a name="l00589"></a><span class="lineno"> 589</span> 
|
|
7944
|
-
<div class="line"><a name="l00590"></a><span class="lineno"> 590</span> 
|
|
7945
|
-
<div class="line"><a name="l00591"></a><span class="lineno"> 591</span> 
|
|
7946
|
-
<div class="line"><a name="l00592"></a><span class="lineno"> 592</span> 
|
|
7947
|
-
<div class="line"><a name="l00593"></a><span class="lineno"> 593</span> 
|
|
7948
|
-
<div class="line"><a name="l00594"></a><span class="lineno"> 594</span> 
|
|
7949
|
-
<div class="line"><a name="l00595"></a><span class="lineno"> 595</span> 
|
|
7950
|
-
<div class="line"><a name="l00596"></a><span class="lineno"> 596</span> 
|
|
7951
|
-
<div class="line"><a name="l00597"></a><span class="lineno"> 597</span> 
|
|
7952
|
-
<div class="line"><a name="l00598"></a><span class="lineno"> 598</span> 
|
|
7953
|
-
<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  <span class="
|
|
7954
|
-
<div class="line"><a name="l00600"></a><span class="lineno"> 600</span> 
|
|
7955
|
-
<div class="line"><a name="l00601"></a><span class="lineno"> 601</span> 
|
|
7956
|
-
<div class="line"><a name="l00602"></a><span class="lineno"> 602</span> 
|
|
7957
|
-
<div class="line"><a name="l00603"></a><span class="lineno"> 603</span> 
|
|
7958
|
-
<div class="line"><a name="l00604"></a><span class="lineno"> 604</span> 
|
|
7959
|
-
<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  <span class="
|
|
7960
|
-
<div class="line"><a name="l00606"></a><span class="lineno"> 606</span> 
|
|
7961
|
-
<div class="line"><a name="l00607"></a><span class="lineno"> 607</span> 
|
|
7962
|
-
<div class="line"><a name="l00608"></a><span class="lineno"> 608</span> 
|
|
7963
|
-
<div class="line"><a name="l00609"></a><span class="lineno"> 609</span> 
|
|
7964
|
-
<div class="line"><a name="l00610"></a><span class="lineno"> 610</span> 
|
|
7965
|
-
<div class="line"><a name="l00611"></a><span class="lineno"> 611</span> 
|
|
7966
|
-
<div class="line"><a name="l00612"></a><span class="lineno"> 612</span> 
|
|
7967
|
-
<div class="line"><a name="l00613"></a><span class="lineno"> 613</span> 
|
|
7968
|
-
<div class="line"><a name="l00614"></a><span class="lineno"> 614</span> 
|
|
7969
|
-
<div class="line"><a name="l00615"></a><span class="lineno"> 615</span> 
|
|
7970
|
-
<div class="line"><a name="l00616"></a><span class="lineno"> 616</span> 
|
|
7951
|
+
<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  <span class="comment">// If either lhs or rhs is bottom, the result is bottom</span></div>
|
|
7952
|
+
<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div>
|
|
7953
|
+
<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  {</div>
|
|
7954
|
+
<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  <span class="keywordflow">return</span> IntervalValue::bottom();</div>
|
|
7955
|
+
<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  }</div>
|
|
7956
|
+
<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  <span class="comment">// If either lhs or rhs is top, the result is top</span></div>
|
|
7957
|
+
<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.isTop() || rhs.isTop())</div>
|
|
7958
|
+
<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  {</div>
|
|
7959
|
+
<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  <span class="keywordflow">return</span> IntervalValue::top();</div>
|
|
7960
|
+
<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  }</div>
|
|
7961
|
+
<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  <span class="keywordflow">else</span></div>
|
|
7962
|
+
<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  {</div>
|
|
7963
|
+
<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  <span class="comment">// If both lhs and rhs are numerals (lb = ub), directly compare their values</span></div>
|
|
7964
|
+
<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  <span class="keywordflow">if</span> (lhs.is_numeral() && rhs.is_numeral())</div>
|
|
7965
|
+
<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  {</div>
|
|
7966
|
+
<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  <span class="comment">// It means lhs.lb() > rhs.lb()? true: false</span></div>
|
|
7967
|
+
<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  <span class="keywordflow">return</span> lhs.lb().leq(rhs.lb()) ? IntervalValue(0, 0) : IntervalValue(1, 1);</div>
|
|
7968
|
+
<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  }</div>
|
|
7969
|
+
<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  <span class="keywordflow">else</span></div>
|
|
7970
|
+
<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  {</div>
|
|
7971
|
+
<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  <span class="comment">// Return [1,1] means lhs is totally greater than rhs</span></div>
|
|
7972
|
+
<div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  <span class="comment">// When lhs.lb > rhs.ub, e.g., lhs:[3, 4] rhs:[1, 2]</span></div>
|
|
7973
|
+
<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  <span class="comment">// lhs.lb(3) > rhs.ub(2)</span></div>
|
|
7974
|
+
<div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  <span class="comment">// It means lhs.lb() > rhs.ub()</span></div>
|
|
7975
|
+
<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  <span class="keywordflow">if</span> (!lhs.lb().leq(rhs.ub()))</div>
|
|
7976
|
+
<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  {</div>
|
|
7977
|
+
<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  <span class="keywordflow">return</span> IntervalValue(1, 1);</div>
|
|
7978
|
+
<div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  }</div>
|
|
7979
|
+
<div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  <span class="comment">// Return [0,0] means lhs is totally impossible to be greater than rhs</span></div>
|
|
7980
|
+
<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  <span class="comment">// i.e., lhs is totally less than or equal to rhs</span></div>
|
|
7981
|
+
<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  <span class="comment">// When lhs.ub <= rhs.lb, e.g., lhs:[3, 4] rhs:[4,5]</span></div>
|
|
7982
|
+
<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  <span class="comment">// lhs.ub(4) <= rhs.lb(4)</span></div>
|
|
7983
|
+
<div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.ub().leq(rhs.lb()))</div>
|
|
7984
|
+
<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  {</div>
|
|
7985
|
+
<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  <span class="keywordflow">return</span> IntervalValue(0, 0);</div>
|
|
7986
|
+
<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  }</div>
|
|
7987
|
+
<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  <span class="comment">// For other cases, lhs can be greater than or not, depending on the values</span></div>
|
|
7988
|
+
<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  <span class="comment">// e.g., lhs: [2,4], rhs: [1,3],</span></div>
|
|
7989
|
+
<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  <span class="comment">// lhs can be greater than rhs if lhs is 4 and rhs is 1.</span></div>
|
|
7990
|
+
<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  <span class="comment">// lhs can also not be greater than rhs if lhs is 2 and rhs is 3</span></div>
|
|
7991
|
+
<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  <span class="keywordflow">else</span></div>
|
|
7992
|
+
<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  {</div>
|
|
7993
|
+
<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  <span class="keywordflow">return</span> IntervalValue(0, 1);</div>
|
|
7994
|
+
<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  }</div>
|
|
7995
|
+
<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  }</div>
|
|
7996
|
+
<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  }</div>
|
|
7997
|
+
<div class="line"><a name="l00629"></a><span class="lineno"> 629</span> }</div>
|
|
7971
7998
|
</div><!-- fragment -->
|
|
7972
7999
|
</div>
|
|
7973
8000
|
</div>
|
|
@@ -8005,45 +8032,54 @@ template<typename F , typename S > </div>
|
|
|
8005
8032
|
</table>
|
|
8006
8033
|
</div><div class="memdoc">
|
|
8007
8034
|
|
|
8008
|
-
<p>
|
|
8009
|
-
|
|
8010
|
-
<
|
|
8011
|
-
<div class="
|
|
8012
|
-
<div class="line"><a name="
|
|
8013
|
-
<div class="line"><a name="
|
|
8014
|
-
<div class="line"><a name="
|
|
8015
|
-
<div class="line"><a name="
|
|
8016
|
-
<div class="line"><a name="
|
|
8017
|
-
<div class="line"><a name="
|
|
8018
|
-
<div class="line"><a name="
|
|
8019
|
-
<div class="line"><a name="
|
|
8020
|
-
<div class="line"><a name="
|
|
8021
|
-
<div class="line"><a name="
|
|
8022
|
-
<div class="line"><a name="
|
|
8023
|
-
<div class="line"><a name="
|
|
8024
|
-
<div class="line"><a name="
|
|
8025
|
-
<div class="line"><a name="
|
|
8026
|
-
<div class="line"><a name="
|
|
8027
|
-
<div class="line"><a name="
|
|
8028
|
-
<div class="line"><a name="
|
|
8029
|
-
<div class="line"><a name="
|
|
8030
|
-
<div class="line"><a name="
|
|
8031
|
-
<div class="line"><a name="
|
|
8032
|
-
<div class="line"><a name="
|
|
8033
|
-
<div class="line"><a name="
|
|
8034
|
-
<div class="line"><a name="
|
|
8035
|
-
<div class="line"><a name="
|
|
8036
|
-
<div class="line"><a name="
|
|
8037
|
-
<div class="line"><a name="
|
|
8038
|
-
<div class="line"><a name="
|
|
8039
|
-
<div class="line"><a name="
|
|
8040
|
-
<div class="line"><a name="
|
|
8041
|
-
<div class="line"><a name="
|
|
8042
|
-
<div class="line"><a name="
|
|
8043
|
-
<div class="line"><a name="
|
|
8044
|
-
<div class="line"><a name="
|
|
8045
|
-
<div class="line"><a name="
|
|
8046
|
-
<div class="line"><a name="
|
|
8035
|
+
<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>
|
|
8036
|
+
<div class="fragment"><div class="line"><a name="l00685"></a><span class="lineno"> 685</span> {</div>
|
|
8037
|
+
<div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  <span class="comment">// If either lhs or rhs is bottom, the result is bottom</span></div>
|
|
8038
|
+
<div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div>
|
|
8039
|
+
<div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  {</div>
|
|
8040
|
+
<div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  <span class="keywordflow">return</span> IntervalValue::bottom();</div>
|
|
8041
|
+
<div class="line"><a name="l00690"></a><span class="lineno"> 690</span>  }</div>
|
|
8042
|
+
<div class="line"><a name="l00691"></a><span class="lineno"> 691</span>  <span class="comment">// If either lhs or rhs is top, the result is top</span></div>
|
|
8043
|
+
<div class="line"><a name="l00692"></a><span class="lineno"> 692</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.isTop() || rhs.isTop())</div>
|
|
8044
|
+
<div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  {</div>
|
|
8045
|
+
<div class="line"><a name="l00694"></a><span class="lineno"> 694</span>  <span class="keywordflow">return</span> IntervalValue::top();</div>
|
|
8046
|
+
<div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  }</div>
|
|
8047
|
+
<div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  <span class="keywordflow">else</span></div>
|
|
8048
|
+
<div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  {</div>
|
|
8049
|
+
<div class="line"><a name="l00698"></a><span class="lineno"> 698</span>  <span class="comment">// If both lhs and rhs are numerals (lb = ub), directly compare their values</span></div>
|
|
8050
|
+
<div class="line"><a name="l00699"></a><span class="lineno"> 699</span>  <span class="keywordflow">if</span> (lhs.is_numeral() && rhs.is_numeral())</div>
|
|
8051
|
+
<div class="line"><a name="l00700"></a><span class="lineno"> 700</span>  {</div>
|
|
8052
|
+
<div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  <span class="keywordflow">return</span> lhs.lb().geq(rhs.lb()) ? IntervalValue(1, 1) : IntervalValue(0, 0);</div>
|
|
8053
|
+
<div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  }</div>
|
|
8054
|
+
<div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  <span class="keywordflow">else</span></div>
|
|
8055
|
+
<div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  {</div>
|
|
8056
|
+
<div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  <span class="comment">// Return [1,1] means lhs is totally greater than or equal to rhs</span></div>
|
|
8057
|
+
<div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  <span class="comment">// When lhs.lb >= rhs.ub, e.g., lhs:[2, 3] rhs:[1, 2]</span></div>
|
|
8058
|
+
<div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  <span class="comment">// lhs.lb(2) >= rhs.ub(2)</span></div>
|
|
8059
|
+
<div class="line"><a name="l00708"></a><span class="lineno"> 708</span>  <span class="keywordflow">if</span> (lhs.lb().geq(rhs.ub()))</div>
|
|
8060
|
+
<div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  {</div>
|
|
8061
|
+
<div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  <span class="keywordflow">return</span> IntervalValue(1, 1);</div>
|
|
8062
|
+
<div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  }</div>
|
|
8063
|
+
<div class="line"><a name="l00712"></a><span class="lineno"> 712</span>  <span class="comment">// Return [0,0] means lhs is totally impossible to be greater than or equal to rhs</span></div>
|
|
8064
|
+
<div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  <span class="comment">// i.e., lhs is totally less than rhs</span></div>
|
|
8065
|
+
<div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  <span class="comment">// When lhs.ub < rhs.lb, e.g., lhs:[1, 2] rhs:[3, 4]</span></div>
|
|
8066
|
+
<div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  <span class="comment">// lhs.ub(2) < rhs.lb(3)</span></div>
|
|
8067
|
+
<div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  <span class="comment">// It means lhs.ub() < rhs.lb()</span></div>
|
|
8068
|
+
<div class="line"><a name="l00717"></a><span class="lineno"> 717</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!lhs.ub().geq(rhs.lb()))</div>
|
|
8069
|
+
<div class="line"><a name="l00718"></a><span class="lineno"> 718</span>  {</div>
|
|
8070
|
+
<div class="line"><a name="l00719"></a><span class="lineno"> 719</span>  <span class="keywordflow">return</span> IntervalValue(0, 0);</div>
|
|
8071
|
+
<div class="line"><a name="l00720"></a><span class="lineno"> 720</span>  }</div>
|
|
8072
|
+
<div class="line"><a name="l00721"></a><span class="lineno"> 721</span>  <span class="comment">// For other cases, lhs can be greater than or equal to rhs or not, depending on the values</span></div>
|
|
8073
|
+
<div class="line"><a name="l00722"></a><span class="lineno"> 722</span>  <span class="comment">// e.g., lhs: [2,4], rhs: [1,3],</span></div>
|
|
8074
|
+
<div class="line"><a name="l00723"></a><span class="lineno"> 723</span>  <span class="comment">// lhs can be greater than or equal to rhs if lhs is 3, rhs is 2.</span></div>
|
|
8075
|
+
<div class="line"><a name="l00724"></a><span class="lineno"> 724</span>  <span class="comment">// lhs can also not be greater than or equal to rhs if lhs is 2 and rhs is 3</span></div>
|
|
8076
|
+
<div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  <span class="keywordflow">else</span></div>
|
|
8077
|
+
<div class="line"><a name="l00726"></a><span class="lineno"> 726</span>  {</div>
|
|
8078
|
+
<div class="line"><a name="l00727"></a><span class="lineno"> 727</span>  <span class="keywordflow">return</span> IntervalValue(0, 1);</div>
|
|
8079
|
+
<div class="line"><a name="l00728"></a><span class="lineno"> 728</span>  }</div>
|
|
8080
|
+
<div class="line"><a name="l00729"></a><span class="lineno"> 729</span>  }</div>
|
|
8081
|
+
<div class="line"><a name="l00730"></a><span class="lineno"> 730</span>  }</div>
|
|
8082
|
+
<div class="line"><a name="l00731"></a><span class="lineno"> 731</span> }</div>
|
|
8047
8083
|
</div><!-- fragment -->
|
|
8048
8084
|
</div>
|
|
8049
8085
|
</div>
|
|
@@ -8083,40 +8119,40 @@ template<typename F , typename S > </div>
|
|
|
8083
8119
|
|
|
8084
8120
|
<p>Left binary shift of IntervalValues. </p>
|
|
8085
8121
|
|
|
8086
|
-
<p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#
|
|
8087
|
-
<div class="fragment"><div class="line"><a name="
|
|
8088
|
-
<div class="line"><a name="
|
|
8089
|
-
<div class="line"><a name="
|
|
8090
|
-
<div class="line"><a name="
|
|
8091
|
-
<div class="line"><a name="
|
|
8092
|
-
<div class="line"><a name="
|
|
8093
|
-
<div class="line"><a name="
|
|
8094
|
-
<div class="line"><a name="
|
|
8095
|
-
<div class="line"><a name="
|
|
8096
|
-
<div class="line"><a name="
|
|
8097
|
-
<div class="line"><a name="
|
|
8098
|
-
<div class="line"><a name="
|
|
8099
|
-
<div class="line"><a name="
|
|
8100
|
-
<div class="line"><a name="
|
|
8101
|
-
<div class="line"><a name="
|
|
8102
|
-
<div class="line"><a name="
|
|
8103
|
-
<div class="line"><a name="
|
|
8104
|
-
<div class="line"><a name="
|
|
8105
|
-
<div class="line"><a name="
|
|
8106
|
-
<div class="line"><a name="
|
|
8107
|
-
<div class="line"><a name="
|
|
8108
|
-
<div class="line"><a name="
|
|
8109
|
-
<div class="line"><a name="
|
|
8110
|
-
<div class="line"><a name="
|
|
8111
|
-
<div class="line"><a name="
|
|
8112
|
-
<div class="line"><a name="
|
|
8113
|
-
<div class="line"><a name="
|
|
8114
|
-
<div class="line"><a name="
|
|
8115
|
-
<div class="line"><a name="
|
|
8116
|
-
<div class="line"><a name="
|
|
8117
|
-
<div class="line"><a name="
|
|
8118
|
-
<div class="line"><a name="
|
|
8119
|
-
<div class="line"><a name="
|
|
8122
|
+
<p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00805">805</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
|
|
8123
|
+
<div class="fragment"><div class="line"><a name="l00806"></a><span class="lineno"> 806</span> {</div>
|
|
8124
|
+
<div class="line"><a name="l00807"></a><span class="lineno"> 807</span>  <span class="comment">//TODO: implement >></span></div>
|
|
8125
|
+
<div class="line"><a name="l00808"></a><span class="lineno"> 808</span>  <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div>
|
|
8126
|
+
<div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  <span class="keywordflow">return</span> IntervalValue::bottom();</div>
|
|
8127
|
+
<div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.isTop() && rhs.isTop())</div>
|
|
8128
|
+
<div class="line"><a name="l00811"></a><span class="lineno"> 811</span>  <span class="keywordflow">return</span> IntervalValue::top();</div>
|
|
8129
|
+
<div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  <span class="keywordflow">else</span></div>
|
|
8130
|
+
<div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  {</div>
|
|
8131
|
+
<div class="line"><a name="l00814"></a><span class="lineno"> 814</span>  IntervalValue shift = rhs;</div>
|
|
8132
|
+
<div class="line"><a name="l00815"></a><span class="lineno"> 815</span>  shift.meet_with(IntervalValue(0, IntervalValue::plus_infinity()));</div>
|
|
8133
|
+
<div class="line"><a name="l00816"></a><span class="lineno"> 816</span>  <span class="keywordflow">if</span> (shift.isBottom())</div>
|
|
8134
|
+
<div class="line"><a name="l00817"></a><span class="lineno"> 817</span>  <span class="keywordflow">return</span> IntervalValue::bottom();</div>
|
|
8135
|
+
<div class="line"><a name="l00818"></a><span class="lineno"> 818</span>  <span class="keywordflow">if</span> (lhs.contains(0))</div>
|
|
8136
|
+
<div class="line"><a name="l00819"></a><span class="lineno"> 819</span>  {</div>
|
|
8137
|
+
<div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  IntervalValue l(lhs.lb(), -1);</div>
|
|
8138
|
+
<div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  IntervalValue u(1, lhs.ub());</div>
|
|
8139
|
+
<div class="line"><a name="l00822"></a><span class="lineno"> 822</span>  IntervalValue tmp = l >> rhs;</div>
|
|
8140
|
+
<div class="line"><a name="l00823"></a><span class="lineno"> 823</span>  tmp.join_with(u >> rhs);</div>
|
|
8141
|
+
<div class="line"><a name="l00824"></a><span class="lineno"> 824</span>  tmp.join_with(IntervalValue(0));</div>
|
|
8142
|
+
<div class="line"><a name="l00825"></a><span class="lineno"> 825</span>  <span class="keywordflow">return</span> tmp;</div>
|
|
8143
|
+
<div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  }</div>
|
|
8144
|
+
<div class="line"><a name="l00827"></a><span class="lineno"> 827</span>  <span class="keywordflow">else</span></div>
|
|
8145
|
+
<div class="line"><a name="l00828"></a><span class="lineno"> 828</span>  {</div>
|
|
8146
|
+
<div class="line"><a name="l00829"></a><span class="lineno"> 829</span>  NumericLiteral ll = lhs.lb() >> shift.lb();</div>
|
|
8147
|
+
<div class="line"><a name="l00830"></a><span class="lineno"> 830</span>  NumericLiteral lu = lhs.lb() >> shift.ub();</div>
|
|
8148
|
+
<div class="line"><a name="l00831"></a><span class="lineno"> 831</span>  NumericLiteral ul = lhs.ub() >> shift.lb();</div>
|
|
8149
|
+
<div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  NumericLiteral uu = lhs.ub() >> shift.ub();</div>
|
|
8150
|
+
<div class="line"><a name="l00833"></a><span class="lineno"> 833</span>  std::vector<NumericLiteral> vec{ll, lu, ul, uu};</div>
|
|
8151
|
+
<div class="line"><a name="l00834"></a><span class="lineno"> 834</span>  <span class="keywordflow">return</span> IntervalValue(NumericLiteral::min(vec),</div>
|
|
8152
|
+
<div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  NumericLiteral::max(vec));</div>
|
|
8153
|
+
<div class="line"><a name="l00836"></a><span class="lineno"> 836</span>  }</div>
|
|
8154
|
+
<div class="line"><a name="l00837"></a><span class="lineno"> 837</span>  }</div>
|
|
8155
|
+
<div class="line"><a name="l00838"></a><span class="lineno"> 838</span> }</div>
|
|
8120
8156
|
</div><!-- fragment -->
|
|
8121
8157
|
</div>
|
|
8122
8158
|
</div>
|
|
@@ -8156,33 +8192,33 @@ template<typename F , typename S > </div>
|
|
|
8156
8192
|
|
|
8157
8193
|
<p>Bitwise XOR of IntervalValues. </p>
|
|
8158
8194
|
|
|
8159
|
-
<p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#
|
|
8160
|
-
<div class="fragment"><div class="line"><a name="
|
|
8161
|
-
<div class="line"><a name="
|
|
8162
|
-
<div class="line"><a name="
|
|
8163
|
-
<div class="line"><a name="
|
|
8164
|
-
<div class="line"><a name="
|
|
8165
|
-
<div class="line"><a name="
|
|
8166
|
-
<div class="line"><a name="
|
|
8167
|
-
<div class="line"><a name="
|
|
8168
|
-
<div class="line"><a name="
|
|
8169
|
-
<div class="line"><a name="
|
|
8170
|
-
<div class="line"><a name="
|
|
8171
|
-
<div class="line"><a name="
|
|
8172
|
-
<div class="line"><a name="
|
|
8173
|
-
<div class="line"><a name="
|
|
8174
|
-
<div class="line"><a name="
|
|
8175
|
-
<div class="line"><a name="
|
|
8176
|
-
<div class="line"><a name="
|
|
8177
|
-
<div class="line"><a name="
|
|
8178
|
-
<div class="line"><a name="
|
|
8179
|
-
<div class="line"><a name="
|
|
8180
|
-
<div class="line"><a name="
|
|
8181
|
-
<div class="line"><a name="
|
|
8182
|
-
<div class="line"><a name="
|
|
8183
|
-
<div class="line"><a name="
|
|
8184
|
-
<div class="line"><a name="
|
|
8185
|
-
<div class="line"><a name="
|
|
8195
|
+
<p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00897">897</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
|
|
8196
|
+
<div class="fragment"><div class="line"><a name="l00898"></a><span class="lineno"> 898</span> {</div>
|
|
8197
|
+
<div class="line"><a name="l00899"></a><span class="lineno"> 899</span>  <span class="keyword">auto</span> next_power_of_2 = [](<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> num)</div>
|
|
8198
|
+
<div class="line"><a name="l00900"></a><span class="lineno"> 900</span>  {</div>
|
|
8199
|
+
<div class="line"><a name="l00901"></a><span class="lineno"> 901</span>  <span class="keywordtype">int</span> i = 1;</div>
|
|
8200
|
+
<div class="line"><a name="l00902"></a><span class="lineno"> 902</span>  <span class="keywordflow">while</span> ((num >> i) != 0)</div>
|
|
8201
|
+
<div class="line"><a name="l00903"></a><span class="lineno"> 903</span>  {</div>
|
|
8202
|
+
<div class="line"><a name="l00904"></a><span class="lineno"> 904</span>  ++i;</div>
|
|
8203
|
+
<div class="line"><a name="l00905"></a><span class="lineno"> 905</span>  }</div>
|
|
8204
|
+
<div class="line"><a name="l00906"></a><span class="lineno"> 906</span>  <span class="keywordflow">return</span> 1 << i;</div>
|
|
8205
|
+
<div class="line"><a name="l00907"></a><span class="lineno"> 907</span>  };</div>
|
|
8206
|
+
<div class="line"><a name="l00908"></a><span class="lineno"> 908</span>  <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div>
|
|
8207
|
+
<div class="line"><a name="l00909"></a><span class="lineno"> 909</span>  <span class="keywordflow">return</span> IntervalValue::bottom();</div>
|
|
8208
|
+
<div class="line"><a name="l00910"></a><span class="lineno"> 910</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.is_numeral() && rhs.is_numeral())</div>
|
|
8209
|
+
<div class="line"><a name="l00911"></a><span class="lineno"> 911</span>  <span class="keywordflow">return</span> IntervalValue(lhs.lb() ^ rhs.lb());</div>
|
|
8210
|
+
<div class="line"><a name="l00912"></a><span class="lineno"> 912</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.lb().getNumeral() >= 0 && !lhs.ub().is_infinity() &&</div>
|
|
8211
|
+
<div class="line"><a name="l00913"></a><span class="lineno"> 913</span>  rhs.lb().getNumeral() >= 0 && !rhs.ub().is_infinity())</div>
|
|
8212
|
+
<div class="line"><a name="l00914"></a><span class="lineno"> 914</span>  {</div>
|
|
8213
|
+
<div class="line"><a name="l00915"></a><span class="lineno"> 915</span>  <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> m = std::max(lhs.ub().getNumeral(), rhs.ub().getNumeral());</div>
|
|
8214
|
+
<div class="line"><a name="l00916"></a><span class="lineno"> 916</span>  <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>
|
|
8215
|
+
<div class="line"><a name="l00917"></a><span class="lineno"> 917</span>  <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>
|
|
8216
|
+
<div class="line"><a name="l00918"></a><span class="lineno"> 918</span>  }</div>
|
|
8217
|
+
<div class="line"><a name="l00919"></a><span class="lineno"> 919</span>  <span class="keywordflow">else</span></div>
|
|
8218
|
+
<div class="line"><a name="l00920"></a><span class="lineno"> 920</span>  {</div>
|
|
8219
|
+
<div class="line"><a name="l00921"></a><span class="lineno"> 921</span>  <span class="keywordflow">return</span> IntervalValue::top();</div>
|
|
8220
|
+
<div class="line"><a name="l00922"></a><span class="lineno"> 922</span>  }</div>
|
|
8221
|
+
<div class="line"><a name="l00923"></a><span class="lineno"> 923</span> }</div>
|
|
8186
8222
|
</div><!-- fragment -->
|
|
8187
8223
|
</div>
|
|
8188
8224
|
</div>
|
|
@@ -8222,33 +8258,33 @@ template<typename F , typename S > </div>
|
|
|
8222
8258
|
|
|
8223
8259
|
<p>Bitwise OR of IntervalValues. </p>
|
|
8224
8260
|
|
|
8225
|
-
<p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#
|
|
8226
|
-
<div class="fragment"><div class="line"><a name="
|
|
8227
|
-
<div class="line"><a name="
|
|
8228
|
-
<div class="line"><a name="
|
|
8229
|
-
<div class="line"><a name="
|
|
8230
|
-
<div class="line"><a name="
|
|
8231
|
-
<div class="line"><a name="
|
|
8232
|
-
<div class="line"><a name="
|
|
8233
|
-
<div class="line"><a name="
|
|
8234
|
-
<div class="line"><a name="
|
|
8235
|
-
<div class="line"><a name="
|
|
8236
|
-
<div class="line"><a name="
|
|
8237
|
-
<div class="line"><a name="
|
|
8238
|
-
<div class="line"><a name="
|
|
8239
|
-
<div class="line"><a name="
|
|
8240
|
-
<div class="line"><a name="
|
|
8241
|
-
<div class="line"><a name="
|
|
8242
|
-
<div class="line"><a name="
|
|
8243
|
-
<div class="line"><a name="
|
|
8244
|
-
<div class="line"><a name="
|
|
8245
|
-
<div class="line"><a name="
|
|
8246
|
-
<div class="line"><a name="
|
|
8247
|
-
<div class="line"><a name="
|
|
8248
|
-
<div class="line"><a name="
|
|
8249
|
-
<div class="line"><a name="
|
|
8250
|
-
<div class="line"><a name="
|
|
8251
|
-
<div class="line"><a name="
|
|
8261
|
+
<p class="definition">Definition at line <a class="el" href="IntervalValue_8h_source.html#l00868">868</a> of file <a class="el" href="IntervalValue_8h_source.html">IntervalValue.h</a>.</p>
|
|
8262
|
+
<div class="fragment"><div class="line"><a name="l00869"></a><span class="lineno"> 869</span> {</div>
|
|
8263
|
+
<div class="line"><a name="l00870"></a><span class="lineno"> 870</span>  <span class="keyword">auto</span> next_power_of_2 = [](<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> num)</div>
|
|
8264
|
+
<div class="line"><a name="l00871"></a><span class="lineno"> 871</span>  {</div>
|
|
8265
|
+
<div class="line"><a name="l00872"></a><span class="lineno"> 872</span>  <span class="keywordtype">int</span> i = 1;</div>
|
|
8266
|
+
<div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  <span class="keywordflow">while</span> ((num >> i) != 0)</div>
|
|
8267
|
+
<div class="line"><a name="l00874"></a><span class="lineno"> 874</span>  {</div>
|
|
8268
|
+
<div class="line"><a name="l00875"></a><span class="lineno"> 875</span>  ++i;</div>
|
|
8269
|
+
<div class="line"><a name="l00876"></a><span class="lineno"> 876</span>  }</div>
|
|
8270
|
+
<div class="line"><a name="l00877"></a><span class="lineno"> 877</span>  <span class="keywordflow">return</span> 1 << i;</div>
|
|
8271
|
+
<div class="line"><a name="l00878"></a><span class="lineno"> 878</span>  };</div>
|
|
8272
|
+
<div class="line"><a name="l00879"></a><span class="lineno"> 879</span>  <span class="keywordflow">if</span> (lhs.isBottom() || rhs.isBottom())</div>
|
|
8273
|
+
<div class="line"><a name="l00880"></a><span class="lineno"> 880</span>  <span class="keywordflow">return</span> IntervalValue::bottom();</div>
|
|
8274
|
+
<div class="line"><a name="l00881"></a><span class="lineno"> 881</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.is_numeral() && rhs.is_numeral())</div>
|
|
8275
|
+
<div class="line"><a name="l00882"></a><span class="lineno"> 882</span>  <span class="keywordflow">return</span> IntervalValue(lhs.lb() | rhs.lb());</div>
|
|
8276
|
+
<div class="line"><a name="l00883"></a><span class="lineno"> 883</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs.lb().getNumeral() >= 0 && !lhs.ub().is_infinity() &&</div>
|
|
8277
|
+
<div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  rhs.lb().getNumeral() >= 0 && !rhs.ub().is_infinity())</div>
|
|
8278
|
+
<div class="line"><a name="l00885"></a><span class="lineno"> 885</span>  {</div>
|
|
8279
|
+
<div class="line"><a name="l00886"></a><span class="lineno"> 886</span>  <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> m = std::max(lhs.ub().getNumeral(), rhs.ub().getNumeral());</div>
|
|
8280
|
+
<div class="line"><a name="l00887"></a><span class="lineno"> 887</span>  <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>
|
|
8281
|
+
<div class="line"><a name="l00888"></a><span class="lineno"> 888</span>  <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>
|
|
8282
|
+
<div class="line"><a name="l00889"></a><span class="lineno"> 889</span>  }</div>
|
|
8283
|
+
<div class="line"><a name="l00890"></a><span class="lineno"> 890</span>  <span class="keywordflow">else</span></div>
|
|
8284
|
+
<div class="line"><a name="l00891"></a><span class="lineno"> 891</span>  {</div>
|
|
8285
|
+
<div class="line"><a name="l00892"></a><span class="lineno"> 892</span>  <span class="keywordflow">return</span> IntervalValue::top();</div>
|
|
8286
|
+
<div class="line"><a name="l00893"></a><span class="lineno"> 893</span>  }</div>
|
|
8287
|
+
<div class="line"><a name="l00894"></a><span class="lineno"> 894</span> }</div>
|
|
8252
8288
|
</div><!-- fragment -->
|
|
8253
8289
|
</div>
|
|
8254
8290
|
</div>
|
|
@@ -8680,7 +8716,7 @@ template<typename GraphType > </div>
|
|
|
8680
8716
|
<div class="ttc" id="aSVFFileSystem_8h_html_a3b65d8dd2f9077c4036304ea0ca474ef"><div class="ttname"><a href="SVFFileSystem_8h.html#a3b65d8dd2f9077c4036304ea0ca474ef">ABORT_IFNOT</a></div><div class="ttdeci">#define ABORT_IFNOT(condition, reason)</div><div class="ttdef"><b>Definition:</b> <a href="SVFFileSystem_8h_source.html#l00039">SVFFileSystem.h:39</a></div></div>
|
|
8681
8717
|
<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>
|
|
8682
8718
|
<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#l00080">BasicTypes.h:80</a></div></div>
|
|
8683
|
-
<div class="ttc" id="anamespaceSVF_html_af95793adab8fb9aa19e19027e73372a6"><div class="ttname"><a href="namespaceSVF.html#af95793adab8fb9aa19e19027e73372a6">SVF::operator<<</a></div><div class="ttdeci">IntervalValue operator<<(const IntervalValue &lhs, const IntervalValue &rhs)</div><div class="ttdoc">Left binary shift of IntervalValues.</div><div class="ttdef"><b>Definition:</b> <a href="IntervalValue_8h_source.html#
|
|
8719
|
+
<div class="ttc" id="anamespaceSVF_html_af95793adab8fb9aa19e19027e73372a6"><div class="ttname"><a href="namespaceSVF.html#af95793adab8fb9aa19e19027e73372a6">SVF::operator<<</a></div><div class="ttdeci">IntervalValue operator<<(const IntervalValue &lhs, const IntervalValue &rhs)</div><div class="ttdoc">Left binary shift of IntervalValues.</div><div class="ttdef"><b>Definition:</b> <a href="IntervalValue_8h_source.html#l00784">IntervalValue.h:784</a></div></div>
|
|
8684
8720
|
<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#l00613">SVFType.h:613</a></div></div>
|
|
8685
8721
|
<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>
|
|
8686
8722
|
<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#l00605">SVFType.h:605</a></div></div>
|