@@ -80,6 +80,72 @@ BOOST_AUTO_TEST_CASE(feefrac_operators)
80
80
FeeFrac max_fee2{1 , 1 };
81
81
BOOST_CHECK (max_fee >= max_fee2);
82
82
83
+ // Examples where the cross-product only differs in the bottom 15 bits.
84
+ BOOST_CHECK (FeeFrac (-354472897251355648 , 296578183 ) >> FeeFrac (-499408498440516581 , 417842002 ));
85
+ BOOST_CHECK (FeeFrac (-370259345901664256 , 575268238 ) >> FeeFrac (-403083894849742659 , 626267411 ));
86
+ BOOST_CHECK (FeeFrac (-4790828124043530874 , 260938616 ) >> FeeFrac (-6785608372001660928 , 369586888 ));
87
+ BOOST_CHECK (FeeFrac (2052931238304952064 , 1470459185 ) >> FeeFrac (1216033443768841520 , 871011904 ));
88
+ BOOST_CHECK (FeeFrac (3328196932075804 , 13968015 ) >> FeeFrac (26663087684063549 , 111901554 ));
89
+ BOOST_CHECK (FeeFrac (649845842452623488 , 705513551 ) >> FeeFrac (12357483567011782 , 13416062 ));
90
+ BOOST_CHECK (FeeFrac (-33570210247385060 , 1158347843 ) << FeeFrac (-29357491397710948 , 1012987008 ));
91
+ BOOST_CHECK (FeeFrac (13516860620760744 , 75363309 ) << FeeFrac (65117457547567521 , 363062638 ));
92
+ BOOST_CHECK (FeeFrac (127024547014822368 , 10966520 ) >> FeeFrac (4591008642845568660 , 396359517 ));
93
+ BOOST_CHECK (FeeFrac (641206262541017349 , 1601111971 ) >> FeeFrac (857646369645534208 , 2141569647 ));
94
+ BOOST_CHECK (FeeFrac (319248918395533404 , 890947597 ) << FeeFrac (24513477590719404 , 68411270 ));
95
+ BOOST_CHECK (FeeFrac (-416336398673581514 , 645275698 ) << FeeFrac (-19608809251366772 , 30391501 ));
96
+ BOOST_CHECK (FeeFrac (24877589752415396 , 31056925 ) >> FeeFrac (1545275773492956040 , 1929106247 ));
97
+ BOOST_CHECK (FeeFrac (5450186678047674969 , 799212602 ) >> FeeFrac (3144100200355222528 , 461049254 ));
98
+ BOOST_CHECK (FeeFrac (-6016636089170922 , 70085349 ) << FeeFrac (-67775518923202977 , 789489480 ));
99
+ BOOST_CHECK (FeeFrac (1195652256495478170 , 1894547911 ) << FeeFrac (115565133119112560 , 183116521 ));
100
+ BOOST_CHECK (FeeFrac (538333091032708 , 4942329 ) << FeeFrac (226341450249867987 , 2077995821 ));
101
+ BOOST_CHECK (FeeFrac (2605011908834424255 , 185052093 ) >> FeeFrac (175076062790674176 , 12436869 ));
102
+ BOOST_CHECK (FeeFrac (-4243705771917119569 , 1848575776 ) >> FeeFrac (-447774047484587648 , 195052226 ));
103
+ BOOST_CHECK (FeeFrac (35701633923808156 , 6812845 ) << FeeFrac (5427797217432359344 , 1035771674 ));
104
+ BOOST_CHECK (FeeFrac (-140501801028154240 , 53635742 ) >> FeeFrac (-335303893132483452 , 128000303 ));
105
+ BOOST_CHECK (FeeFrac (131884519785687286 , 34291038 ) << FeeFrac (1925475179304749056 , 500639064 ));
106
+ BOOST_CHECK (FeeFrac (-4295973306120651264 , 344500120 ) << FeeFrac (-6678848995410997318 , 535586261 ));
107
+ BOOST_CHECK (FeeFrac (-200335923062347948 , 79853205 ) >> FeeFrac (-52131062654134512 , 20779261 ));
108
+ BOOST_CHECK (FeeFrac (4359277869142369574 , 1564739848 ) << FeeFrac (94311916336558496 , 33852766 ));
109
+ BOOST_CHECK (FeeFrac (6494990158669444 , 143815522 ) << FeeFrac (10296636879881354 , 227993603 ));
110
+ BOOST_CHECK (FeeFrac (-290844406386311935 , 337077230 ) >> FeeFrac (-272464809536509 , 315776 ));
111
+ BOOST_CHECK (FeeFrac (-376120311989284236 , 1237996701 ) >> FeeFrac (-252395657734714400 , 830758089 ));
112
+ BOOST_CHECK (FeeFrac (7087461507220493307 , 121324193 ) >> FeeFrac (511024007272958400 , 8747783 ));
113
+ BOOST_CHECK (FeeFrac (793359042451610 , 320303 ) << FeeFrac (36760933975599752 , 14841499 ));
114
+ BOOST_CHECK (FeeFrac (79385399933498354 , 817170152 ) << FeeFrac (100449099836562208 , 1033993735 ));
115
+ BOOST_CHECK (FeeFrac (-807972341776901574 , 107767562 ) >> FeeFrac (-5590827257436576 , 745706 ));
116
+ // Examples where the feerates are equal but the size differs.
117
+ BOOST_CHECK (FeeFrac (-1584810348896560566 , 327515242 ) > FeeFrac (-8716456918931083113 , 1801333831 ));
118
+ BOOST_CHECK (FeeFrac (-4887684800117705998 , 1882150502 ) < FeeFrac (-4858816310340140431 , 1871033819 ));
119
+ BOOST_CHECK (FeeFrac (-7881443858457881763 , 1642889298 ) < FeeFrac (-5254295905638587842 , 1095259532 ));
120
+ BOOST_CHECK (FeeFrac (2685340232023340429 , 1119727033 ) < FeeFrac (2646982757659219673 , 1103732821 ));
121
+ BOOST_CHECK (FeeFrac (-1711385124585470896 , 581257708 ) > FeeFrac (-4084120055206214252 , 1387137371 ));
122
+ BOOST_CHECK (FeeFrac (-5684714567314500286 , 1708665910 ) < FeeFrac (-653908575815481287 , 196546595 ));
123
+ BOOST_CHECK (FeeFrac (8772383570586284440 , 983729280 ) < FeeFrac (5472170594784396107 , 613645584 ));
124
+ BOOST_CHECK (FeeFrac (3081167191432569610 , 1801541287 ) < FeeFrac (2200833708166121150 , 1286815205 ));
125
+ BOOST_CHECK (FeeFrac (6921098537792531201 , 1041310938 ) > FeeFrac (8160293199607343738 , 1227753444 ));
126
+ BOOST_CHECK (FeeFrac (5289492385476996884 , 2097887228 ) < FeeFrac (2644746192738498442 , 1048943614 ));
127
+ BOOST_CHECK (FeeFrac (5273655003530997398 , 1507023568 ) < FeeFrac (2636827501765498699 , 753511784 ));
128
+ BOOST_CHECK (FeeFrac (3279241279119664898 , 752916749 ) > FeeFrac (6023058206677580170 , 1382899585 ));
129
+ BOOST_CHECK (FeeFrac (8505386724409749466 , 300586338 ) > FeeFrac (8529269611595717832 , 301430376 ));
130
+ BOOST_CHECK (FeeFrac (-9104719062419362730 , 1968521528 ) < FeeFrac (-8731540278474574540 , 1887836944 ));
131
+ BOOST_CHECK (FeeFrac (-2827100374609359868 , 1702089358 ) < FeeFrac (-789159920519790638 , 475123103 ));
132
+ BOOST_CHECK (FeeFrac (6291411259389436093 , 2095567569 ) < FeeFrac (5533671495699431157 , 1843176681 ));
133
+ BOOST_CHECK (FeeFrac (3440530559122240728 , 1715443266 ) < FeeFrac (1146843519707413576 , 571814422 ));
134
+ BOOST_CHECK (FeeFrac (-743009339440859554 , 134535002 ) > FeeFrac (-2507199002546742830 , 453972790 ));
135
+ BOOST_CHECK (FeeFrac (-3309056397562279573 , 1060138915 ) < FeeFrac (-1504116544346490715 , 481881325 ));
136
+ BOOST_CHECK (FeeFrac (479769836453885692 , 1799173233 ) < FeeFrac (388661360234135580 , 1457509545 ));
137
+ BOOST_CHECK (FeeFrac (-1801588419648891016 , 1151633041 ) < FeeFrac (-692918622941881160 , 442935785 ));
138
+ BOOST_CHECK (FeeFrac (6052955139372998913 , 1369555336 ) > FeeFrac (9120891305904518910 , 2063713520 ));
139
+ BOOST_CHECK (FeeFrac (3653799071540648982 , 766820217 ) > FeeFrac (8525531166928180958 , 1789247173 ));
140
+ BOOST_CHECK (FeeFrac (649279493057845653 , 105395619 ) > FeeFrac (8512599188933629193 , 1381825039 ));
141
+ BOOST_CHECK (FeeFrac (-4490487179793516989 , 705546057 ) < FeeFrac (-3326286571430217221 , 522626673 ));
142
+ BOOST_CHECK (FeeFrac (-846521385430655591 , 41957026 ) > FeeFrac (-2539564156291966773 , 125871078 ));
143
+ BOOST_CHECK (FeeFrac (842297095754801472 , 120147376 ) > FeeFrac (6527802492099711408 , 931142164 ));
144
+ BOOST_CHECK (FeeFrac (8611112100042123243 , 979835103 ) < FeeFrac (6235299266619945181 , 709497801 ));
145
+ BOOST_CHECK (FeeFrac (-1933385488281868769 , 1061490841 ) > FeeFrac (-3866770976563737538 , 2122981682 ));
146
+ BOOST_CHECK (FeeFrac (4186674688315078310 , 1085875405 ) > FeeFrac (4550357009271024484 , 1180201742 ));
147
+ BOOST_CHECK (FeeFrac (-2377945591359133241 , 17911555 ) > FeeFrac (-4755891182718266482 , 35823110 ));
148
+ BOOST_CHECK (FeeFrac (1957443247528472573 , 1188784417 ) < FeeFrac (931087540842550549 , 565463321 ));
83
149
}
84
150
85
151
BOOST_AUTO_TEST_CASE (build_diagram_test)
0 commit comments