<div class="notebook"> <div class="nb-cell markdown" name="md1"> See https://swi-prolog.discourse.group/t/rounding-error-in-2/5795/57?u=jan `cases.pl` </div> <div class="nb-cell program" data-background="true" data-singleline="true" name="p3"> /* * float/1 test cases. * * Warranty & Liability * To the extent permitted by applicable law and unless explicitly * otherwise agreed upon, XLOG Technologies AG make_bdds no warranties * regarding the provided information. XLOG Technologies AG assumes * no liability that any problems might be solved with the information * provided by XLOG Technologies AG. * * Rights & License * All industrial property rights regarding the information - copyright * and patent rights in particular - are the sole property of XLOG * Technologies AG. If the company was not the originator of some * excerpts, XLOG Technologies AG has at least obtained the right to * reproduce, change and translate the information. * * Reproduction is restricted to the whole unaltered document. Reproduction * of the information is only allowed for non-commercial uses. Selling, * giving away or letting of the execution of the library is prohibited. * The library can be distributed as part of your applications and libraries * for execution provided this comment remains unchanged. * * Restrictions * Only to be distributed with programs that add significant and primary * functionality to the library. Not to be distributed with additional * software intended to replace any components of the library. * * Trademarks * Jekejeke is a registered trademark of XLOG Technologies AG. */ case(1, -572504891324561953821040518484, -5.7250489132456196E29). case(2, 280023412577711504420391220335, 2.800234125777115E29). case(3, 884996183305110611102854483978, 8.849961833051106E29). case(4, 1251939306673717603656775488197, 1.2519393066737177E30). case(5, -449875364855079040290809561534, -4.4987536485507906E29). case(6, -365777952015451065009345916963, -3.6577795201545106E29). case(7, -588530340068436401009958451824, -5.885303400684364E29). case(8, -605682798375687093485907502188, -6.0568279837568706E29). case(9, -576190322932139524805757938847, -5.761903229321395E29). case(10, 665256044942305586914900221061, 6.652560449423056E29). case(11, 903708759257693245950809178324, 9.037087592576932E29). case(12, 227598011158652767810834603752, 2.2759801115865277E29). case(13, -870795297072787415708976871945, -8.707952970727874E29). case(14, 792897823484258172226154338534, 7.928978234842582E29). case(15, -487525456778755884149075357334, -4.875254567787559E29). case(16, -357858604656307487926603381581, -3.578586046563075E29). case(17, 934093717767124927888345883359, 9.340937177671249E29). case(18, 919313458837171432255168365346, 9.193134588371714E29). case(19, -53363805731123577163276056715, -5.336380573112358E28). case(20, 1003631339621331218319422905816, 1.0036313396213312E30). case(21, -857917587958217360908966029075, -8.579175879582173E29). case(22, -743150374754308815247667767736, -7.431503747543088E29). case(23, -683812377734007942822446296961, -6.838123777340079E29). case(24, 1050666339930798998819259543424, 1.050666339930799E30). case(25, 640946449826546592909262714132, 6.409464498265466E29). case(26, -668609188485634695750478138696, -6.686091884856348E29). case(27, -191111713917072582426362556093, -1.911117139170726E29). case(28, -180692569293471832300233195561, -1.8069256929347183E29). case(29, 290544089590623533362446889799, 2.9054408959062354E29). case(30, 768052855932066325126634806320, 7.680528559320663E29). case(31, -1043824353294897671940315894045, -1.0438243532948976E30). case(32, 1084820623678219703276914183804, 1.0848206236782196E30). case(33, 971115517068352555903050780145, 9.711155170683526E29). case(34, 1033146930635450135438752116697, 1.0331469306354501E30). case(35, 634693359922418689947627280267, 6.346933599224187E29). case(36, 553205773117024379738742153838, 5.532057731170244E29). case(37, -1145901471783087212433955938511, -1.1459014717830872E30). case(38, 821438103950902898652719316383, 8.214381039509029E29). case(39, 1192295566203101424369346699425, 1.1922955662031014E30). case(40, -547928744028842101934519238584, -5.4792874402884214E29). case(41, 1114572320788096672303952463347, 1.1145723207880967E30). case(42, 887649389369181862308791991941, 8.876493893691819E29). case(43, -154055061889943314628525083708, -1.5405506188994332E29). case(44, -1023705430166615732345606130255, -1.0237054301666157E30). case(45, -152041523127351251937984894102, -1.5204152312735125E29). case(46, 453169133583871788104536060339, 4.531691335838718E29). case(47, -170726949792022478064994545890, -1.707269497920225E29). case(48, 128961919195849151281092505989, 1.2896191919584915E29). case(49, -212538178707524603108544911212, -2.125381787075246E29). case(50, -505724155722518439211306640741, -5.057241557225185E29). case(51, 847291644224935882219440539316, 8.472916442249358E29). case(52, 352858589645284373906408853858, 3.5285858964528435E29). case(53, 20881877755047878220560796507, 2.088187775504788E28). case(54, 1265516516162214390926565632178, 1.2655165161622145E30). case(55, 993522280064219581736084431687, 9.935222800642195E29). case(56, 75764667878560170799604108596, 7.576466787856017E28). case(57, -130588608059567762986914811411, -1.3058860805956777E29). case(58, -666634503800005486879207814786, -6.666345038000055E29). case(59, -835172899066002283224397528565, -8.351728990660023E29). case(60, 556298000404689158023528613408, 5.5629800040468915E29). case(61, 128498354673732459294213897369, 1.2849835467373245E29). case(62, -963980553690368558493053883353, -9.639805536903685E29). case(63, -328799896596502961459396480587, -3.2879989659650294E29). case(64, -516147435860622128684130199951, -5.1614743586062215E29). case(65, -429037532085123330349389662572, -4.2903753208512334E29). case(66, -359041380181544432147436776936, -3.5904138018154444E29). case(67, -118124254337152599915439550260, -1.181242543371526E29). case(68, -292265192347773142676809676370, -2.9226519234777314E29). case(69, -1083925079845144145355053798885, -1.0839250798451442E30). case(70, 605286671178483059865243854519, 6.052866711784831E29). case(71, 810759495426620314400519831176, 8.107594954266203E29). case(72, -1077540567232254842938873714614, -1.0775405672322548E30). case(73, 760033482675340809267658591691, 7.600334826753409E29). case(74, 1130545381217525477104806536303, 1.1305453812175254E30). case(75, 398109211984738431032591360809, 3.981092119847384E29). case(76, 1017526924504070166625296893813, 1.0175269245040701E30). case(77, -955841325808695975377357287933, -9.55841325808696E29). case(78, -402566361684739041732802151039, -4.0256636168473904E29). case(79, 200668466941997052961916732121, 2.0066846694199704E29). case(80, 531646406373802988045873163690, 5.31646406373803E29). case(81, -248024589390979958996394560463, -2.4802458939097996E29). case(82, -301995822836436916568527597318, -3.019958228364369E29). case(83, 11251189223341180762726887948, 1.1251189223341182E28). case(84, -1077209598886858772972921687613, -1.0772095988868588E30). case(85, 1159059155956151759177592047234, 1.1590591559561518E30). case(86, 269238675117473432082193121567, 2.692386751174734E29). case(87, -478779285280276817151374410827, -4.787792852802768E29). case(88, -333216486710113986149343722165, -3.33216486710114E29). case(89, -397169405432851678198560209202, -3.971694054328517E29). case(90, -141476889796323063954377676249, -1.4147688979632306E29). case(91, 476941971736491102888207366789, 4.769419717364911E29). case(92, -750038607837142281041772326145, -7.500386078371423E29). case(93, -267560636541106466963737145270, -2.6756063654110648E29). case(94, 176723412746677956609291923375, 1.7672341274667797E29). case(95, 945929517641705469801968207908, 9.459295176417055E29). case(96, 1109441325518511890547438208437, 1.1094413255185119E30). case(97, -933127267704408387740192052052, -9.331272677044084E29). case(98, -514640056898583497323938549736, -5.146400568985835E29). case(99, 366725791286497182844884214960, 3.6672579128649716E29). case(100, 696113111032724515826593063483, 6.961131110327246E29). case2(1, 633825300114114700748351602688, 6.338253001141147E29). case2(2, 316912650057057350374175801344, 3.1691265005705735E29). case2(3, 792281625142643375935439503360, 7.922816251426434E29). case2(4, -1188422437713965063903159255040, -1.188422437713965E30). case2(5, -198070406285660843983859875840, -1.9807040628566084E29). case2(6, 653632340742680785146737590272, 6.536323407426808E29). case2(7, 277298568799925181577403826176, 2.7729856879992518E29). case2(8, -658584100899822306246334087168, -6.585841008998223E29). case2(9, 591735338778411771401781379072, 5.917353387784118E29). case2(10, -485272495399869067760456695808, -4.852724953998691E29). case2(11, 183834095833878970822519947264, 1.8383409583387897E29). case2(12, -727289773080160911503235481600, -7.272897730801609E29). case2(13, 1138131123617996490235382333440, 1.1381311236179965E30). case2(14, -330065762974464515794978996224, -3.300657629744645E29). case2(15, 552546799409783952074505977856, 5.5254679940978395E29). case2(16, -386179263817697143568140861440, -3.8617926381769714E29). case2(17, 402891454348049777279279038464, 4.028914543480498E29). case2(18, 1054773270503928579381042085888, 1.0547732705039286E30). case2(19, 585731813158205522920190509056, 5.857318131582055E29). case2(20, -307547101732502818157727055872, -3.0754710173250282E29). case2(21, 1110510795417261057480870330368, 1.110510795417261E30). case2(22, -1125115828244025392540495642624, -1.1251158282440254E30). case2(23, 404156141871094131224668536832, 4.041561418710941E29). case2(24, -642609959582344403646354030592, -6.426099595823444E29). case2(25, -378350789114918886433007599616, -3.783507891149189E29). case2(26, 1182087911982241516249250004992, 1.1820879119822415E30). case2(27, -15111544410983967465955917824, -1.5111544410983967E28). case2(28, 738978607655125237423692316672, 7.389786076551252E29). case2(29, -715059811974657518677031649280, -7.150598119746575E29). case2(30, -683201808000346353202033065984, -6.832018080003464E29). case2(31, -202821812961216896080797499392, -2.028218129612169E29). case2(32, 173015159534286906866293276672, 1.730151595342869E29). case2(33, 43754795631194190885613993984, 4.375479563119419E28). case2(34, -98319327285267171236005281792, -9.831932728526717E28). case2(35, -51545439234717250408425717760, -5.154543923471725E28). case2(36, 1014396182972695755977991913472, 1.0143961829726958E30). case2(37, 1048630061608920532078919942144, 1.0486300616089205E30). case2(38, -825846045325066996072352579584, -8.25846045325067E29). case2(39, 134807780812627097999177154560, 1.348077808126271E29). case2(40, -557340573934174594240436240384, -5.573405739341746E29). case2(41, 246605202840247658691973611520, 2.4660520284024766E29). case2(42, -368483948182901176937163522048, -3.684839481829012E29). case2(43, -36719017629672996198716276736, -3.6719017629672996E28). case2(44, -1135796318637424963738394427392, -1.135796318637425E30). case2(45, -342537521104318611519929581568, -3.425375211043186E29). case2(46, 995695678221148415391271223296, 9.956956782211484E29). case2(47, 897634124148697312893236936704, 8.976341241486973E29). case2(48, -267533743236678300621852377088, -2.675337432366783E29). case2(49, -2973478479868573217862975488, -2.973478479868573E27). case2(50, -136038046678636233518064074752, -1.3603804667863623E29). case2(51, 813732828256872580637272309760, 8.137328282568726E29). case2(52, 747990752307712906446120157184, 7.479907523077129E29). case2(53, 109208605109690438193556488192, 1.0920860510969044E29). case2(54, -204557100613991514250084876288, -2.045571006139915E29). case2(55, 898836441842630694813418127360, 8.988364418426307E29). case2(56, -1190359501396335678156200476672, -1.1903595013963357E30). case2(57, 325089942683793474281621422080, 3.250899426837935E29). case2(58, -602200523757754637319657226240, -6.0220052375775465E29). case2(59, -645267939833819579649401815040, -6.452679398338196E29). case2(60, -322373332270459632218785447936, -3.223733322704597E29). case2(61, -32105844911902374421277442048, -3.2105844911902375E28). case2(62, -811436478548300493293008977920, -8.114364785483005E29). case2(63, 630114243518039665519099904000, 6.301142435180397E29). case2(64, 185420270283189651966189895680, 1.8542027028318964E29). case2(65, 1172254751867915635711824363520, 1.1722547518679157E30). case2(66, -29974509530462346902807511040, -2.9974509530462348E28). case2(67, 1194215809375498755082962337792, 1.1942158093754988E30). case2(68, -384061585989604424224484622336, -3.8406158598960444E29). case2(69, 649898036865138159707748302848, 6.498980368651381E29). case2(70, -200967020355624282108232466432, -2.009670203556243E29). case2(71, -734251525219042739332109565952, -7.342515252190427E29). case2(72, 471962900988626647174130696192, 4.719629009886266E29). case2(73, -501661575940558047689534603264, -5.01661575940558E29). case2(74, -678673288069752029022603182080, -6.786732880697521E29). case2(75, -165569191347060264428294373376, -1.6556919134706025E29). case2(76, 349248701190324617774328971264, 3.492487011903246E29). case2(77, 394475525598833996610551152640, 3.94475525598834E29). case2(78, -750727528572992083739461812224, -7.507275285729921E29). case2(79, -906614288894962714634683940864, -9.066142888949627E29). case2(80, 937673749119130196773404934144, 9.376737491191302E29). case2(81, -877251772504841814277674237952, -8.772517725048418E29). case2(82, -224856177774627582102491627520, -2.248561777746276E29). case2(83, 600658883743602148890111901696, 6.0065888374360216E29). case2(84, -1062258142822301568061772267520, -1.0622581428223016E30). case2(85, 1117891521183554240185981730816, 1.1178915211835542E30). case2(86, 1234189219201668946818120548352, 1.2341892192016689E30). case2(87, -236601126542294828981437759488, -2.3660112654229483E29). case2(88, 249442661734698701893882470400, 2.494426617346987E29). case2(89, -1074518097920194050744598050816, -1.074518097920194E30). case2(90, 489034295053686041023986381824, 4.89034295053686E29). case2(91, -860193842280409723550068403712, -8.601938422804098E29). case2(92, -648607567791872183131619190528, -6.486075677918722E29). case2(93, 414027152835406575797983392256, 4.1402715283540656E29). case2(94, -260269777922245988740020415744, -2.60269777922246E29). case2(95, -1259705241962826850855979541024, -1.2597052419628268E30). case2(96, 938231249971862856260219836528, 9.382312499718629E29). case2(97, 1174606937965120138373388402296, 1.17460693796512E30). case2(98, -59608708088223272162032636324, -5.960870808822327E28). case2(99, 910072633264760760872536852562, 9.100726332647608E29). case2(100, -16943232850210989721888735900, -1.6943232850210989E28). case3(1, 322779834488927898980650582016, 3.227798344889279E29). case3(2, -603808874226589437607486160896, -6.038088742265894E29). case3(3, -1021155626319090205575763460096, -1.0211556263190902E30). case3(4, -426796252065851265407206293504, -4.2679625206585124E29). case3(5, 787528550147869531596558172160, 7.875285501478696E29). case3(6, 601839696710557903200127549440, 6.018396967105579E29). case3(7, 380715638626145746274110930944, 3.807156386261457E29). case3(8, -1004966602799184782204644360192, -1.0049666027991848E30). case3(9, -416519536763899540731783544832, -4.165195367638995E29). case3(10, -399061749498479034173996662784, -3.9906174949847906E29). case3(11, 331134525311103936644547346432, 3.3113452531110396E29). case3(12, 548500250785140154065267720192, 5.485002507851401E29). case3(13, -1052883370844748835367784808448, -1.0528833708447488E30). case3(14, -359721777069931670453648097280, -3.5972177706993164E29). case3(15, 755715231308643296756331708416, 7.557152313086433E29). case3(16, -494521347595498725386900996096, -4.945213475954987E29). case3(17, -779002561904725092505711804416, -7.790025619047251E29). case3(18, 1021160247085577213925140725760, 1.0211602470855772E30). case3(19, -239910018832815655827980419072, -2.3991001883281566E29). case3(20, -1239177714249009097703283490816, -1.2391777142490091E30). case3(21, -601995490745384120831036096512, -6.019954907453841E29). case3(22, -55839647813996725429333917696, -5.5839647813996725E28). case3(23, 311412427407327530124014780416, 3.1141242740732752E29). case3(24, -1067578871748843079651809034240, -1.0675788717488431E30). case3(25, 970874827222013660263448838144, 9.708748272220137E29). case3(26, 444723926393965379698957484032, 4.447239263939654E29). case3(27, 485674308417896671828932296704, 4.8567430841789666E29). case3(28, -521506461982822245468267872256, -5.2150646198282225E29). case3(29, -807105604071537678627589062656, -8.071056040715376E29). case3(30, 740580154616677787611743387648, 7.405801546166778E29). case3(31, -1019878959806617719601258037248, -1.0198789598066177E30). case3(32, -738889744923247436757722988544, -7.388897449232474E29). case3(33, -601515710356049216735662833664, -6.015157103560492E29). case3(34, 1220629615631700774519276830720, 1.2206296156317007E30). case3(35, 1086305823971423017274867449856, 1.086305823971423E30). case3(36, 278284944748795008116303331328, 2.78284944748795E29). case3(37, 503487689179869862254742601728, 5.034876891798698E29). case3(38, 397458741178000045914900660224, 3.9745874117800006E29). case3(39, 1238677654252499275808184991744, 1.2386776542524992E30). case3(40, 665723957508124919339600052224, 6.65723957508125E29). case3(41, 54473458737539984331206819840, 5.447345873753998E28). case3(42, -440849607677100748223713116160, -4.408496076771008E29). case3(43, -1186780333673374486105572769792, -1.1867803336733745E30). case3(44, -828141981914306499269539921920, -8.281419819143066E29). case3(45, 383023042367784512008730181632, 3.830230423677845E29). case3(46, -430979739441175863889556930560, -4.3097973944117586E29). case3(47, 127966834234704235295378767872, 1.2796683423470424E29). case3(48, -179965290262093770364750397440, -1.7996529026209377E29). case3(49, 1184294263365347420362961321984, 1.1842942633653475E30). case3(50, -93840558192947966071724310528, -9.384055819294796E28). case3(51, -440066987354661707808434552832, -4.400669873546617E29). case3(52, -848202216373880902361085378560, -8.482022163738809E29). case3(53, 1020000252676454788960769540096, 1.0200002526764547E30). case3(54, -972769128754838974497086767104, -9.72769128754839E29). case3(55, -413689943830200194505753231360, -4.1368994383020016E29). case3(56, -257526143887790619890324340736, -2.5752614388779062E29). case3(57, 319728786337452695686985285632, 3.197287863374527E29). case3(58, 841864018761679368393001533440, 8.418640187616794E29). case3(59, 188256831997912549210537852928, 1.8825683199791255E29). case3(60, 882702358348412180092858400768, 8.827023583484122E29). case3(61, -606025485979077743951128559616, -6.0602548597907776E29). case3(62, -40654969709355905197361070080, -4.0654969709355905E28). case3(63, -73769257781650228185913098240, -7.376925778165023E28). case3(64, 938105011720195258522833780736, 9.381050117201953E29). case3(65, -1155704836971807386934399991808, -1.1557048369718074E30). case3(66, -786801365990271891200379191296, -7.868013659902718E29). case3(67, 473740307247753223676742336512, 4.737403072477532E29). case3(68, -469819749117317503949993934848, -4.698197491173175E29). case3(69, -124851129191269336172294307840, -1.2485112919126934E29). case3(70, -852078306640422332579140599808, -8.520783066404223E29). case3(71, -822493233325224515484990308352, -8.224932333252245E29). case3(72, -71760316841027893742329135104, -7.176031684102789E28). case3(73, 529731415824787964540661792768, 5.2973141582478794E29). case3(74, -354130493980964699755090280448, -3.541304939809647E29). case3(75, -1082555362038221484452959223808, -1.0825553620382215E30). case3(76, 70760221513619698011852505088, 7.07602215136197E28). case3(77, -786682085592092220209621893120, -7.866820855920922E29). case3(78, -439212116315544238520298110976, -4.3921211631554426E29). case3(79, 442832268317086899836433727488, 4.428322683170869E29). case3(80, -165644035178569450255974137856, -1.6564403517856943E29). case3(81, 1153728170993315469312663748608, 1.1537281709933154E30). case3(82, 682803820891302584814982397952, 6.828038208913026E29). case3(83, 787442717393668218838673522688, 7.874427173936682E29). case3(84, 302898940056502649151547244544, 3.0289894005650267E29). case3(85, -871597059095168868874631249920, -8.715970590951689E29). case3(86, 4063283219091878646709747712, 4.0632832190918786E27). case3(87, 952205110563653667464677425152, 9.522051105636537E29). case3(88, -1266587994754849340292958519296, -1.2665879947548494E30). case3(89, 235761173630130451411263029248, 2.3576117363013044E29). case3(90, 1032119897023759660889298436096, 1.0321198970237597E30). case3(91, 72719436272722145590103769088, 7.2719436272722146E28). case3(92, -791488975879516373943410753536, -7.914889758795164E29). case3(93, 372973308126005328051739557888, 3.7297330812600535E29). case3(94, -1129404284004138188894170513408, -1.1294042840041382E30). case3(95, 594779305038924597107611402240, 5.9477930503892456E29). case3(96, 766864266539909018934789013504, 7.66864266539909E29). case3(97, 166327207110460054116117774336, 1.6632720711046005E29). case3(98, 1145881941641828321095537655808, 1.1458819416418284E30). case3(99, -800006259252224744644417683456, -8.000062592522247E29). case3(100, 1150940439013972118269404905472, 1.1509404390139721E30). case4(1, 984879640065597912793, -611320286, -1.611069782273834E12). case4(2, -987195119722709159028, -812374936, 1.215196427136828E12). case4(3, -138732791312937296168, 70775453, -1.9601823150879346E12). case4(4, -1022111903654220307321, -184350481, 5.544395100624772E12). case4(5, -67773578324748422807, -196231694, 3.45375290521359E11). case4(6, -210644799857427774079, 827320182, -2.5461097703213986E11). case4(7, -942333480125452263444, -423563639, 2.224774256709633E12). case4(8, -709251944464027575475, -111447431, 6.364004428814762E12). case4(9, -242358216929965258462, -196186142, 1.2353482996264092E12). case4(10, 86603821762955452416, -185158866, -4.67727112581017E11). case4(11, -140245519511947039432, 53405065, -2.62607150673718E12). case4(12, -191262094054541341224, 566865136, -3.3740317036280273E11). case4(13, 779057247531190686218, -787611257, -9.891393001397778E11). case4(14, -680524620818713805747, 155384653, -4.3796128361448525E12). case4(15, 1148307957879566849588, -311603212, -3.685160850907939E12). case4(16, -336082791195662545598, 481735768, -6.976496526113513E11). case4(17, 599112514012804698532, -19294604, -3.1050780519403492E13). case4(18, 535917512510387526436, 276261971, 1.9398888329454058E12). case4(19, -389452380612835518533, 529403928, -7.356431639714535E11). case4(20, -69710036333193113600, 555733816, -1.2543781631815099E11). case4(21, -1162584741704103421862, 183854545, -6.323394081468605E12). case4(22, 1074094545045288445075, 270074348, 3.977032817071869E12). case4(23, -145160527195556984183, 211338385, -6.86863047598083E11). case4(24, -799966873868802681912, -508337467, 1.573692528685482E12). case4(25, 380429351779486394706, -289582526, -1.3137165319826184E12). case4(26, -372068339553228441474, -658302334, 5.651937116680927E11). case4(27, -49747074713523816232, 623288783, -7.981384563682066E10). case4(28, -208326247593717998811, -231552855, 8.996919843364401E11). case4(29, 380793335085234884473, 547831897, 6.950915731093966E11). case4(30, 12358273131734643712, -588153124, -2.1011999473345726E10). case4(31, -157725254908247551374, 901131268, -1.750302763972535E11). case4(32, 971305756754271903262, 912609998, 1.0643163661179525E12). case4(33, -403760807274654060884, 770638025, -5.239305538740501E11). case4(34, -871368517102168772827, 810274279, -1.0753994538461326E12). case4(35, 796206668311535086525, 123150073, 6.465336551700907E12). case4(36, -26886042404894978554, 1006800179, -2.6704447382597237E10). case4(37, -626202705195623244584, -809630002, 7.734430587413228E11). case4(38, -817888395196108166209, -679961908, 1.2028444322738562E12). case4(39, 1142484615336208655930, -660849722, -1.728811524469717E12). case4(40, 20235564800169977856, -51036371, -3.9649301867818884E11). case4(41, -66644866218312321777, 840508256, -7.929115001853392E10). case4(42, -139741894811865317438, 629340408, -2.2204500622477957E11). case4(43, 1119096391098787196130, 828347409, 1.3509988429248376E12). case4(44, -71991465069309912989, 1008010217, -7.141938033482245E10). case4(45, -222463747706172693364, -257411348, 8.642344225871996E11). case4(46, 811300157998810357471, 819153410, 9.904129655015541E11). case4(47, -870134218617691605146, 482854932, -1.8020613665756064E12). case4(48, 84201224271876992231, 270596559, 3.111688654986814E11). case4(49, 115568238649991796611, 491550155, 2.3510975934895554E11). case4(50, -65206580181840572416, 770265270, -8.465470627001082E10). case4(51, -911851774903075627412, -170912561, 5.335194613946927E12). case4(52, 1122863791575601384758, -156164785, -7.190249655680065E12). case4(53, 129790379061006942965, 593486425, 2.1869140319596518E11). case4(54, -829904936335496191581, 200468634, -4.139824369409811E12). case4(55, -221801420681112892627, -584318616, 3.795898583541156E11). case4(56, 52100812118208595919, -946182492, -5.506423185666872E10). case4(57, -638196789862991180511, 288210368, -2.214343620917174E12). case4(58, -543438024363702059877, 1069904319, -5.079314240656898E11). case4(59, 1087782771690817441914, 718403385, 1.5141671022204573E12). case4(60, 40215642949103292416, -887141538, -4.533171002201826E10). case4(61, -640601082512021892866, -475158672, 1.348183502188132E12). case4(62, 22848907010035347415, 519384936, 4.399224048738169E10). case4(63, 1135402292757819881277, 940775, 1.2068797456967072E15). case4(64, 385195731244461626008, 654778867, 5.882836949355326E11). case4(65, -959853420945429604282, -118914518, 8.071793394860581E12). case4(66, 566922597469237173462, 121978300, 4.64773322360811E12). case4(67, -949073634842061187837, 892793594, -1.063038132464536E12). case4(68, -823610663116193930810, 575473970, -1.4311866497040586E12). case4(69, -744653429536081498888, 804122365, -9.26044917972256E11). case4(70, 107869583586059984896, 517300961, 2.0852384147428635E11). case4(71, 50443807220686690107, 741230112, 6.805417967246141E10). case4(72, -532322544008381250102, 306109193, -1.7389956139225825E12). case4(73, -269875063383807026600, -311429458, 8.665688375047906E11). case4(74, -178350066129360908138, 685047452, -2.603470250252984E11). case4(75, 288360596620146599719, 319155022, 9.035126403874873E11). case4(76, 319434257933851349048, 643066707, 4.967358043212325E11). case4(77, 143674730362847665079, -71253126, -2.0163989768371377E12). case4(78, -683787120575961739620, -1035470459, 6.603637164466531E11). case4(79, 426340671922567147768, 397993935, 1.0712240424532277E12). case4(80, 1014803935855838560256, -523458764, -1.938651152005239E12). case4(81, -339577070225785627023, 68218138, -4.977812062618678E12). case4(82, -106709268115247989872, 782962675, -1.3628908698010156E11). case4(83, 51600369813332203509, -265185367, -1.9458226672564557E11). case4(84, -789788390877900325314, -733440994, 1.0768260805420706E12). case4(85, -897581504096551183955, -330307430, 2.717412393952359E12). case4(86, 1167888338894855875457, -227418690, -5.135410545610195E12). case4(87, 860799738513572767334, -112500991, -7.651485830143245E12). case4(88, -733411934481087001310, 551134399, -1.3307315526155117E12). case4(89, 877849678972488306559, 712468144, 1.2321248133902366E12). case4(90, -29815567515857106944, -306774384, 9.71905382942831E10). case4(91, 572509515477115403081, 726896596, 7.876079192385094E11). case4(92, -223018974530164973802, -402229036, 5.544576710522832E11). case4(93, -6605415421167381818, 849769899, -7.77318122110534E9). case4(94, -81174671902678266981, -109813110, 7.392074762537758E11). case4(95, 309793383541490863609, 939470609, 3.297531403044572E11). case4(96, -908542883824856683958, -647907726, 1.4022720325222002E12). case4(97, -111830332461144555633, -280772017, 3.98295861731636E11). case4(98, 241344043833360312, -705232728, -3.422190069337796E8). case4(99, -694550138790929395902, -393363216, 1.7656712944682896E12). case4(100, 187121308942759051264, 317941982, 5.88539166063194E11). case5(1, -24490409708946800820, 520429749820, -4.7058051E7). case5(2, -82497312646141439844, -180501274639, 4.57045596E8). case5(3, -49237372789707138520, 78612382904, -6.26331005E8). case5(4, 133492566858653374710, 403367940781, 3.3094491E8). case5(5, -9292024854069218304, 666188524544, -1.3948041000000002E7). case5(6, 80251526326770011616, -176782684377, -4.53955808E8). case5(7, 46537629161380574204, -239358765838, -1.94426258E8). case5(8, 138741955296756003131, 198702715973, 6.98238847E8). case5(9, -889508085629458048000, 850262681110, -1.0461568E9). case5(10, 78633188903717445632, -733806435328, -1.0715794399999999E8). case5(11, 216037685650109050780, 252313220332, 8.56228165E8). case5(12, -119442264369458222744, -118956470056, 1.004083799E9). case5(13, 307902588220695747216, 726804520176, 4.2363879100000006E8). case5(14, 285719729199258798106, -1016538972403, -2.81071102E8). case5(15, 44220275465108049920, 360727511440, 1.2258636799999999E8). case5(16, -13112433941002835922, -212944937042, 6.1576641E7). case5(17, 777673598509961441706, 1096682309598, 7.09114747E8). case5(18, -30691871271533514129, -266799006827, 1.15037427E8). case5(19, -343255787640146497466, 406649106577, -8.44108058E8). case5(20, -39416013591626969088, -217575737216, 1.8115996800000003E8). case5(21, -257117862938783474642, 638666573678, -4.02585439E8). case5(22, 80247748183897504102, 81639966119, 9.82946858E8). case5(23, 504674981657599569876, 500927763471, 1.007480556E9). case5(24, 285714441565100537616, 335497764492, 8.51613548E8). case5(25, 22775554226092009472, -58028695808, -3.9248778399999994E8). case5(26, -190312529172251469800, -217558036550, 8.74766716E8). case5(27, 642346216836807708600, 628838667924, 1.0214801499999999E9). case5(28, -80321307104515284171, -118884429909, 6.756251189999999E8). case5(29, 80720931288688901217, 302776812387, 2.66602091E8). case5(30, 74109527994700701696, -352298011136, -2.1036033599999997E8). case5(31, 395328012897939289920, 924916692384, 4.2742013E8). case5(32, -707819508785644037728, 959424167894, -7.37754512E8). case5(33, 40690190251218195735, 395956882173, 1.02764195E8). case5(34, 329525130165777700434, 392549550033, 8.394484980000001E8). case5(35, -50941415634262847488, 240009148336, -2.1224780800000003E8). case5(36, 34347422952466525785, 74676178551, 4.59951535E8). case5(37, -545700958436178263160, 592255999353, -9.2139372E8). case5(38, 610946393689490627300, 1082886876452, 5.64183025E8). case5(39, 681891213170572491216, -897905108074, -7.59424584E8). case5(40, 81271260127029600256, 825564460429, 9.844326399999999E7). case5(41, 81293360575190631568, 727341784696, 1.11767758E8). case5(42, -138451624825395140475, -675412027725, 2.04988391E8). case5(43, -357708053398934361360, -962331272580, 3.71709892E8). case5(44, 37003210278682815537, -63977228971, -5.78380947E8). case5(45, -9456227718848834560, 16064137376, -5.886545600000001E8). case5(46, -611802815375400258839, 687800207797, -8.89506587E8). case5(47, 901485875866083469581, 897736253277, 1.0041767530000001E9). case5(48, 586893891302438380950, -918968158694, -6.38644425E8). case5(49, 231152832163342106041, -1030057026241, -2.2440780099999997E8). case5(50, -10681554807583718400, -21489240800, 4.9706524800000006E8). case5(51, -18849582257769769278, -71754494037, 2.6269549400000003E8). case5(52, 345429514111494875400, 663899146137, 5.2030419999999994E8). case5(53, -149808807950369958, -665456099139, 225122.0). case5(54, -190461132213907852164, 326851872933, -5.82713908E8). case5(55, -28127454749636261888, -235821199778, 1.1927449600000001E8). case5(56, -196525875497593051990, 234439570070, -8.38279457E8). case5(57, 777222256132698154860, -728841915628, -1.066379745E9). case5(58, 534885759972826476732, -712868129772, -7.50329181E8). case5(59, -117255985253055079825, -274378641035, 4.27350995E8). case5(60, -9247070901008256000, -238924496640, 3.870290000000001E7). case5(61, 74348956380374665470, 126189820601, 5.8918347E8). case5(62, 393733517898826233620, 862351690433, 4.5658114E8). case5(63, 230687772261770654460, 554637715548, 4.15925145E8). case5(64, -492757477905189222510, 798071942361, -6.1743491E8). case5(65, -813846323927064969216, -850805489664, 9.565597940000001E8). case5(66, -242132204680584326528, 522311014484, -4.63578592E8). case5(67, -37502006847598215015, -123466088285, 3.03743379E8). case5(68, -78961914830494750912, 361940139626, -2.1816291199999997E8). case5(69, -126177899855434365600, 831649474512, -1.5172005E8). case5(70, -33947408895050004480, 259959282560, -1.3058740800000001E8). case5(71, -166957637369543685684, 569908423642, -2.92955202E8). case5(72, 93004831164566507823, 344951162829, 2.69617387E8). case5(73, 96037224278896347600, 111275121460, 8.6306106E8). case5(74, 969755737667483591316, 975125169828, 9.94493597E8). case5(75, -14482184032505195520, -29099387360, 4.9768003200000006E8). case5(76, -122992209774684767190, 116568103143, -1.05511033E9). case5(77, 14894175558224199244, 397725688462, 3.7448362E7). case5(78, -563970009861914040115, -599257844363, 9.41114105E8). case5(79, -109463222205658644354, 799161226686, -1.36972639E8). case5(80, -123600533112425439232, -524389986304, 2.3570345800000003E8). case5(81, 131987031929050248540, 260291384820, 5.07074147E8). case5(82, 711177573356645209347, 853037292003, 8.33700449E8). case5(83, -190617439123543281291, -330542464743, 5.76680637E8). case5(84, -35651184241506562539, -819453653379, 4.3506041E7). case5(85, 11965279244450051072, -46407742322, -2.5782937599999997E8). case5(86, 280836474139492820352, 357318573936, 7.85955432E8). case5(87, 501434117601478972182, 645492365571, 7.76824242E8). case5(88, -495866072011047918906, 592771236017, -8.36521818E8). case5(89, 609384759174768308095, -1007380801483, -6.04919965E8). case5(90, -23961207002060593152, -54673501464, 4.3825996800000006E8). case5(91, 682993523133445530502, -762302090182, -8.95961761E8). case5(92, 326268468059337793990, -331210186979, -9.8507981E8). case5(93, 160106412283566937001, 710299016339, 2.2540705900000003E8). case5(94, -293431293169123893967, -363049216241, 8.08241087E8). case5(95, 13531261266454225920, 946732493760, 1.4292591999999998E7). case5(96, -9810492145118205671, -29023705877, 3.38016523E8). case5(97, -314199143368782961878, -532286786502, 5.90281689E8). case5(98, -414824547835883429165, -446457592949, 9.29146585E8). case5(99, 972896589856477093680, -1010682617013, -9.6261336E8). case5(100, 81195316588516352000, 90650974720, 8.956915999999999E8). case6(1, 2036, 15, 4.2821966261630994E49). case6(2, 3869, 20, 5.649039278141344E71). case6(3, -1769, 56, 7.460340383768132E181). case6(4, 2688, 41, 4.04203285842795E140). case6(5, -1512, 42, 3.476764134663479E133). case6(6, 563, -56, 9.365476712718912E-155). case6(7, 1889, 29, 1.0250068783051207E95). case6(8, 2980, 22, 2.7086806773977235E76). case6(9, -580, -21, -9.289923445821292E-59). case6(10, 3903, -7, 7.24786575987695E-26). case6(11, 2744, -17, 3.5275256504000737E-59). case6(12, 3314, 12, 1.7548097914222042E42). case6(13, 2129, 29, 3.2892295383587806E96). case6(14, -3877, -5, -1.1416184921949068E-18). case6(15, 954, -28, 3.738053460938486E-84). case6(16, 3216, 2, 1.0342656E7). case6(17, -702, -44, 5.7698837910279705E-126). case6(18, 1470, 56, 2.3429916772196633E177). case6(19, -1983, -29, -2.385839849130076E-96). case6(20, 3976, -20, 1.0258231259666201E-72). case6(21, 3690, 55, 1.5362084114647895E196). case6(22, -2079, 8, 3.490084280345614E26). case6(23, 1466, -5, 1.476828784449458E-16). case6(24, 1606, 10, 1.14144610223356E32). case6(25, 2781, -44, 2.852045764267726E-152). case6(26, -2569, -37, -6.898078656020993E-127). case6(27, 1685, -41, 5.1215791230164196E-133). case6(28, 2365, 16, 9.578518032588177E53). case6(29, -1976, -49, -3.2095188275691185E-162). case6(30, -191, 9, -3.382986815595733E20). case6(31, 2058, -11, 3.565339784147446E-37). case6(32, -2602, 47, -3.307065027364934E160). case6(33, 2618, 17, 1.2749228874279662E58). case6(34, 3696, -60, 8.631419949689828E-215). case6(35, 3240, -18, 6.45936485605158E-64). case6(36, -2220, 29, -1.1072259584086983E97). case6(37, 2763, -9, 1.0655455894030212E-31). case6(38, 2752, -6, 2.3020217499877458E-21). case6(39, -2737, 25, -8.548106714463928E85). case6(40, -2705, -4, 1.8678023704280373E-14). case6(41, -1579, -54, 1.9380500101473647E-173). case6(42, 656, -9, 4.444935318530906E-26). case6(43, -306, -17, -5.530135210259381E-43). case6(44, 428, 46, 1.112790410883504E121). case6(45, 1230, 48, 2.067499194824195E148). case6(46, 1980, -32, 3.211544259972937E-106). case6(47, 2154, -6, 1.0012114467924728E-20). case6(48, 4048, -42, 3.132555967875692E-152). case6(49, 1030, -49, 2.349502921834464E-148). case6(50, 2697, -23, 1.2295274570600615E-79). case6(51, 2044, -35, 1.3588414897966855E-116). case6(52, 2685, -49, 9.588038919844824E-169). case6(53, -2687, 17, -1.9840395691834855E58). case6(54, -364, 30, 6.808344291196636E76). case6(55, 4010, -7, 5.997764255726515E-26). case6(56, 2484, -50, 1.747513038484228E-170). case6(57, -103, 57, -5.391651440886641E114). case6(58, -2737, -24, 3.201878604731064E-83). case6(59, -2061, -58, 6.07402362535873E-193). case6(60, -182, -32, 4.7611907861170404E-73). case6(61, -1293, 28, 1.33278070479369E87). case6(62, 852, 43, 1.0207104826259913E126). case6(63, -3758, 18, 2.2347140720267763E64). case6(64, 674, 35, 1.0071551521674878E99). case6(65, 360, 26, 2.9098125988731507E66). case6(66, 1414, -31, 2.1680450725099735E-98). case6(67, -347, 27, -3.880572657835214E68). case6(68, 396, -1, 0.0025252525252525255). case6(69, 3316, -37, 5.460880720000525E-131). case6(70, 2758, -34, 1.046634623499968E-117). case6(71, -1948, -56, 6.06762395993283E-185). case6(72, -1059, 25, -4.191785033308829E75). case6(73, 2830, 25, 1.9708832025399348E86). case6(74, 2768, 7, 1.2449806471099136E24). case6(75, 4075, -29, 2.0244134814214638E-105). case6(76, -1169, -57, -1.363241704957165E-175). case6(77, -3443, -14, 3.0400566890648106E-50). case6(78, -2128, 64, 9.776511419118638E212). case6(79, 2071, 11, 3.005945400218275E36). case6(80, 2616, 6, 3.2049882223164496E20). case6(81, -1094, -39, -3.008322847641722E-119). case6(82, 1419, -17, 2.607950098727228E-54). case6(83, 331, 61, 5.1228025887669986E153). case6(84, 430, 56, 2.980118355625078E147). case6(85, 2782, 9, 9.981921057482549E30). case6(86, 3662, -18, 7.129677417339073E-65). case6(87, 2227, -45, 2.252113290254307E-151). case6(88, 2234, 20, 9.58657282124401E66). case6(89, 1804, 47, 1.1043762557633594E153). case6(90, -1085, -50, 1.6924392582172938E-152). case6(91, -1550, -39, -3.776276373114578E-125). case6(92, 2510, 22, 6.206144348166425E74). case6(93, 3786, 19, 9.670113754195943E67). case6(94, 1025, -5, 8.838542876095169E-16). case6(95, 2004, -51, 4.0106653231409645E-169). case6(96, -3532, -32, 2.9062820729836823E-114). case6(97, 120, -51, 9.157068259764355E-107). case6(98, 2346, -20, 3.9213882610223955E-68). case6(99, 1365, 18, 2.706373453031387E56). case6(100, -2987, -43, -3.6718541989958936E-150). </div> <div class="nb-cell markdown" name="md2"> `emulatorswi.pl` </div> <div class="nb-cell program" data-background="true" data-singleline="true" name="p2"> /* * float/1 emulator. SWI-Prolog variant. * * Warranty & Liability * To the extent permitted by applicable law and unless explicitly * otherwise agreed upon, XLOG Technologies AG make_bdds no warranties * regarding the provided information. XLOG Technologies AG assumes * no liability that any problems might be solved with the information * provided by XLOG Technologies AG. * * Rights & License * All industrial property rights regarding the information - copyright * and patent rights in particular - are the sole property of XLOG * Technologies AG. If the company was not the originator of some * excerpts, XLOG Technologies AG has at least obtained the right to * reproduce, change and translate the information. * * Reproduction is restricted to the whole unaltered document. Reproduction * of the information is only allowed for non-commercial uses. Selling, * giving away or letting of the execution of the library is prohibited. * The library can be distributed as part of your applications and libraries * for execution provided this comment remains unchanged. * * Restrictions * Only to be distributed with programs that add significant and primary * functionality to the library. Not to be distributed with additional * software intended to replace any components of the library. * * Trademarks * Jekejeke is a registered trademark of XLOG Technologies AG. */ /* * float_half_even2(X, Y): * Succeeds in Y with float(X) using rounding mode HALF_EVEN. */ % float_half_even2(+Integer, -Float) float_half_even2(0, 0) :- !. float_half_even2(X, Y) :- X < 0, !, H is -X, M is msb(H), float_half_even2(M, H, J), Y is -J. float_half_even2(X, Y) :- M is msb(X), float_half_even2(M, X, Y). float_half_even2(M, X,Y) :- (M < 53; getbit(X, M-53) =:= 0; getbit(X, M-52) =:= 0, M-53 =:= lsb(X)), !, mpz_get_d2(X,Y). float_half_even2(_, X,Y) :- mpz_get_d2(X,H), Y is nexttoward(H, 1.0E300). /* * mpz_get(X, Y): * Succeeds in Y with float(X) using rounding mode DOWN. */ % mpz_get_d2(+Integer, -Float) mpz_get_d2(X, Y) :- M is msb(X), mpz_get_d2(M, X, Y). % mpz_get_d2(+Integer, +Integer, -Float) mpz_get_d2(M, X, Y) :- M < 53, !, Y is float(X). mpz_get_d2(M, X, Y) :- K is M-52, Y is float(X>>K)*(1<<K). % ?- case(N, X, Y), float_half_even2(X,Z), Y =\= Z. % fail. % ?- case2(N, X, Y), float_half_even2(X,Z), Y =\= Z. % fail. % ?- case2(N, X, Y), float_half_even2(X,Z), Y =\= Z. % fail. </div> <div class="nb-cell markdown" name="md3"> `swi.pl` </div> <div class="nb-cell program" name="p1"> /* * SWI-Prolog adapter * * Warranty & Liability * To the extent permitted by applicable law and unless explicitly * otherwise agreed upon, XLOG Technologies AG makes no warranties * regarding the provided information. XLOG Technologies AG assumes * no liability that any problems might be solved with the information * provided by XLOG Technologies AG. * * Rights & License * All industrial property rights regarding the information - copyright * and patent rights in particular - are the sole property of XLOG * Technologies AG. If the company was not the originator of some * excerpts, XLOG Technologies AG has at least obtained the right to * reproduce, change and translate the information. * * Reproduction is restricted to the whole unaltered document. Reproduction * of the information is only allowed for non-commercial uses. Selling, * giving away or letting of the execution of the library is prohibited. * The library can be distributed as part of your applications and libraries * for execution provided this comment remains unchanged. * * Restrictions * Only to be distributed with programs that add significant and primary * functionality to the library. Not to be distributed with additional * software intended to replace any components of the library. * * Trademarks * Jekejeke is a registered trademark of XLOG Technologies AG. */ % ?- ['swi.p']. %:- ['cases']. %:- ['emulatorswi']. %Not allowed in SWISH %:- set_prolog_flag(iso, true). swi :- aggregate_all(count, (case(_, X, Y), Y =\= float(X)), C), write('case, swi: '), write(C), nl, fail. swi :- aggregate_all(count, (case2(_, X, Y), Y =\= float(X)), C), write('case2, swi: '), write(C), nl, fail. swi :- aggregate_all(count, (case3(_, X, Y), Y =\= float(X)), C), write('case3, swi: '), write(C), nl, fail. swi :- aggregate_all(count, (case4(_, P, Q, Y), Y =\= float(P)/Q), C), write('case4, swi: '), write(C), nl, fail. swi :- aggregate_all(count, (case5(_, P, Q, Y), Y =\= float(P)/Q), C), write('case5, swi: '), write(C), nl, fail. swi :- aggregate_all(count, (case6(_, P, Q, Y), Y =\= float(P)**Q), C), write('case6, swi: '), write(C), nl, fail. swi. needle1 :- repeat, L is -(1<<70), H is (1<<70)+1, M is -(1<<30), J is (1<<30)+1, random(L, H, P), random(M, J, Q), float_half_even2(P, A), float_half_even2(Q, B), P/Q =\= A/B. needle2 :- repeat, L is -(1<<30), H is (1<<30)+1, M is -(1<<40), J is (1<<40)+1, random(L, H, Z), random(M, J, Q), P is Z*Q, float_half_even2(P, A), float_half_even2(Q, B), P/Q =\= A/B. % Windows % ?- swi. % case, swi: 0 % case2, swi: 1 % case3, swi: 5 % case4, swi: 10 % case5, swi: 20 % case6, swi: 49 </div> <div class="nb-cell query" name="q1"> swi. </div> </div>