| /* | |
| * Copyright 2010-2026 JetBrains s.r.o. and Kotlin Programming Language contributors. | |
| * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. | |
| */ | |
| package test.numbers | |
| import kotlin.math.sign | |
| import kotlin.test.* | |
| /* Tests ported from Scala.js: | |
| * https://github.com/scala-js/scala-js/blob/v1.22.0/test-suite/shared/src/test/scala/org/scalajs/testsuite/compiler/LongTest.scala | |
| */ | |
| class PrimitiveLongTest { | |
| private val MaxVal: Long = 0x7fffffffffffffffUL.toLong() | |
| private val MinVal: Long = 0x8000000000000000UL.toLong() | |
| private val IntMaxVal: Long = 0x000000007fffffffUL.toLong() | |
| private val IntMinVal: Long = 0xffffffff80000000UL.toLong() | |
| private val IntMaxValPlus1: Long = 0x0000000080000000UL.toLong() | |
| private val IntMinValMinus1: Long = 0xffffffff7fffffffUL.toLong() | |
| private val MaxSafeDouble: Long = 0x001fffffffffffffUL.toLong() | |
| private val TwoPow53: Long = 0x0020000000000000UL.toLong() | |
| private val MinSafeDouble: Long = 0xffe0000000000001UL.toLong() | |
| private val NegTwoPow53: Long = 0xffe0000000000000UL.toLong() | |
| private val DoubleMinPosValue: Double = 4.9e-324 | |
| @Test | |
| fun testHashCode() { | |
| fun test(expected: Int, x: Long) { | |
| assertEquals(expected, x.hashCode()) | |
| } | |
| test(0, 0L) | |
| test(0, -1L) | |
| test(55, 55L) | |
| test(11, -12L) | |
| test(10006548, 10006548L) | |
| test(1098747, -1098748L) | |
| test(957662195, 1982825597567543955L) | |
| test(-1075860794, 1406034298302928504L) | |
| test(1425294575, -1179570764218296756L) | |
| test(-1863811248, -5924750827952573997L) | |
| test(-881942797, -2395914305612636591L) | |
| test(548587254, 2447885248525657180L) | |
| test(-1328999812, -5504896584370634811L) | |
| test(-1756412154, 384199524456576104L) | |
| test(-529144798, 7888567912398337690L) | |
| test(-1163319584, 5735688670530266260L) | |
| test(2070477069, 4433036395378750992L) | |
| test(-1718642695, 1179554006416034279L) | |
| test(260982265, -8357730361210493571L) | |
| test(-385578983, 7428661341186121784L) | |
| test(-1362397169, 2543158706518910289L) | |
| test(1419211160, 3229416646666240204L) | |
| test(-1851816270, -4010623825090125741L) | |
| test(112959880, -7968980127741386941L) | |
| test(1715333902, -1854772489226326735L) | |
| test(-453690224, -3970683778215415628L) | |
| test(-1503679197, 126638565233673273L) | |
| test(1950154296, 8797042038419333400L) | |
| test(2037562473, -6972503273726145185L) | |
| test(220707473, 8280642475761957604L) | |
| test(1902658020, 5228410264741169803L) | |
| test(840583449, -3278640449314249480L) | |
| test(2065572837, -3875486092154527221L) | |
| test(407536450, 5288520647426579136L) | |
| test(-1678479110, 7046653027410693485L) | |
| test(-1558558486, -4024377053108452722L) | |
| test(-110470482, -838396561058221973L) | |
| test(992932874, 5129444237846349393L) | |
| test(2035378556, -983133572388201403L) | |
| test(542449527, -6104122336102002076L) | |
| test(-1824846728, -415158756909382857L) | |
| test(-985103709, -1969167716381843770L) | |
| test(37361715, -5476315081547833279L) | |
| test(-1555729529, -7743071034335664532L) | |
| test(1534845437, -7538261814076156116L) | |
| test(-715250396, -1429728134370512654L) | |
| test(2003953821, 2162071222722023631L) | |
| test(1631287431, 5863241404849132153L) | |
| test(-1393125048, 4881214556208830350L) | |
| test(926193137, 3242961417161524683L) | |
| test(1141998463, -7308151016669202399L) | |
| test(480895538, 4641424446555440323L) | |
| test(-849143869, -4721253045988906339L) | |
| test(-1840233445, -1282181253417368854L) | |
| test(47538111, -5095937255712569425L) | |
| test(540301593, 1165015579268918886L) | |
| test(1903332829, 3548911248465907239L) | |
| test(-1325859168, -7033666394241918194L) | |
| test(-1476869146, -3604991509767603020L) | |
| test(84316181, -8970981391004714015L) | |
| test(524038724, -8506822844828777483L) | |
| test(-794988445, 4933058946008665754L) | |
| test(-1285356617, 1378197176240526512L) | |
| test(1441713710, 8713431403779497372L) | |
| test(365800340, -8905685952204829093L) | |
| test(2130603708, -6817584868623549422L) | |
| test(-1414171289, -5367476554073402908L) | |
| test(-262714124, 8262747073669783643L) | |
| test(158195454, -2248665858028667730L) | |
| test(50128093, -3976075402628120415L) | |
| test(-825145129, 2776265820355301338L) | |
| test(-1344834498, -4107878840944388661L) | |
| test(-103814738, 7956081985265747911L) | |
| test(-1354282241, 3715014944073787543L) | |
| test(1408148925, -5636885620037294119L) | |
| test(1910019874, 8158721670792678656L) | |
| test(1877620608, -1851180655167832448L) | |
| test(-378358620, -861494542715981853L) | |
| test(492633155, -7380175794367584908L) | |
| test(-1581166836, 3854049825653594857L) | |
| test(174532880, 859390584786911807L) | |
| test(-629188646, -4435899092567076195L) | |
| test(2139225425, -1325122976028439811L) | |
| test(200043623, 7646723521622766304L) | |
| test(1992690082, 3282098032132903783L) | |
| test(754072038, 785689457701776768L) | |
| test(-139359279, -1890968847650888181L) | |
| test(-1669264515, 4844892846454312738L) | |
| test(25583899, -1626066900596724257L) | |
| test(1822592670, 442937131460406887L) | |
| test(1468680630, -3825110455431449608L) | |
| test(2103231504, -1301560781171381939L) | |
| test(1159389820, 1138240706348922264L) | |
| test(776506096, 2985427124709938391L) | |
| test(-1303579924, 6802445941252806246L) | |
| test(1108767081, 2456207273236644585L) | |
| test(-1101969936, -7706583586557791489L) | |
| test(-1022615009, -1692614123490213261L) | |
| test(-1221218252, 4616796007159011253L) | |
| test(410005178, 1349693816546475482L) | |
| test(1180107886, -3820218088529535091L) | |
| test(425308062, -2793089286027256951L) | |
| test(1727927187, 749334892891357070L) | |
| test(-759140792, -3566029960059386643L) | |
| test(1698140938, -9022872570059308487L) | |
| test(512144461, -4192565604012017786L) | |
| } | |
| @Test | |
| fun toStringTest() { | |
| fun test(expected: String, x: Long) { | |
| assertEquals(expected, x.toString()) | |
| } | |
| test("0", 0L) | |
| test("1", 1L) | |
| test("-1", -1L) | |
| test("2147483647", IntMaxVal) | |
| test("2147483648", IntMaxValPlus1) | |
| test("-2147483648", IntMinVal) | |
| test("-2147483649", IntMinValMinus1) | |
| test("999999999", 999999999L) | |
| test("1000000000", 1000000000L) | |
| test("9007199254740991", MaxSafeDouble) | |
| test("9007199254740992", TwoPow53) | |
| test("-9007199254740991", MinSafeDouble) | |
| test("-9007199254740992", NegTwoPow53) | |
| test("-9223372036854775808", MinVal) | |
| test("9223372036854775807", MaxVal) | |
| test("-86922", -86922L) | |
| test("0", 0L) | |
| test("-21874015", -21874015L) | |
| test("-2098921896914", -2098921896914L) | |
| test("80985205273168", 80985205273168L) | |
| test("-12451732102972849", -12451732102972849L) | |
| test("3350", 3350L) | |
| test("-92511590195450", -92511590195450L) | |
| test("-2", -2L) | |
| test("446248293253325286", 446248293253325286L) | |
| test("499596119314678396", 499596119314678396L) | |
| test("-3205893", -3205893L) | |
| test("-88762100292970", -88762100292970L) | |
| test("-1278004", -1278004L) | |
| test("-1", -1L) | |
| test("-305393", -305393L) | |
| test("-2", -2L) | |
| test("80295210784300943", 80295210784300943L) | |
| test("5", 5L) | |
| test("21", 21L) | |
| test("64", 64L) | |
| test("39146094", 39146094L) | |
| test("-1725731", -1725731L) | |
| test("-768047304243556260", -768047304243556260L) | |
| test("-2726923242838", -2726923242838L) | |
| test("-1781092907033", -1781092907033L) | |
| test("-213275", -213275L) | |
| test("7662405832810", 7662405832810L) | |
| test("-154157877107", -154157877107L) | |
| test("-929963900939521435", -929963900939521435L) | |
| test("-6872", -6872L) | |
| test("31842553544728", 31842553544728L) | |
| test("567569520305426", 567569520305426L) | |
| test("19649016", 19649016L) | |
| test("-1349346", -1349346L) | |
| test("9479824673588660", 9479824673588660L) | |
| test("3521781", 3521781L) | |
| test("1740", 1740L) | |
| test("0", 0L) | |
| test("92834698468", 92834698468L) | |
| test("-80139798970631138", -80139798970631138L) | |
| test("30058", 30058L) | |
| test("-611022189550002", -611022189550002L) | |
| test("514941281681226", 514941281681226L) | |
| test("2454759250363", 2454759250363L) | |
| test("14860137468144958", 14860137468144958L) | |
| test("-79255", -79255L) | |
| test("2290122305310796", 2290122305310796L) | |
| test("-755641947927852310", -755641947927852310L) | |
| test("-2621852156570472370", -2621852156570472370L) | |
| test("-37956135735", -37956135735L) | |
| test("853219", 853219L) | |
| test("901", 901L) | |
| test("4385596303898", 4385596303898L) | |
| test("-972597865", -972597865L) | |
| test("-8057379", -8057379L) | |
| test("-14968", -14968L) | |
| test("-98204964", -98204964L) | |
| test("335479", 335479L) | |
| test("-429441918886", -429441918886L) | |
| test("9798741", 9798741L) | |
| test("135908509698671494", 135908509698671494L) | |
| test("-141095409221912371", -141095409221912371L) | |
| test("-9040837797787104", -9040837797787104L) | |
| test("-889", -889L) | |
| test("3222082994", 3222082994L) | |
| test("-1454853", -1454853L) | |
| test("547641844425", 547641844425L) | |
| test("2528132853", 2528132853L) | |
| test("242", 242L) | |
| test("-1655763891", -1655763891L) | |
| test("82", 82L) | |
| test("-120254181", -120254181L) | |
| test("-210088", -210088L) | |
| test("-2", -2L) | |
| test("250255458324299", 250255458324299L) | |
| test("-100656997", -100656997L) | |
| test("-24097181761", -24097181761L) | |
| test("206088", 206088L) | |
| test("-593", -593L) | |
| test("-99542049", -99542049L) | |
| test("421501", 421501L) | |
| test("-2", -2L) | |
| test("-101", -101L) | |
| test("3", 3L) | |
| test("14967492854", 14967492854L) | |
| test("-1528445803513883", -1528445803513883L) | |
| test("26760588095306", 26760588095306L) | |
| test("12452686330472", 12452686330472L) | |
| test("-130630407827875", -130630407827875L) | |
| test("-10281777615", -10281777615L) | |
| test("-90497242609445", -90497242609445L) | |
| test("-13935178716929", -13935178716929L) | |
| test("-11308540", -11308540L) | |
| test("545166", 545166L) | |
| test("-1043705339124703", -1043705339124703L) | |
| test("510", 510L) | |
| test("-2485453027", -2485453027L) | |
| test("-15103", -15103L) | |
| test("-168776672025670194", -168776672025670194L) | |
| /* Corner cases of the approximation inside ulongToStringLarg, | |
| * where the approximated quotient is too high. | |
| */ | |
| test("2777572447999999934", 0x268beb6cdcf3bfbeL) | |
| test("3611603422999999979", 0x321efe2d997ff5ebL) | |
| test("7742984029999999701", 0x6b749af381ac2ad5L) | |
| test("2161767614999999954", 0x1e0024313b04b5d2L) | |
| test("5388513109999999953", 0x4ac7d81fbd15dbd1L) | |
| test("3713052774999999769", 0x338769d386274519L) | |
| test("-5647508785999999800", 0xb1a004ae50928cc8UL.toLong()) | |
| test("-1406561754999999938", 0xec7ae3893e93323eUL.toLong()) | |
| test("-8621287367999999564", 0x885b08d0fbcc31b4UL.toLong()) | |
| test("-8876380314999999920", 0x84d0c321f127b250UL.toLong()) | |
| test("-5002322935999999598", 0xba942dcb0bee5192UL.toLong()) | |
| test("-4971399139999999950", 0xbb020ad25f9e1832UL.toLong()) | |
| test("-8515854999999999733", 0x89d19aff1644110bUL.toLong()) | |
| test("-4806014223999999712", 0xbd4d9b86d1016120UL.toLong()) | |
| test("-9133328502999999878", 0x813fe61df1bc1a7aUL.toLong()) | |
| test("-7816299703999999849", 0x9386ecd4ed16d097UL.toLong()) | |
| test("-7259227631999999909", 0x9b420aee02f0a05bUL.toLong()) | |
| test("-2526704305999999860", 0xdcef57d21c6b8c8cUL.toLong()) | |
| test("-1100666257999999982", 0xf0b9a5deb3a6cc12UL.toLong()) | |
| } | |
| @Test | |
| fun toByte() { | |
| fun test(expected: Byte, x: Long) { | |
| assertEquals(expected, x.toByte()) | |
| } | |
| test(0, 0L) | |
| test(-1, -1L) | |
| test(0x98.toByte(), 0x76543210fedcba98L) | |
| test(102, -5348390297197908122L) | |
| test(77, 5977507544004298317L) | |
| test(-47, 6514359347096730577L) | |
| test(-22, 4993772461838941418L) | |
| test(-113, 6430368993139692943L) | |
| test(-84, -9085781647198927956L) | |
| test(33, 6306810273394300449L) | |
| test(113, -2210139158093195919L) | |
| test(12, 8144711790963478540L) | |
| test(86, -5600967788150588842L) | |
| test(-36, -6380820517237296420L) | |
| test(88, 634449370258994520L) | |
| test(107, 335338151813720939L) | |
| test(61, 1067478847354529853L) | |
| test(99, -6293272425705388957L) | |
| test(-76, 7140156260973973940L) | |
| test(0, 5600320537509350144L) | |
| test(-69, 3631108045842532795L) | |
| test(26, -7844071689366422502L) | |
| test(64, -1401566392023965632L) | |
| } | |
| @Test | |
| fun toShort() { | |
| fun test(expected: Short, x: Long) { | |
| assertEquals(expected, x.toShort()) | |
| } | |
| test(0, 0L) | |
| test(-1, -1L) | |
| test(0xba98.toShort(), 0x76543210fedcba98L) | |
| test(-670, -3488924154499629726L) | |
| test(-15861, -7040498320163487221L) | |
| test(9963, -8181870893638998293L) | |
| test(18394, -7321494144773503014L) | |
| test(-7956, -3480431557828484884L) | |
| test(21453, 4105103149183292365L) | |
| test(22979, -3021078359861798461L) | |
| test(8452, -4765875786069171964L) | |
| test(-26563, -3748769590109235139L) | |
| test(-5754, -7644892824540223098L) | |
| test(11796, -2109015304010125804L) | |
| test(18020, -1573587201743436188L) | |
| test(3768, 4144850305644236472L) | |
| test(-4579, 6246434176940961309L) | |
| test(-29102, -3393569066699878830L) | |
| test(30020, 7196258688511997252L) | |
| test(-13051, -1470416838456849147L) | |
| test(-2720, 3209606815575962976L) | |
| test(4726, 7336600601467032182L) | |
| test(-16878, -8385845263650669038L) | |
| } | |
| @Test | |
| fun toInt() { | |
| fun test(expected: Int, x: Long) { | |
| assertEquals(expected, x.toInt()) | |
| } | |
| test(0, 0L) | |
| test(-1, -1L) | |
| test(0xfedcba98U.toInt(), 0x76543210fedcba98L) | |
| test(-1869423218, -23694035066364530L) | |
| test(450655357, -2240222333751233411L) | |
| test(-596464514, 2703727000802208894L) | |
| test(1668957409, 5287278019205547233L) | |
| test(-313016061, 1217656393840443651L) | |
| test(-406779255, 5967093472329534089L) | |
| test(-1125423893, -1876561510140254997L) | |
| test(1491309031, 4073352392381534695L) | |
| test(360542935, -4440368487118048553L) | |
| test(178673916, -8786934223313938180L) | |
| test(-1167644863, 3172689046147639105L) | |
| test(-1852739075, 4083832281038418429L) | |
| test(-1965326912, 7279924828375317952L) | |
| test(-141857741, -5143473252658877389L) | |
| test(-938893686, 7574413823307259530L) | |
| test(-1178638558, 1284483777703143202L) | |
| test(-1296424902, -7277623459310854086L) | |
| test(204387309, -1033964890421808147L) | |
| test(-942136876, -2265025955962019372L) | |
| test(-1703892744, 1031594642500528376L) | |
| } | |
| @Test | |
| fun toLong() { | |
| fun test(expected: Long, x: Long) { | |
| @Suppress("REDUNDANT_CALL_OF_CONVERSION_METHOD") | |
| assertEquals(expected, x.toLong()) | |
| } | |
| test(0L, 0L) | |
| test(-1L, -1L) | |
| test(0x76543210fedcba98L, 0x76543210fedcba98L) | |
| test(6907420169189163269L, 6907420169189163269L) | |
| test(-6558938415102325809L, -6558938415102325809L) | |
| test(-7633462319206780754L, -7633462319206780754L) | |
| test(-4051533910437546682L, -4051533910437546682L) | |
| test(-3890339056676572253L, -3890339056676572253L) | |
| test(-3091543614186826784L, -3091543614186826784L) | |
| test(2806266116723834799L, 2806266116723834799L) | |
| test(-1741184441450532748L, -1741184441450532748L) | |
| test(3395924718030703835L, 3395924718030703835L) | |
| test(-7712245542997911283L, -7712245542997911283L) | |
| test(-2751064647855401745L, -2751064647855401745L) | |
| test(5225909624054208018L, 5225909624054208018L) | |
| test(1334025594846136121L, 1334025594846136121L) | |
| test(-1574909139329823322L, -1574909139329823322L) | |
| test(-9142211941778525044L, -9142211941778525044L) | |
| test(-5517402195275269807L, -5517402195275269807L) | |
| test(7612683537409046411L, 7612683537409046411L) | |
| test(-2955859733488660001L, -2955859733488660001L) | |
| test(462084382441397543L, 462084382441397543L) | |
| test(8801656334077465992L, 8801656334077465992L) | |
| } | |
| @Test | |
| fun toDouble() { | |
| fun test(expected: Double, x: Long) { | |
| assertEquals(expected, x.toDouble()) | |
| } | |
| test(0.0, 0L) | |
| test(-1.0, -1L) | |
| test(9.223372036854776e18, MaxVal) | |
| test(-9.223372036854776e18, MinVal) | |
| test(3.4240179834317537e18, 3424017983431753968L) | |
| test(8.5596043411285968e16, 85596043411285973L) | |
| test(-3.1630346897289943e18, -3163034689728994087L) | |
| test(-4.4847682439933604e18, -4484768243993360332L) | |
| test(-6.4014772289576371e17, -640147722895763706L) | |
| test(-1.76968119148756736e18, -1769681191487567328L) | |
| test(-8.5606671350959739e18, -8560667135095973729L) | |
| test(-9.0403963253949932e18, -9040396325394992652L) | |
| test(-6.4988752582247977e18, -6498875258224797887L) | |
| test(-7.7788492399114394e17, -777884923991143875L) | |
| test(7.6357174849871442e18, 7635717484987144190L) | |
| test(1.25338659134517658e18, 1253386591345176663L) | |
| test(-3.1910241505692349e18, -3191024150569234776L) | |
| test(7.4216510087652332e18, 7421651008765232983L) | |
| test(-8.189046896086654e18, -8189046896086653617L) | |
| test(6.8316272807487539e18, 6831627280748754219L) | |
| test(-8.0611115909320561e18, -8061111590932056057L) | |
| test(1.7127521901359959e18, 1712752190135995904L) | |
| test(-6.4442523492577423e18, -6444252349257742098L) | |
| test(-1.71264450938175027e18, -1712644509381750301L) | |
| } | |
| @Test | |
| fun fromDouble() { | |
| fun test(expected: Long, x: Double) { | |
| assertEquals(expected, x.toLong()) | |
| } | |
| val twoPow63 = 9.223372036854776e18 | |
| val twoPow63NextUp = 9.223372036854778e18 | |
| val twoPow63NextDown = 9.2233720368547748e18 | |
| // Specials | |
| test(0L, 0.0) | |
| test(0L, -0.0) | |
| test(0L, Double.NaN) | |
| test(MaxVal, Double.POSITIVE_INFINITY) | |
| test(MinVal, Double.NEGATIVE_INFINITY) | |
| // Corner cases | |
| test(0L, DoubleMinPosValue) | |
| test(0L, -DoubleMinPosValue) | |
| test(MaxVal, twoPow63) | |
| test(MaxVal, twoPow63NextUp) | |
| test(9223372036854774784L, twoPow63NextDown) | |
| test(MinVal, -twoPow63) | |
| test(MinVal, -twoPow63NextUp) | |
| test(-9223372036854774784L, -twoPow63NextDown) | |
| // Absolute value too big | |
| test(MaxVal, 1.5623101234432471e19) | |
| test(MaxVal, 1.0425697303244048e19) | |
| test(MaxVal, 1.500625248806836e19) | |
| test(MinVal, -1.5623101234432471e19) | |
| test(MinVal, -1.0425697303244048e19) | |
| test(MinVal, -1.500625248806836e19) | |
| // Normal cases | |
| test(-6048920506403873L, -6.048920506403873e15) | |
| test(8503743119053764L, 8.503743119053764e15) | |
| test(3939528382405885L, 3.939528382405885e15) | |
| test(-4008535239847255L, -4.008535239847255e15) | |
| test(-761635408727443L, -7.61635408727443e14) | |
| test(2424447379938472L, 2.424447379938472e15) | |
| test(-4648424796281871L, -4.648424796281871e15) | |
| test(8533360864252241L, 8.533360864252241e15) | |
| test(-2774715761463054L, -2.774715761463054e15) | |
| test(3500774757068786L, 3.500774757068786e15) | |
| test(-4456998776411743L, -4.456998776411743e15) | |
| test(5090705064274507L, 5.090705064274507e15) | |
| test(-3304575013039063L, -3.304575013039063e15) | |
| test(1770193656876L, 1.770193656876e12) | |
| test(-2176598598697488L, -2.176598598697488e15) | |
| test(4101884566378912L, 4.101884566378912e15) | |
| test(4085180300766691L, 4.085180300766691e15) | |
| test(-4657426781904383L, -4.657426781904383e15) | |
| test(2850079490584325L, 2.850079490584325e15) | |
| test(6087335263699874L, 6.087335263699874e15) | |
| test(-6713475274360568L, -6.713475274360568e15) | |
| test(4162543436756133L, 4.162543436756133e15) | |
| test(-7955791959986676L, -7.955791959986676e15) | |
| test(5231358553020274L, 5.231358553020274e15) | |
| test(1499979916805674L, 1.499979916805674e15) | |
| test(5082547854412290L, 5.08254785441229e15) | |
| test(2809489845729537L, 2.809489845729537e15) | |
| test(4877349929065833L, 4.877349929065833e15) | |
| test(-6846998949739153L, -6.846998949739153e15) | |
| test(6198980017388729L, 6.198980017388729e15) | |
| test(4948567844262856L, 4.948567844262856e15) | |
| test(-3707206656862071L, -3.707206656862071e15) | |
| test(-8665283507887641L, -8.665283507887641e15) | |
| test(-2862150709693603L, -2.862150709693603e15) | |
| test(1587366173692588L, 1.587366173692588e15) | |
| test(332903144317135L, 3.32903144317135e14) | |
| test(5902580156722507L, 5.902580156722507e15) | |
| test(-1001746319375376L, -1.001746319375376e15) | |
| test(-519938829196113L, -5.19938829196113e14) | |
| test(-8130332101524554L, -8.130332101524554e15) | |
| test(-1769686613392113L, -1.769686613392113e15) | |
| test(-7292607053441567L, -7.292607053441567e15) | |
| test(2667276401109539L, 2.667276401109539e15) | |
| val d = (ULong.MAX_VALUE - 1024U).toDouble() // 18446744073709550000 | |
| test(9223372036854775807L, d) | |
| } | |
| @Test | |
| fun comparisons() { | |
| fun test(x: Long, y: Long, expected: Int) { | |
| assertEquals(expected, x.compareTo(y).sign) | |
| assertEquals(expected == 0, x == y) | |
| assertEquals(expected != 0, x != y) | |
| assertEquals(expected < 0, x < y) | |
| assertEquals(expected <= 0, x <= y) | |
| assertEquals(expected > 0, x > y) | |
| assertEquals(expected >= 0, x >= y) | |
| } | |
| test(0L, 0L, 0) | |
| test(0L, 1L, -1) | |
| test(0L, -1L, 1) | |
| test(MaxVal, MinVal, 1) | |
| test(MinVal, MaxVal, -1) | |
| // Positive and negative numbers requiring lo to be compared via unsigned | |
| test(0x654789ab87654321L, 0x654789ab12345678L, 1) | |
| test(0x89abcdef87654321UL.toLong(), 0x89abcdef12345678UL.toLong(), 1) | |
| // Whitebox corner cases | |
| test(4294967295L, 0L, 1) | |
| test(0L, 4294967295L, -1) | |
| test(-8092415883884355943L, -8092415883884355943L, 0) | |
| test(-2031213215071472067L, -2031213215071472067L, 0) | |
| test(5283240141261796897L, 5283240141261796897L, 0) | |
| test(7116056094667264990L, 7116056094667264990L, 0) | |
| test(-3116536807772461648L, -3116536807772461648L, 0) | |
| test(-6248629176470511083L, -6248629176470511083L, 0) | |
| test(4454865470354617868L, 4454865470354617868L, 0) | |
| test(999717031143899307L, 999717031143899307L, 0) | |
| test(-5297317869524400407L, -5297317869524400407L, 0) | |
| test(8939068183804817614L, 8939068183804817614L, 0) | |
| test(3236335092840668602L, -444219516364298554L, 1) | |
| test(-4943613816686756195L, -7742547864832660642L, 1) | |
| test(8029769392898531897L, 4652159919261674509L, 1) | |
| test(5796873813047518622L, 6289828457790219503L, -1) | |
| test(-4146252130540320321L, 229162157128594750L, -1) | |
| test(1666874288313754998L, -7814084014110160137L, 1) | |
| test(3712093048452543434L, 4733495962840491197L, -1) | |
| test(-945689136431988108L, 173720678004198908L, -1) | |
| test(1942384584602846367L, -4109783896492426928L, 1) | |
| test(1481147942356422128L, 2728187183550782760L, -1) | |
| test(8772007041528428997L, -9186971037150267738L, 1) | |
| test(8245726731682071232L, 5163318085402121929L, 1) | |
| test(1299197553427533446L, 6802087801757261262L, -1) | |
| test(3305926949416808899L, -2540594350510012206L, 1) | |
| test(-2961552791416065935L, -6969814195378031172L, 1) | |
| test(4088157660605840986L, 7194896515898720601L, -1) | |
| test(-1405157718104570917L, 6578730965739299783L, -1) | |
| test(3272049947913267945L, 8706977984604794647L, -1) | |
| test(542774473992239193L, -5153605571562040274L, 1) | |
| test(-3021233129684732581L, -6793741445281541653L, 1) | |
| test(-3173969257539621561L, 8203748404252766862L, -1) | |
| test(5803462967220487068L, 5590091268406426455L, 1) | |
| test(5773238099961046596L, 4776817781713990253L, 1) | |
| test(1563566144471605276L, -7443854257335427327L, 1) | |
| test(-5267335731847770188L, 5984710255758911411L, -1) | |
| test(7824450174170580562L, -6006761146392923340L, 1) | |
| test(-6310031417822260419L, 378610261756145452L, -1) | |
| test(-399600969910632649L, -130497809780743843L, -1) | |
| test(-4718563483403518902L, 5540460094616151815L, -1) | |
| test(3635009130414443975L, 4486809672346912398L, -1) | |
| test(-6995802727856870261L, 6569166150278248282L, -1) | |
| test(6968791371002309508L, -8193565738888199170L, 1) | |
| test(-1517460660612243341L, -8851020320296654181L, 1) | |
| test(-1291017114648111885L, 7754360291495616390L, -1) | |
| test(2390342010645922745L, 3110449275385222696L, -1) | |
| test(4802823317634197020L, -3390019797807795163L, 1) | |
| test(-6688721861751417385L, -2010281469393235264L, -1) | |
| test(6834502861598033678L, 4612059587200791166L, 1) | |
| test(-7600578759410557298L, 6343221779008750856L, -1) | |
| test(-2603046777061840807L, -4567951219930893995L, 1) | |
| test(5011577782742676064L, 257378676128675336L, 1) | |
| test(-8818761229247524974L, 7361903928218635798L, -1) | |
| test(-460239612252633323L, -7662854947344368725L, 1) | |
| test(2977807727662937042L, -7549105702637036210L, 1) | |
| test(415628984375646263L, -5181382544518532798L, 1) | |
| test(-8808201391150486985L, 2766868173945056047L, -1) | |
| test(-2438752987770741867L, -2682801229352239102L, 1) | |
| test(-9039176582481370526L, 5109370859012131857L, -1) | |
| test(-6518810838185736764L, 612030854711736193L, -1) | |
| test(-723222763675766024L, -8452156148778795797L, 1) | |
| } | |
| @Test | |
| fun bitwiseNot() { | |
| fun test(expected: Long, x: Long) { | |
| assertEquals(expected, x.inv()) | |
| } | |
| test(1406386578883106454L, -1406386578883106455L) | |
| test(-5065753424737328870L, 5065753424737328869L) | |
| test(2498180912133439506L, -2498180912133439507L) | |
| test(-3417617645097176974L, 3417617645097176973L) | |
| test(4952400515267264813L, -4952400515267264814L) | |
| test(4149430339078675315L, -4149430339078675316L) | |
| test(4961809918450635435L, -4961809918450635436L) | |
| test(-295808714778363857L, 295808714778363856L) | |
| test(-5033087994080563510L, 5033087994080563509L) | |
| test(2335191956353907186L, -2335191956353907187L) | |
| test(2976543784068121798L, -2976543784068121799L) | |
| test(5774257430242417862L, -5774257430242417863L) | |
| test(-5203158850856805292L, 5203158850856805291L) | |
| test(2656867406598406382L, -2656867406598406383L) | |
| test(349944556951922984L, -349944556951922985L) | |
| test(-2235069048512104852L, 2235069048512104851L) | |
| test(-6659120388296241551L, 6659120388296241550L) | |
| test(-3040957425825662851L, 3040957425825662850L) | |
| test(-5775077234374864294L, 5775077234374864293L) | |
| test(-1518767499246577383L, 1518767499246577382L) | |
| test(1070100640767033738L, -1070100640767033739L) | |
| test(8895696740996914294L, -8895696740996914295L) | |
| test(1914207089783931554L, -1914207089783931555L) | |
| test(1793754405624530053L, -1793754405624530054L) | |
| test(-4727596867237275197L, 4727596867237275196L) | |
| test(-5311066053511426959L, 5311066053511426958L) | |
| test(7619154394655448072L, -7619154394655448073L) | |
| test(5250967210084652069L, -5250967210084652070L) | |
| test(-5455364456349674746L, 5455364456349674745L) | |
| test(1019609221300419525L, -1019609221300419526L) | |
| test(2187298499813494865L, -2187298499813494866L) | |
| test(7089445246515851057L, -7089445246515851058L) | |
| test(-117530700556341000L, 117530700556340999L) | |
| test(7264034611998876040L, -7264034611998876041L) | |
| test(7750189185721635078L, -7750189185721635079L) | |
| test(-7930464363410409312L, 7930464363410409311L) | |
| test(-3724992682063679742L, 3724992682063679741L) | |
| test(-69347497633896303L, 69347497633896302L) | |
| test(-7081869313756020883L, 7081869313756020882L) | |
| test(-260714627593142486L, 260714627593142485L) | |
| test(1185242357839654984L, -1185242357839654985L) | |
| test(-7564605668187644040L, 7564605668187644039L) | |
| test(3871856848880622734L, -3871856848880622735L) | |
| test(-4817126385920070332L, 4817126385920070331L) | |
| test(-5888158719107453004L, 5888158719107453003L) | |
| test(-6109337908490803053L, 6109337908490803052L) | |
| test(1976010683499657518L, -1976010683499657519L) | |
| test(-4432126610911889114L, 4432126610911889113L) | |
| test(-462096843480338453L, 462096843480338452L) | |
| test(-241839956263802374L, 241839956263802373L) | |
| } | |
| @Test | |
| fun bitwiseOr() { | |
| fun test(expected: Long, x: Long, y: Long) { | |
| assertEquals(expected, x or y) | |
| } | |
| test(-2613546261823747L, -732254410524747223L, 5345832810278072061L) | |
| test(3421574493437913976L, 2696479001637514040L, 797647112316668528L) | |
| test(-16042512477593622L, -664842653033835350L, -448952131140493374L) | |
| test(5830854331665341311L, 1182857968182411900L, 5827951603767122247L) | |
| test(-720603522827034697L, -1920249875726639821L, 5811721741070616501L) | |
| test(-2429989451465175L, -326992767357722080L, -5866127430977143287L) | |
| test(-45248344289067025L, -2353906758366184474L, -1055227015112063061L) | |
| test(-4698666246569598983L, -4734697660499845319L, 1621457430914915536L) | |
| test(-24814331965472769L, -926314086088462360L, 2279900522349328671L) | |
| test(8059190707467844254L, 2852111230804619804L, 7842960731354904726L) | |
| test(-1299871242251165713L, -3683824728419169311L, 2699284952865513135L) | |
| test(-41870100751729666L, -5232550147682886938L, -2428804309254984770L) | |
| test(6908433860711458460L, 5393524540374819456L, 6890418190755046556L) | |
| test(7993562706145703421L, 7416377889934169588L, 1010726668980695177L) | |
| test(-172295982489308161L, -4856286452619001099L, 7032617688688324942L) | |
| test(-2918992351416288789L, 6065686119411425387L, -2931663545932777054L) | |
| test(8322018733155337727L, 5794053415639762293L, 7141908358983730638L) | |
| test(-4755872684732145997L, -4826261879547622223L, 1584870117983689363L) | |
| test(-2476417429357203461L, -2548561902270470214L, 1549343018945998411L) | |
| test(-369653621121128705L, -5557800598580943118L, 5211256272336404557L) | |
| test(-3171660142335247466L, -4351855033137776256L, 1289125874441159318L) | |
| test(-787216413499655748L, 6130308206832544156L, -2017009453335512668L) | |
| test(7926297957957107629L, 3012135534784600329L, 5528131121954895525L) | |
| test(-1153215787209601037L, 3281699202371666403L, -1765934039245778991L) | |
| test(6881359415537745819L, 1688635789095255962L, 6787565517611350803L) | |
| test(-8648116384209080578L, -9202397995633793986L, -8668383956993675538L) | |
| test(-602670364721666L, 7483112994760842748L, -385664398910673506L) | |
| test(-292888044845940995L, -292891458105855768L, -2746857536523755907L) | |
| test(-4977890735616730628L, -7329350491424339716L, -6277252349998458456L) | |
| test(4503388486656715234L, 4490713934143219808L, 17741664735021538L) | |
| test(-5701559780695884293L, -5701741286170118677L, -6914436005175818056L) | |
| test(-5779831442641846291L, 993300921744289769L, -5797856736963307292L) | |
| test(-290763737917315074L, 5473740978342430494L, -5078653238533283082L) | |
| test(-74318466972713413L, -233070474449197557L, -2686500410628990928L) | |
| test(-6920485765606572033L, 1811874579410020463L, -8145465210131030094L) | |
| test(-288372222960273450L, 7691970788769154832L, -1053498197837811242L) | |
| test(9217689610436018175L, 9118186006662675386L, 3416982267728807389L) | |
| test(9145472665524008399L, 8845664388695744903L, 7253942521130268106L) | |
| test(8520800324501585391L, 2612004993903957345L, 5920089518940241038L) | |
| test(-5334523139102147867L, -6564568800883844411L, 1564742708242051684L) | |
| test(-6940364003006747649L, -6987881135588046647L, -8021804063776707714L) | |
| test(-6801716370022401L, -170695486873386145L, -1736202733831922463L) | |
| test(-216493289859239969L, 615458773225571547L, -218758568622478452L) | |
| test(-374093511683146753L, 3084633618707954610L, -1116221274237416993L) | |
| test(-2387587339420727361L, -4405345383298137980L, 6636200699812185915L) | |
| test(-1731705165849379329L, 4875035904673097819L, -6596017243635173915L) | |
| test(-147501890251260097L, -148100032629917899L, 7535477669170072367L) | |
| test(-686808179565166593L, -8776722885123410241L, -840635388947440167L) | |
| test(-2924806642048485385L, -2933995819876272797L, -4386233589193955660L) | |
| test(-154249953701857396L, -2171950689813499516L, 9063633311846033288L) | |
| } | |
| @Test | |
| fun bitwiseAnd() { | |
| fun test(expected: Long, x: Long, y: Long) { | |
| assertEquals(expected, x and y) | |
| } | |
| test(76866864474772480L, 1518159482761016584L, -6641824821105304521L) | |
| test(-3457554706992136192L, -3157747983614630634L, -2808454669606774239L) | |
| test(-9212111935053496320L, -8111098352606606816L, -1101013866591026742L) | |
| test(-8067906238548507614L, -437628452145933277L, -8062623626330200390L) | |
| test(1306063832401432868L, 6028164543958998829L, 1902368571311640996L) | |
| test(290484375182639114L, 291752186448215071L, 9010342492458418378L) | |
| test(153197360447488148L, 7955027074777874868L, 153779005941156511L) | |
| test(2381559777949401217L, 8443545652655876545L, 2526276136490124973L) | |
| test(1152924260097024184L, 1395569193552412350L, 4071661456730611897L) | |
| test(36028870340188164L, -6218303295630779004L, 1624191667329907236L) | |
| test(51952143485652240L, -8504253278454231208L, 1637268985052167571L) | |
| test(2309581386439540738L, 3575110474069786663L, -5877919068377462574L) | |
| test(-8080434026952257519L, -2315168695265372909L, -8071108514578657035L) | |
| test(6276493755819008L, 8112792678725019438L, 657187380755735744L) | |
| test(217449317261139968L, -2062987362041764220L, 1992149119552090440L) | |
| test(-4176234055483758504L, -3598644602753160866L, -1861119886376276775L) | |
| test(4704223293901654016L, 5857470889943002053L, -4328870273523528678L) | |
| test(8363189190837666117L, 8952953554949964613L, -769908401025784465L) | |
| test(3498185872422470290L, 8258561189039573746L, 4075684841557452446L) | |
| test(152031744811368624L, 170047302979390384L, 188204032090751156L) | |
| test(-6947918360261991384L, -6920860997071969106L, -4638813752546857431L) | |
| test(4773888190228688898L, 4860586990709995570L, -2971977436771387582L) | |
| test(10278305733755026L, 4748065148087263387L, 161255014989813942L) | |
| test(-5727407743982063484L, -5715302060276321884L, -5056348510402596716L) | |
| test(-1287747740781772447L, -1261234657337996827L, -134615009666509469L) | |
| test(146419765681076362L, -5555066422590801761L, 5047336750771649418L) | |
| test(1161933938494163120L, 3868632503303470008L, -2871519996647158542L) | |
| test(2035794844651131392L, 2081113725736229380L, -6970203712651684119L) | |
| test(-8718956379931848639L, -8699816080424968763L, -1790009333525024183L) | |
| test(2305846170454917457L, -6592122016529403019L, 3699855408466037209L) | |
| test(1297085485057794242L, 6824147944731570370L, 1297719358344094450L) | |
| test(-2987000190520245183L, -653713302077782055L, -2410516622272607131L) | |
| test(-9074494313555000700L, -8497729801827538201L, -8757553481155291236L) | |
| test(-6340925317080538148L, -558285175668710436L, -5861774332979855362L) | |
| test(-2161164149023808496L, -960664228237319055L, -2143127760139164520L) | |
| test(320179444010717800L, 2698669699295908460L, -8757944750987462663L) | |
| test(144512116068450304L, -4088870903741410270L, 2500618527615928924L) | |
| test(-7888036226553954292L, -2623289758830370499L, -7870012890183970292L) | |
| test(36188363825353220L, 5255900585270516671L, 1333587896419014148L) | |
| test(6417771495000134724L, 9031034116186600774L, -2796520704900833579L) | |
| test(4616893315328639104L, -4243933831904942959L, 8698415720520667596L) | |
| test(576694201158470210L, 903521970964279106L, 2887041401113893459L) | |
| test(8567006515635945861L, 8643603040776227813L, -76737606277036649L) | |
| test(5916604216750661664L, -3215627100310413264L, 6249871729558647915L) | |
| test(2305856212826375944L, 3211134852027244428L, -6897740518823901333L) | |
| test(85570600736229700L, 2680018099529944532L, 1422164597223041380L) | |
| test(8079484120056629843L, 8105416119112362587L, 8476509488258980851L) | |
| test(1441758068147864099L, 1518812428010637107L, 8539457623816399467L) | |
| test(1894326628160946348L, 1895738751332569260L, -2356832824956688644L) | |
| test(2882919871120277520L, 4391625900913461531L, 2956119867420268048L) | |
| } | |
| @Test | |
| fun bitwiseXor() { | |
| fun test(expected: Long, x: Long, y: Long) { | |
| assertEquals(expected, x xor y) | |
| } | |
| test(-1345283394711251164L, -5494496810055058212L, 6839621630049102840L) | |
| test(1177739103851983454L, 6158022126886990489L, 4984810816587366599L) | |
| test(-2204300700029598283L, 1233870775205927883L, -1119330462532772226L) | |
| test(-7148123363625843479L, 7798122998092269952L, -1084034761905582743L) | |
| test(5963743598839966616L, 95326718809172319L, 6021825151394693831L) | |
| test(-6821612690598126759L, -362149276737089815L, 6606112428146152880L) | |
| test(648084059595035442L, -8458368415573046015L, -9051210810203578829L) | |
| test(150543288812241171L, -14578285135338579L, -154561155574275394L) | |
| test(2299862956880245212L, -7356743072970029538L, -8787270491260618814L) | |
| test(-6921750493429036678L, 8899282331008531693L, -1985635844405627497L) | |
| test(-7539137278621614021L, 7152725435954964647L, -856792829842315108L) | |
| test(3977512618797217577L, 7546071599906842763L, 6884876300521496482L) | |
| test(5787075022276678939L, -872709838480168559L, -6652853399531225974L) | |
| test(-1100292585378215294L, 6011211457303404974L, -6640868530527212756L) | |
| test(784693412557232428L, -7005516635337999530L, -7771896579505085830L) | |
| test(-536410976242375002L, 3875986038609442114L, -3655781831807888412L) | |
| test(7815158447936394893L, -88054661166499213L, -7876180077040489218L) | |
| test(2020578627487381781L, 2648592106093999733L, 4092428400936046432L) | |
| test(-6395160311373034714L, 4742133071334599144L, -1805763735648148786L) | |
| test(-441769954074007893L, -6657837103464807620L, 6504351236289652119L) | |
| test(6918489142066290938L, 5939064367543533499L, 3632331956590387009L) | |
| test(2433883990441869738L, 3127159199564273868L, 766458703092373862L) | |
| test(-8920139357303733331L, 4465379772372369781L, -5058250752714718504L) | |
| test(6491247119739672874L, -8054699132840626143L, -3881400233028001525L) | |
| test(7293310738954683159L, -1795834570369388381L, -9068874707512872012L) | |
| test(-1564358087740099369L, 8316440948344494714L, -7411897624314515795L) | |
| test(-6166268887740733107L, -5967425765583698090L, 523106950137081371L) | |
| test(474138983114521864L, -2352219494436833830L, -2751903668769699630L) | |
| test(-1796619272599084973L, 3697494534408094884L, -3152233891800308489L) | |
| test(6749975861603984239L, 9110049561117643145L, 2576585135545856742L) | |
| test(2918631955902790514L, -2782422835043071708L, -1016747674421759402L) | |
| test(-8180690364776263895L, -7191066992704591214L, 1318547397806302651L) | |
| test(4521254935253472413L, -3695203816927444106L, -1006195129194866709L) | |
| test(-7493949464502980537L, 4977644184000768067L, -2516384463912069116L) | |
| test(-7559040216863644878L, -3638074259892523847L, 6528550695483625355L) | |
| test(-6930185456427239817L, 7334461368042660015L, -424969169842121000L) | |
| test(-4761474216833548639L, -1695959000690469613L, 6169199399844162482L) | |
| test(-2384579340115197158L, -4499074431917642449L, 2267657096247078453L) | |
| test(-4934694780867541039L, 7843570073008701485L, -2928038698018994180L) | |
| test(5241140121429290918L, -942596195682218275L, -5019405910948372101L) | |
| test(-8761259447037421544L, 6389526908210287028L, -2394252346556151380L) | |
| test(2869237754534285562L, 8088172451025036055L, 6336390355576255469L) | |
| test(4815254228977302001L, 5599787830032599513L, 1109373601620275240L) | |
| test(3903284871130245430L, -4990754088192038910L, -8316451476840660684L) | |
| test(4907811280174376104L, -2044244740855885358L, -6359805712396061318L) | |
| test(-1191759457854524194L, 8312586765039472901L, -7193875294949415461L) | |
| test(1558396501139351174L, -3140618724783712169L, -4482543203453698351L) | |
| test(-8596716778517160802L, 1067526238207535946L, -8763214506171238444L) | |
| test(-3512891522172443941L, 1284007884260900389L, -2382960985657451266L) | |
| test(7352713776562101425L, 5100002577055830592L, 2363491965446098673L) | |
| } | |
| @Test | |
| fun shiftLeft() { | |
| fun test(expected: Long, x: Long, y: Int) { | |
| assertEquals(expected, x shl y) | |
| } | |
| test(-2970093265644158976L, 5448625119334748799L, -73329513) | |
| test(-4494976474830340096L, -1252320687782865211L, -339545061) | |
| test(0L, -7529362387021292180L, -809014658) | |
| test(-6356089297145167872L, 3641054366760334803L, 1030973528) | |
| test(7286824197085462528L, 3520413204675044946L, 82069876) | |
| test(-3278017996353699840L, -2558088160941399927L, 503039850) | |
| test(-5843420516513218560L, 4791828575890798045L, 1171866675) | |
| test(-3367538050735710208L, 1231323421663621707L, -1938771891) | |
| test(1888646915074293760L, -9165795994885001326L, 1537970769) | |
| test(4852401102343520L, 4035376903658412651L, 1856717061) | |
| test(5565618142278844416L, 2851140530886203800L, 1561097110) | |
| test(-4038616684974760040L, -7422356113262926861L, 858801923) | |
| test(-6541630578936633280L, -780886707895193278L, 1110910853) | |
| test(859616599361978368L, 3733313702748734961L, -338843811) | |
| test(-7453927974274859008L, -866510160693522860L, -813015128) | |
| test(9036894811516441600L, -441534870147678075L, -2122946486) | |
| test(3314649325744685056L, 5028237321003304750L, 2126487160) | |
| test(-3053018334892130304L, -7312385461262653344L, -32425558) | |
| test(-4611686018427387904L, 1756944750067922542L, 1222452733) | |
| test(-5080060379673919488L, 911926978090186099L, -834196361) | |
| test(6629298651489370112L, -7489247941380587858L, -1762017159) | |
| test(-288230376151711744L, 8331985217752613630L, 1042647417) | |
| test(5188146770730811392L, -2655334158172847278L, -753853766) | |
| test(-6954300141096140800L, 7504492034471689794L, 1382741393) | |
| test(-1286526581291876352L, 5767694384674461113L, 1929734882) | |
| test(-6809442636584189952L, -2132571568854329722L, -129147274) | |
| test(2708742116339613696L, 6353674613576604708L, 289081298) | |
| test(-2305843009213693952L, 4345082395622665255L, 370873533) | |
| test(438678751203557376L, -8715986565789905875L, -916638609) | |
| test(-4611686018427387904L, -6752063794606076436L, 1493241980) | |
| test(-7784308849075353252L, -3892154424537676626L, 2074806145) | |
| test(5885641763019816960L, -7602816679136650528L, -2062208020) | |
| test(7053568968128200704L, 1978935989718610781L, -902835237) | |
| test(7261635908661673984L, 3315013180757929043L, 868975579) | |
| test(2420500656866532864L, 4508327167715938447L, 575477257) | |
| test(-8228718371591885504L, 5250312624809742036L, 1238257604) | |
| test(MinVal, -2335460374644938788L, 553354173) | |
| test(-8199764094790664192L, -2221296663047759285L, 1899246569) | |
| test(-2095845084401500160L, -3851886195238883679L, 1487779500) | |
| test(-3639161319019061248L, -802529200790849426L, -119255604) | |
| test(8334058599626047488L, 4498082071275250057L, 2089738146) | |
| test(9180988356411322368L, -4235645797120184753L, 800913356) | |
| test(7089417879434559488L, -1720882952904599381L, -1609938966) | |
| test(3856188238922252288L, 1093319069580253367L, -1518372133) | |
| test(-4742607066969931776L, 3772324202736502236L, -923142549) | |
| test(1312485114016636864L, -8626403704644842369L, -252023418) | |
| test(0L, -5643258165082180792L, 1174528765) | |
| test(-6881571249355748148L, -1720392812338937037L, -967606846) | |
| test(4994738277358501888L, -8565500659172726672L, 1237159401) | |
| test(7770778327110513462L, -5337982873299519077L, 484063041) | |
| } | |
| @Test | |
| fun shiftLogicalRight() { | |
| fun test(expected: Long, x: Long, y: Int) { | |
| assertEquals(expected, x ushr y) | |
| } | |
| test(20858343375185L, 5467889565744671255L, 2099569298) | |
| test(40L, 5849044181494380798L, -2053535175) | |
| test(258L, 4664225633318643153L, -303705162) | |
| test(11295177044L, 6064052000889978176L, 1015183069) | |
| test(1802877774429066L, 923073420507681829L, 1191603401) | |
| test(110698435923972274L, -4277344275441100506L, 485744647) | |
| test(2268034701581L, -8933917052726000505L, -386336938) | |
| test(185L, -5090094480666808474L, 2048537528) | |
| test(45022L, -5773949593215980393L, -791372688) | |
| test(587L, -7863358856597183925L, -1259543946) | |
| test(124192589756539L, 4069542781142272099L, -1409717873) | |
| test(3L, -4039330657386967783L, -847604034) | |
| test(11L, 6646835208299080604L, -216455813) | |
| test(266L, -8837672319221710475L, 787633143) | |
| test(254846827215005840L, -2136547131949177847L, 1584315654) | |
| test(25694L, -3982242199062531977L, 1300572337) | |
| test(13872010164654615L, 1775617301075790739L, 1180537031) | |
| test(43758446423057L, 5735507089563036214L, -1668840943) | |
| test(42419379403L, -7059878620412332866L, -2118687716) | |
| test(26L, 3760648055340959723L, 350453433) | |
| test(245197086164441L, -2377507834836728200L, -1203541232) | |
| test(172610132266043L, -7134566445522111487L, 254766480) | |
| test(31181070059474408L, 3991176967612724340L, 1175504903) | |
| test(99018L, -4511082038238435159L, 629735727) | |
| test(16237L, 4570503775438788501L, 577897264) | |
| test(689994L, 6069259321955006666L, 243415787) | |
| test(4088L, -34322001027985900L, -1844808396) | |
| test(48441534L, -5131236380867176343L, -2102413146) | |
| test(42961906L, 5766249524366694L, 365466523) | |
| test(1946L, -917054041531076386L, -717261067) | |
| test(46638927393L, -5927202331435696117L, -675522340) | |
| test(8L, -8401337655395112344L, 192236860) | |
| test(1112244037586L, -9116564842061629491L, -1278414057) | |
| test(39284548082721288L, -8389899764532901884L, 2134440904) | |
| test(175996054L, -6352387266942387944L, -1873327132) | |
| test(771890457L, 1657622134816050076L, 1526047775) | |
| test(-5155643191806034313L, -5155643191806034313L, 93595840) | |
| test(88233L, -6029041726036498474L, 1625850351) | |
| test(21L, -6213512192619062443L, -742234373) | |
| test(200097858L, 6875310053473933879L, 1678034787) | |
| test(1L, 1914479947832224654L, 363036476) | |
| test(13467856720853L, 7061035664462656346L, -1297864237) | |
| test(27660L, 3892851735690760579L, -1204888593) | |
| test(563888993282225291L, 4511111946257802334L, -1598422013) | |
| test(61L, -830456149344766304L, 415626042) | |
| test(12362394L, -4854147173401088028L, -1259042456) | |
| test(36437577573404L, 2387973083850613402L, 1780437072) | |
| test(88L, 794207481683175979L, 1729784373) | |
| test(27109L, -3185446728240817200L, -204793551) | |
| test(47238811875L, 1585071500839360304L, 768150041) | |
| } | |
| @Test | |
| fun shiftArithmeticRight() { | |
| fun test(expected: Long, x: Long, y: Int) { | |
| assertEquals(expected, x shr y) | |
| } | |
| test(12083834796762671L, 3093461707971243921L, -1316031160) | |
| test(1519L, 3421928456457518817L, 1452874739) | |
| test(535935432373L, 4495752255492475708L, 1356453463) | |
| test(-15335L, -8632722372891668805L, 393061105) | |
| test(5L, 788322396658845547L, -1980770119) | |
| test(61456853258820810L, 7866477217129063791L, 1545082311) | |
| test(523169438L, 2246995629203373230L, -2119005984) | |
| test(-3140911288418704L, -3216293159340752798L, 511130378) | |
| test(-197222925856L, -3308851627222811261L, -1176556648) | |
| test(263770043357L, 1106331747933537319L, -1512809002) | |
| test(-51L, -7276147772649213050L, 2083093369) | |
| test(-5L, -2316677564967907265L, -207994821) | |
| test(-13942941898828745L, -7138786252200317415L, -638486135) | |
| test(-10706L, -3013225718780605504L, 611632432) | |
| test(431055124131099630L, 6896881986097594087L, 244039684) | |
| test(1L, 6268288981035101119L, -439796226) | |
| test(7L, 8640634673209662748L, -652735044) | |
| test(423071173443L, 3548978230116134282L, 613066583) | |
| test(-2989967169176L, -6270415628770328030L, -775565931) | |
| test(-3361820324L, -7219454171626000888L, -531660641) | |
| test(5575500511542107L, 1427328130954779450L, -434372344) | |
| test(-556401176231479L, -9116076871376536336L, -763866098) | |
| test(-72307L, -2544065484579384992L, -1841005139) | |
| test(72262L, 1271262762129413514L, 69079212) | |
| test(-102489556331053708L, -6559331605187437274L, 1371712838) | |
| test(70395261L, 4837525531312068659L, 1948323684) | |
| test(-329L, -5915257366775763309L, -1243200330) | |
| test(-88269909299L, -2961846669202422044L, 728732313) | |
| test(-62655L, -8817858119848136407L, -777879057) | |
| test(85473610109514853L, 85473610109514853L, 373478400) | |
| test(-1L, -7586855577422630242L, 942391743) | |
| test(5131L, 5777725881539893498L, -813574478) | |
| test(9L, 1351155571146391276L, -641829383) | |
| test(-14492L, -2039493177828382555L, -920501329) | |
| test(40L, 5807947005141331651L, -177471111) | |
| test(59705499154418508L, 7642303891765569108L, -508943033) | |
| test(-37529L, -5281723454849434235L, 401183471) | |
| test(376386L, 3310727509848511642L, 797274667) | |
| test(-1822L, -2050466318844521906L, 1298272370) | |
| test(-10994094310680L, -2882035858978840647L, 532386578) | |
| test(149987163970727L, 4914779388992785344L, -2131012273) | |
| test(-121723L, -8565430458495189455L, -1642432978) | |
| test(40689875474266L, 5333303358163034241L, 1681307793) | |
| test(-278047L, -4891437049391997940L, 2010442220) | |
| test(872834L, 1919382843392628399L, -1707024855) | |
| test(-1L, -4032486568803685L, -829231944) | |
| test(51533210804458L, 6754561006561936063L, 309495249) | |
| test(-11427L, -6432384051195600537L, -176819791) | |
| test(201L, 1812121086093687413L, 2056663541) | |
| test(-8694773540L, -2333985499857848703L, -617227620) | |
| } | |
| @Test | |
| fun negate() { | |
| fun test(expected: Long, x: Long) { | |
| assertEquals(expected, -x) | |
| } | |
| test(0L, 0L) | |
| test(1L, -1L) | |
| test(-1L, 1L) | |
| test(-9223372036854775807L, MaxVal) | |
| test(MinVal, MinVal) | |
| test(-4294967296L, 4294967296L) | |
| test(-6521757321054339836L, 6521757321054339836L) | |
| test(-5034215373457122166L, 5034215373457122166L) | |
| test(-1466708504867719503L, 1466708504867719503L) | |
| test(6932328637909659254L, -6932328637909659254L) | |
| test(-6036151501906311780L, 6036151501906311780L) | |
| test(-2049865194005705494L, 2049865194005705494L) | |
| test(-6415892737421190372L, 6415892737421190372L) | |
| test(7163344881632673520L, -7163344881632673520L) | |
| test(-5465469256934522955L, 5465469256934522955L) | |
| test(-5685869615186909998L, 5685869615186909998L) | |
| test(-2969720262713562574L, 2969720262713562574L) | |
| test(-49296126029544990L, 49296126029544990L) | |
| test(-8788528556936226133L, 8788528556936226133L) | |
| test(4038755528685525299L, -4038755528685525299L) | |
| test(-1074492420652895592L, 1074492420652895592L) | |
| test(-3622318736383541934L, 3622318736383541934L) | |
| test(4914594916508285209L, -4914594916508285209L) | |
| test(-7201284052855688325L, 7201284052855688325L) | |
| test(-3790499419214724571L, 3790499419214724571L) | |
| test(-8011289068563413537L, 8011289068563413537L) | |
| test(-3577068739332851405L, 3577068739332851405L) | |
| test(-6115071375844539143L, 6115071375844539143L) | |
| test(6526707827083299740L, -6526707827083299740L) | |
| test(3112673891190060801L, -3112673891190060801L) | |
| test(3003902505100987603L, -3003902505100987603L) | |
| test(2645609183394921729L, -2645609183394921729L) | |
| test(4998167914278755864L, -4998167914278755864L) | |
| test(5590940018975078416L, -5590940018975078416L) | |
| test(-4546350589039504044L, 4546350589039504044L) | |
| test(4931343496360764878L, -4931343496360764878L) | |
| test(52874837222654534L, -52874837222654534L) | |
| test(2228837764635947525L, -2228837764635947525L) | |
| test(-699644125147613407L, 699644125147613407L) | |
| test(-7560919991164957655L, 7560919991164957655L) | |
| test(-4740041656772685483L, 4740041656772685483L) | |
| test(6370025830897801731L, -6370025830897801731L) | |
| test(-5145272132530939636L, 5145272132530939636L) | |
| test(3801285492485871053L, -3801285492485871053L) | |
| test(-5580041728091891284L, 5580041728091891284L) | |
| test(1504295086290629779L, -1504295086290629779L) | |
| test(-1894169850815200418L, 1894169850815200418L) | |
| test(-5142345395752170872L, 5142345395752170872L) | |
| test(-2059614626708839072L, 2059614626708839072L) | |
| test(6764101357673133489L, -6764101357673133489L) | |
| test(1855883125141869234L, -1855883125141869234L) | |
| test(-8547851575036586975L, 8547851575036586975L) | |
| test(-2458791672488577437L, 2458791672488577437L) | |
| test(8600237054883635595L, -8600237054883635595L) | |
| test(3583990235354542721L, -3583990235354542721L) | |
| test(2957283069254138108L, -2957283069254138108L) | |
| } | |
| @Test | |
| fun plus() { | |
| fun test(expected: Long, x: Long, y: Long) { | |
| assertEquals(expected, x + y) | |
| } | |
| test(-2433913414145288860L, -2433913415150419947L, 1005131087L) | |
| test(7190417094319483341L, 7190417094569730565L, -250247224L) | |
| test(-8440297071285254315L, -8440297070712201045L, -573053270L) | |
| test(-4182841114472128928L, -4182841115722360187L, 1250231259L) | |
| test(1930778912555952111L, 1930778910565887113L, 1990064998L) | |
| test(-3942694955800008028L, -3942694955083685134L, -716322894L) | |
| test(7705242192270010714L, 7705242190628372781L, 1641637933L) | |
| test(8088093439981558721L, 8088093441540626931L, -1559068210L) | |
| test(409778645801625887L, 409778644514166370L, 1287459517L) | |
| test(5014681192099551315L, 5014681192788233382L, -688682067L) | |
| test(-2608924423361531934L, -2608924424689477233L, 1327945299L) | |
| test(-8620418727428276566L, -8620418727962295010L, 534018444L) | |
| test(-5116811003765580457L, -5116811004266544790L, 500964333L) | |
| test(466797473625031396L, 466797473566381010L, 58650386L) | |
| test(548716640880004738L, 548716640744439601L, 135565137L) | |
| test(1844726773970894384L, 1844726772387382421L, 1583511963L) | |
| test(-2554638993633829919L, -2554638995607451402L, 1973621483L) | |
| test(3910455677776483847L, 3910455679107918564L, -1331434717L) | |
| test(1626611332802912373L, 1626611331062029479L, 1740882894L) | |
| test(-2935860100559672408L, -2935860098496441681L, -2063230727L) | |
| test(-7028619595191553451L, -7028619593075073585L, -2116479866L) | |
| test(-1453009017531579993L, -1453009018974127640L, 1442547647L) | |
| test(-2003489716391726903L, -2003489716706140086L, 314413183L) | |
| test(-6085991422431947023L, -6085991423171521406L, 739574383L) | |
| test(-8740933909842007164L, -8740933911862681503L, 2020674339L) | |
| test(5079670096634461164L, 5079670096843001759L, -208540595L) | |
| test(-8170676868318819829L, -8170676866768083707L, -1550736122L) | |
| test(-2606903430814531525L, -2606903432198282718L, 1383751193L) | |
| test(4566344032032694750L, 4566344030599324455L, 1433370295L) | |
| test(434403394228970688L, 434403392274991070L, 1953979618L) | |
| test(4488996435074282858L, 4488996436199997790L, -1125714932L) | |
| test(6469581209714515793L, 6469581207710964251L, 2003551542L) | |
| test(4756706154634446171L, 4756706156580331862L, -1945885691L) | |
| test(-247187529795235106L, -247187531335883991L, 1540648885L) | |
| test(-1782331786257542816L, -1782331784980649789L, -1276893027L) | |
| test(2604368800870123615L, 2604368802720259121L, -1850135506L) | |
| test(-2603928021483848477L, -2603928022120270391L, 636421914L) | |
| test(227415677200863830L, 227415678797843344L, -1596979514L) | |
| test(-2678141494828406821L, -2678141494185161961L, -643244860L) | |
| test(1595522451690042937L, 1595522451179947863L, 510095074L) | |
| test(-1080315956418065613L, -1080315958087557587L, 1669491974L) | |
| test(-1394000483448677229L, -1394000482879290678L, -569386551L) | |
| test(5393143255269010405L, 5393143254832815742L, 436194663L) | |
| test(3086080803617309222L, 3086080802694862574L, 922446648L) | |
| test(-3079483957727273141L, -3079483959413893522L, 1686620381L) | |
| test(-8959613381043138071L, -8959613379516582512L, -1526555559L) | |
| test(-5253410531799693622L, -5253410530151170203L, -1648523419L) | |
| test(-8308110282489704154L, -8308110283731993792L, 1242289638L) | |
| test(-322703747879389106L, -322703748856620959L, 977231853L) | |
| test(5852046712121097366L, 5852046713602404411L, -1481307045L) | |
| } | |
| @Test | |
| fun minus() { | |
| fun test(expected: Long, x: Long, y: Long) { | |
| assertEquals(expected, x - y) | |
| } | |
| // Whitebox corner case | |
| test(-1L, 0L, 1L) | |
| test(1986061787443775719L, 1986061786531926741L, -911848978L) | |
| test(2002065766737908670L, 2002065767152142652L, 414233982L) | |
| test(-2462684939552419214L, -2462684939084788813L, 467630401L) | |
| test(-8508279235553297423L, -8508279237198417759L, -1645120336L) | |
| test(7839506195525549270L, 7839506197479642872L, 1954093602L) | |
| test(-4628932694616068680L, -4628932693148869261L, 1467199419L) | |
| test(-7840803876477289029L, -7840803875191655918L, 1285633111L) | |
| test(-8670153348175879923L, -8670153348443041492L, -267161569L) | |
| test(-1242495931707110914L, -1242495933164810772L, -1457699858L) | |
| test(-8507088039514506937L, -8507088038378074542L, 1136432395L) | |
| test(90780360945105021L, 90780359532567450L, -1412537571L) | |
| test(986525490439540924L, 986525489291348285L, -1148192639L) | |
| test(-8866371591861212506L, -8866371591422202167L, 439010339L) | |
| test(-8107568276862373051L, -8107568278647453278L, -1785080227L) | |
| test(7534812863279983696L, 7534812864750415746L, 1470432050L) | |
| test(-3631733870293241710L, -3631733869505495360L, 787746350L) | |
| test(-6352315350260551401L, -6352315348459271954L, 1801279447L) | |
| test(-9222685583547881455L, -9222685583355676355L, 192205100L) | |
| test(6893165777287389869L, 6893165778671654152L, 1384264283L) | |
| test(4374922365789659495L, 4374922367086388496L, 1296729001L) | |
| test(-668435350990710641L, -668435350030924400L, 959786241L) | |
| test(6592392433218350407L, 6592392432815573779L, -402776628L) | |
| test(-3087465002163696041L, -3087465003742869350L, -1579173309L) | |
| test(7697932253104728967L, 7697932254039254286L, 934525319L) | |
| test(-4198280913984699596L, -4198280914515840124L, -531140528L) | |
| test(-6584160250140365720L, -6584160251001882531L, -861516811L) | |
| test(-4066515537811646002L, -4066515538088171194L, -276525192L) | |
| test(-3582933490129177640L, -3582933488925390211L, 1203787429L) | |
| test(-3997034206135429889L, -3997034205021042356L, 1114387533L) | |
| test(-1816067228069450094L, -1816067230174222304L, -2104772210L) | |
| test(7901705968383945410L, 7901705967077018212L, -1306927198L) | |
| test(-7098896964384888299L, -7098896965558095200L, -1173206901L) | |
| test(7691595054538136496L, 7691595056391915873L, 1853779377L) | |
| test(1185121830164420906L, 1185121831425231077L, 1260810171L) | |
| test(2828560744907836028L, 2828560746155873666L, 1248037638L) | |
| test(-8972435051651997701L, -8972435052203182058L, -551184357L) | |
| test(4262481960874455993L, 4262481961621435585L, 746979592L) | |
| test(-5121922580566520947L, -5121922580844970570L, -278449623L) | |
| test(-2934566834100100266L, -2934566833279842160L, 820258106L) | |
| test(2069114446928198006L, 2069114445924505589L, -1003692417L) | |
| test(6064340163069368882L, 6064340162935355320L, -134013562L) | |
| test(-933615963411001916L, -933615964053308835L, -642306919L) | |
| test(1195021009572561699L, 1195021010578791501L, 1006229802L) | |
| test(8824806479059281365L, 8824806478386318374L, -672962991L) | |
| test(1124449446003809225L, 1124449446837255411L, 833446186L) | |
| test(6986942923034886189L, 6986942924704869081L, 1669982892L) | |
| test(-7361868769204923739L, -7361868771289309455L, -2084385716L) | |
| test(-2335066428381605387L, -2335066428056987903L, 324617484L) | |
| test(-2587674234131885903L, -2587674234309061950L, -177176047L) | |
| test(4156626309610486835L, 4156626310084674081L, 474187246L) | |
| } | |
| @Test | |
| fun times() { | |
| fun test(expected: Long, x: Long, y: Long) { | |
| assertEquals(expected, x * y) | |
| } | |
| test(4466388609482222752L, 5036730703751139101L, 1721031968L) | |
| test(-5306406633626451618L, 6841001363030916138L, -850659149L) | |
| test(-2089429074589014090L, 6479175383404433070L, -2054981347L) | |
| test(8460323636954078769L, 4758350191766752285L, 324089381L) | |
| test(-5923156225012284416L, -9220199974010895616L, 2043533548L) | |
| test(2209979247360766336L, 402330037909496490L, 1272468928L) | |
| test(-740541357758937180L, 4408402409782238012L, 244738503L) | |
| test(2871901923443243387L, 1825457782616022753L, 750432219L) | |
| test(9125337863049267666L, 8778397201268811722L, -1367964491L) | |
| test(3711682045754580479L, -4708639793668596655L, -461844145L) | |
| test(1732264674836666559L, -1424969076694017025L, 1495188289L) | |
| test(-8346467091089544904L, -1559241233428019412L, -1134101206L) | |
| test(-8095884306901452544L, -1856101761515477674L, -488368768L) | |
| test(-9042873153403997255L, 5072892489253867083L, -1852476533L) | |
| test(4053715608733663552L, -6534575507831614492L, -235907376L) | |
| test(9220795863880349128L, -6669028838631715807L, 990887112L) | |
| test(-7439311185174790639L, 1658475494989623827L, 1634792395L) | |
| test(3682932726430389338L, -2535802754766948607L, 799604314L) | |
| test(-4254078436736665200L, -5278482193701750342L, 1440046952L) | |
| test(-4111927075334805665L, 7555445675614168645L, -156634285L) | |
| test(2557607844416221682L, 2257106508626305843L, 600761926L) | |
| test(629063292600453823L, 3408004029612789043L, 1986597957L) | |
| test(-6281137167850793591L, 3565530158654203649L, -1711884663L) | |
| test(-8960699083603279762L, 7741229999055406521L, 1763957470L) | |
| test(-4659748226969785840L, 586638899445089560L, -241565738L) | |
| test(6421423204109643806L, 5432696032973354067L, 1823828906L) | |
| test(-6327137676645557459L, -9041036347144385291L, 48280153L) | |
| test(-2450619808166955997L, -6984024658713508935L, 301685947L) | |
| test(6215624234851202252L, -2968317789301520388L, -889918259L) | |
| test(-5714680300641087143L, -6052471925706112475L, -996910555L) | |
| test(7626829871011888526L, -5598604266227803174L, -1761056509L) | |
| test(-336850264806741348L, -5131017450105726124L, -1549721205L) | |
| test(6070932791384448829L, 1417786036454722783L, 1414822755L) | |
| test(7948063376841928368L, 6196657643428237716L, -948878276L) | |
| test(-5967293703566631097L, 3321209290390227081L, 1294488911L) | |
| test(3523504090718067750L, 3447048083977045358L, 1394107269L) | |
| test(5048267536820983632L, 1021477279097134774L, -763790472L) | |
| test(4190715788841493798L, -1591527307038089513L, 1449901386L) | |
| test(-1622739101396600271L, 1584681944074230843L, 1406834819L) | |
| test(-1343991317807294247L, -3430617443510905869L, -1861488893L) | |
| test(-3418544184172942166L, 8236081087714485202L, 2083344781L) | |
| test(1667294848924673254L, -1899145842670901051L, -552836178L) | |
| test(-679895375193063706L, 886032925265918614L, -1547545223L) | |
| test(3479342126707702906L, 7265546667600848990L, 1172634963L) | |
| test(8579781526146211328L, 214039809610896270L, -1645815552L) | |
| test(6655434057463364804L, -8344930817859169419L, -295254732L) | |
| test(-1618504871616397322L, -8524408781207533066L, -1583554303L) | |
| test(-719194663978943528L, -8840851638735986326L, 1620104636L) | |
| test(-134629840588182168L, -3318104751418409923L, 21655944L) | |
| test(-5452818611351983605L, -459718335291242471L, 2077087683L) | |
| test(8433193943336928478L, -304510477859059605L, -504694402761190L) | |
| test(-12731773183499098L, -253162060478L, 50291L) | |
| test(0L, 0L, -13850059L) | |
| test(7569251612557229982L, -8660470952582643L, -874L) | |
| test(-11988L, -1332L, 9L) | |
| test(-8243580206627053600L, -29568141078178L, 1526544L) | |
| test(2184313243348463060L, 328926390054L, -3638668370L) | |
| test(46841680L, 205L, 228496L) | |
| test(740594256954004614L, -19460467868573L, -81306407837343422L) | |
| test(1686350941924289808L, 515501176792L, -14676235751610L) | |
| test(6344118389112076765L, 414866483823975467L, 470120246452409879L) | |
| test(-11349L, -117L, 97L) | |
| test(-15402750L, 30L, -513425L) | |
| test(-1358824991029065112L, 1375729456898L, 623181770548L) | |
| test(15724552950015L, 80638733077L, 195L) | |
| test(53496875011846994L, -12740384618206L, -4199L) | |
| test(4976657084923555180L, 521743856055513645L, -2105465236503908L) | |
| test(8L, -8L, -1L) | |
| test(619912072L, -34L, -18232708L) | |
| test(-4326473264912647477L, -4512416881041611L, 16599101951L) | |
| test(1570555712220296245L, -2433585405235L, -645367L) | |
| test(17255933394228520L, -774590L, -22277506028L) | |
| test(5693979142683511208L, 36307900L, -19149614702538L) | |
| test(5058564788733665886L, 22169162314093L, 18534166L) | |
| test(-1912529786602316571L, -3848931303L, 82157326906201261L) | |
| test(-5528746562555987920L, 47326191440L, -39094697833L) | |
| test(-2254385599727553792L, -14641542L, -3714491797523081344L) | |
| test(7866519297L, 771303L, 10199L) | |
| test(0L, 0L, -14806105L) | |
| test(47573376L, 3964448L, 12L) | |
| test(-2609453654630496L, 77505454872L, -33668L) | |
| test(-3686637842539497440L, 14929228532112L, 6555913938L) | |
| test(4853210716974444062L, 431219964946864070L, 1181669L) | |
| test(-14100245424035L, 2820049084807L, -5L) | |
| test(8725676311339308590L, -16830140929953126L, 93975690486771L) | |
| test(2367313232506909772L, 206188838L, 1249841574949634L) | |
| test(-8124607316971866814L, 16674057030L, 1104000290638571L) | |
| test(6446979988520042261L, -64710169253973867L, -23079009995647L) | |
| test(654519384576L, 31096512L, 21048L) | |
| test(153203910181224144L, 22L, 6963814099146552L) | |
| test(1436126772314869678L, 1260318190682L, 1123567398313107L) | |
| test(-75661570L, -5L, 15132314L) | |
| test(6685324216344409292L, 9099845427374L, -126975734L) | |
| test(-7100290L, 5L, -1420058L) | |
| test(-1940696769116022576L, -28274L, 68638918056024L) | |
| test(-7932625013377175292L, 193355246244L, 36593871833L) | |
| test(-7L, 1L, -7L) | |
| test(-48355929429178192L, 66789957775108L, -724L) | |
| test(-10521672279471L, 10521672279471L, -1L) | |
| test(4095350372293300139L, -8747667231979L, -105906241L) | |
| // Random power of 2 tests | |
| test(105129441230848L, 100259248L, 1048576L) | |
| test(105129441230848L, 1048576L, 100259248L) | |
| test(1297036692682702848L, 72L, 18014398509481984L) | |
| test(1297036692682702848L, 18014398509481984L, 72L) | |
| test(-11947131749269504L, -22253267L, 536870912L) | |
| test(-11947131749269504L, 536870912L, -22253267L) | |
| test(8659858730206101504L, 23022568162358L, 8388608L) | |
| test(8659858730206101504L, 8388608L, 23022568162358L) | |
| test(207805415948288L, 1548271L, 134217728L) | |
| test(207805415948288L, 134217728L, 1548271L) | |
| test(0L, -55880L, MinVal) | |
| test(0L, MinVal, -55880L) | |
| test(-2199023255552L, -1L, 2199023255552L) | |
| test(-2199023255552L, 2199023255552L, -1L) | |
| test(851968L, 13L, 65536L) | |
| test(851968L, 65536L, 13L) | |
| test(-17592186044416L, -1L, 17592186044416L) | |
| test(-17592186044416L, 17592186044416L, -1L) | |
| test(-7000097952840548352L, 222527207082L, 4398046511104L) | |
| test(-7000097952840548352L, 4398046511104L, 222527207082L) | |
| test(2449958197289549824L, 34L, 72057594037927936L) | |
| test(2449958197289549824L, 72057594037927936L, 34L) | |
| test(-16623318531928064L, -4058427375959L, 4096L) | |
| test(-16623318531928064L, 4096L, -4058427375959L) | |
| test(-8006274237557899264L, -2214324316485807900L, 281474976710656L) | |
| test(-8006274237557899264L, 281474976710656L, -2214324316485807900L) | |
| test(-61568356188160L, -14335L, 4294967296L) | |
| test(-61568356188160L, 4294967296L, -14335L) | |
| test(-3101185093760L, -48456017090L, 64L) | |
| test(-3101185093760L, 64L, -48456017090L) | |
| test(-20250091264L, -158203838L, 128L) | |
| test(-20250091264L, 128L, -158203838L) | |
| test(-118778880L, -115995L, 1024L) | |
| test(-118778880L, 1024L, -115995L) | |
| test(-4052041596928L, -483041L, 8388608L) | |
| test(-4052041596928L, 8388608L, -483041L) | |
| test(2511601217189183488L, 186114971352L, 35184372088832L) | |
| test(2511601217189183488L, 35184372088832L, 186114971352L) | |
| test(258064524401082304L, 8064516387533822L, 32L) | |
| test(258064524401082304L, 32L, 8064516387533822L) | |
| test(-13379618472345600L, -816627104025L, 16384L) | |
| test(-13379618472345600L, 16384L, -816627104025L) | |
| test(-56908316672L, -106L, 536870912L) | |
| test(-56908316672L, 536870912L, -106L) | |
| test(0L, 0L, 4096L) | |
| test(0L, 4096L, 0L) | |
| test(-513636086841344L, -61230193L, 8388608L) | |
| test(-513636086841344L, 8388608L, -61230193L) | |
| test(-3894698884001169408L, 41500264L, 8796093022208L) | |
| test(-3894698884001169408L, 8796093022208L, 41500264L) | |
| test(1055744L, 32992L, 32L) | |
| test(1055744L, 32L, 32992L) | |
| test(558955633836032L, 65071L, 8589934592L) | |
| test(558955633836032L, 8589934592L, 65071L) | |
| test(-7994738298998226944L, 76048351L, 137438953472L) | |
| test(-7994738298998226944L, 137438953472L, 76048351L) | |
| test(-4L, -2L, 2L) | |
| test(-4L, 2L, -2L) | |
| test(-4259162954240L, -8318677645L, 512L) | |
| test(-4259162954240L, 512L, -8318677645L) | |
| test(2922836158163451904L, -60717806L, 2251799813685248L) | |
| test(2922836158163451904L, 2251799813685248L, -60717806L) | |
| test(0L, 0L, 8192L) | |
| test(0L, 8192L, 0L) | |
| test(5531246788608L, 164844L, 33554432L) | |
| test(5531246788608L, 33554432L, 164844L) | |
| test(8574853690513424384L, -678234761L, 72057594037927936L) | |
| test(8574853690513424384L, 72057594037927936L, -678234761L) | |
| test(-2828260565988671488L, -103657850088L, 2251799813685248L) | |
| test(-2828260565988671488L, 2251799813685248L, -103657850088L) | |
| test(MinVal, 138748537820112453L, MinVal) | |
| test(MinVal, MinVal, 138748537820112453L) | |
| test(0L, 0L, 17179869184L) | |
| test(0L, 17179869184L, 0L) | |
| test(5526109039206858752L, -2489041709915087415L, 2147483648L) | |
| test(5526109039206858752L, 2147483648L, -2489041709915087415L) | |
| test(9663676416L, 9L, 1073741824L) | |
| test(9663676416L, 1073741824L, 9L) | |
| test(648518346341351424L, 379085341609132041L, 72057594037927936L) | |
| test(648518346341351424L, 72057594037927936L, 379085341609132041L) | |
| test(-4118880446592909312L, 218625848802439L, 65536L) | |
| test(-4118880446592909312L, 65536L, 218625848802439L) | |
| test(-7094878839486021632L, -422887732952L, 16777216L) | |
| test(-7094878839486021632L, 16777216L, -422887732952L) | |
| test(20894747459584L, 77839L, 268435456L) | |
| test(20894747459584L, 268435456L, 77839L) | |
| test(-5624995934585749504L, -3953804003778L, 2251799813685248L) | |
| test(-5624995934585749504L, 2251799813685248L, -3953804003778L) | |
| test(76001593786368L, 141564L, 536870912L) | |
| test(76001593786368L, 536870912L, 141564L) | |
| test(5942088864628736L, 11068003L, 536870912L) | |
| test(5942088864628736L, 536870912L, 11068003L) | |
| test(-417996242432L, -816398911L, 512L) | |
| test(-417996242432L, 512L, -816398911L) | |
| test(10122752L, 79084L, 128L) | |
| test(10122752L, 128L, 79084L) | |
| test(712964571136L, 166L, 4294967296L) | |
| test(712964571136L, 4294967296L, 166L) | |
| test(-3013501831155286016L, -120218862620908531L, 4294967296L) | |
| test(-3013501831155286016L, 4294967296L, -120218862620908531L) | |
| } | |
| @Test | |
| fun divide() { | |
| fun test(expected: Long, x: Long, y: Long) { | |
| assertEquals(expected, x / y) | |
| } | |
| test(IntMaxValPlus1, IntMinVal, -1L) | |
| test(-1L, IntMinVal, IntMaxValPlus1) | |
| test(IntMinVal, IntMaxValPlus1, -1L) | |
| test(-1L, IntMaxValPlus1, IntMinVal) | |
| test(-9223372036854775807L, MaxVal, -1L) | |
| test(MinVal, MinVal, 1L) | |
| test(MinVal, MinVal, -1L) | |
| // int32, int32 | |
| test(1L, -10426835L, -6243356L) | |
| test(-291L, 49659080L, -170373L) | |
| test(3L, 97420L, 27521L) | |
| test(26998L, -9881291L, -366L) | |
| test(0L, -40L, 81L) | |
| test(0L, -6007L, -326806L) | |
| test(-1L, 202L, -112L) | |
| test(0L, 0L, 47L) | |
| test(323816L, 22667160L, 70L) | |
| test(0L, 254L, -307349204L) | |
| test(0L, -17L, -44648L) | |
| test(-40L, 39646L, -976L) | |
| test(0L, 9L, 315779722L) | |
| test(0L, -2674L, -3051991L) | |
| test(0L, -37697L, 2015928L) | |
| test(0L, -13L, -31L) | |
| test(0L, 6L, -334L) | |
| test(8L, -15989L, -1918L) | |
| test(8746L, -113261535L, -12950L) | |
| test(55322L, -6362112L, -115L) | |
| test(0L, 455L, 13919L) | |
| test(36190L, 293468259L, 8109L) | |
| test(1L, -48287007L, -27531186L) | |
| test(349634L, 1048904L, 3L) | |
| test(0L, -34L, 3949717L) | |
| test(-1L, 1449L, -983L) | |
| test(-18537151L, 18537151L, -1L) | |
| test(0L, 14037L, 23645L) | |
| test(-4L, 1785L, -398L) | |
| test(0L, 346L, 2198158L) | |
| test(-802L, -3517419L, 4381L) | |
| test(-6L, 6L, -1L) | |
| test(39L, -822L, -21L) | |
| test(0L, 3629L, 282734L) | |
| test(-92367L, -278856469L, 3019L) | |
| test(0L, -13L, 37L) | |
| test(0L, -4L, 47150459L) | |
| test(0L, -26L, -210691L) | |
| test(0L, -21294L, 156839456L) | |
| test(0L, -5L, -25644L) | |
| test(0L, -1009L, 28100L) | |
| test(-857L, 16282815L, -18989L) | |
| test(-7L, -2201086L, 276963L) | |
| test(-300L, 11412578L, -37989L) | |
| test(0L, 8406900L, 239727371L) | |
| test(0L, -1L, -479069L) | |
| test(0L, 4L, -21776L) | |
| test(-16812960L, -16812960L, 1L) | |
| test(0L, 10873L, 57145L) | |
| test(0L, -1L, -7L) | |
| // int32, int53 | |
| test(0L, -6975858L, 60171769780L) | |
| test(0L, -1L, 355344489879452L) | |
| test(0L, 43L, 213146146419L) | |
| test(0L, 4063968L, 102264144491298L) | |
| test(0L, -388987094L, 7404281630149L) | |
| test(0L, 5939808L, 53952090167L) | |
| test(0L, 7L, 5767755469224L) | |
| test(0L, -1175803932L, 10342578897871L) | |
| test(0L, 464610492L, 11927954100510L) | |
| test(0L, 214483L, 34696248634358L) | |
| // int32, big | |
| test(0L, 211494165L, 63586944937958278L) | |
| test(0L, 5353L, -1694817224433481042L) | |
| test(0L, 2926L, -974161160379320633L) | |
| test(0L, -6L, -2493566152636302714L) | |
| test(0L, -8L, 21133884687603971L) | |
| test(0L, -585878041L, -5566768138983983837L) | |
| test(0L, -4L, 275171713246363278L) | |
| test(0L, 34L, -80110932732961966L) | |
| test(0L, 785315L, 127658607682996801L) | |
| test(0L, 713146L, 11714632116570671L) | |
| // int53, int32 | |
| test(-578207L, 228797600580841L, -395701427L) | |
| test(3734905142L, 11204715428L, 3L) | |
| test(80677703530L, 242033110590L, 3L) | |
| test(-162400270L, 4957105857076L, -30524L) | |
| test(-9L, 6323344774L, -691707459L) | |
| test(135006L, 314919788164L, 2332622L) | |
| test(-51739881980L, 6001826309794L, -116L) | |
| test(1125157L, 2639620573L, 2346L) | |
| test(997096L, 24421382294514L, 24492497L) | |
| test(-1295710758066L, 47941298048449L, -37L) | |
| test(-2166511L, 15114349972511L, -6976354L) | |
| test(-6909144294L, 207274328847L, -30L) | |
| test(4387003627L, 4101848391931L, 935L) | |
| test(23215066L, 4566357066146L, 196698L) | |
| test(-13221428L, 91740281077293L, -6938757L) | |
| test(-8625267371963L, 2785961361144320L, -323L) | |
| test(7125522617558L, 2087778126944550L, 293L) | |
| test(3373132868549L, 3305670211178975L, 980L) | |
| test(-917576L, 12579050561L, -13709L) | |
| test(456092L, 73591818663L, 161353L) | |
| test(1615312694926L, 3230625389852L, 2L) | |
| test(167998806719L, 167998806719L, 1L) | |
| test(90893135L, 132840499118665L, 1461502L) | |
| test(799104733L, 147585054932536L, 184688L) | |
| test(-300693860803928L, 601387721607857L, -2L) | |
| test(6770260858L, 1835756231761675L, 271150L) | |
| test(-21594175253L, 152282123889326L, -7052L) | |
| test(32825L, 3167385820L, 96492L) | |
| test(-57018115L, 31110452512408L, -545624L) | |
| test(-5950946L, 9505144073367L, -1597249L) | |
| test(-18245832494939L, 54737497484818L, -3L) | |
| test(4741011L, 27865199652383L, 5877480L) | |
| test(196504301807L, 564753363395315L, 2874L) | |
| test(228327608L, 4794879780L, 21L) | |
| test(99111506L, 36368273626634L, 366943L) | |
| test(-1209485521L, 24189710420L, -20L) | |
| test(-319956618L, 236542327972199L, -739295L) | |
| test(-62197L, 187572612454L, -3015755L) | |
| test(9087L, 246218266185L, 27093454L) | |
| test(345582531L, 8543663105119304L, 24722497L) | |
| test(-1424974L, 3807993484425L, -2672324L) | |
| test(1991351L, 153342025764L, 77004L) | |
| test(1193137L, 3507787521536L, 2939970L) | |
| test(573585390L, 531695875580133L, 926969L) | |
| test(-4044176128928L, 986778975458576L, -244L) | |
| test(-6019138L, 31632046988853L, -5255245L) | |
| test(124430635410L, 82124219370732L, 660L) | |
| test(-40732946L, 34018853638873L, -835168L) | |
| test(1280616075818L, 2561232151636L, 2L) | |
| test(-570078780L, 36329410438127L, -63727L) | |
| // int53, int53 | |
| test(1L, 124003063371212L, 95971058218833L) | |
| test(0L, 52685446825193L, 65719008167515L) | |
| test(32L, 984680925730L, 30321302738L) | |
| test(368L, 16780572018393L, 45587849994L) | |
| test(1L, 224456523282412L, 136858431513934L) | |
| test(0L, 6270846242295L, 29713451361156L) | |
| test(0L, 5162639886L, 4241682616681008L) | |
| test(0L, 11906057278L, 898368875387L) | |
| test(0L, 8292364263L, 840690475571994L) | |
| test(0L, 24734473349L, 302851164091L) | |
| test(0L, 65461652427L, 132370406563769L) | |
| test(0L, 65169061341L, 6819803382011L) | |
| test(67766L, 999543310705255L, 14749729876L) | |
| test(694L, 677827034369276L, 975474741618L) | |
| test(1L, 474647334008012L, 411440625113020L) | |
| test(0L, 2139840204062L, 4997452565907L) | |
| test(12L, 147843129520789L, 12245680216440L) | |
| test(0L, 363347083296L, 63223041418797L) | |
| test(1L, 10444738372L, 8287074475L) | |
| test(131L, 459942257253L, 3488195032L) | |
| test(0L, 4872361206145L, 145063212196921L) | |
| test(0L, 423685951943L, 852441814396L) | |
| test(315L, 136483526964813L, 432278190260L) | |
| test(0L, 78818316243L, 4193722747205L) | |
| test(1L, 16202047394459L, 15528748620191L) | |
| test(2340149L, 5136010432017865L, 2194735964L) | |
| test(0L, 78321121408L, 248491421719L) | |
| test(14L, 1532585569763139L, 108379170191825L) | |
| test(131L, 2195472500094L, 16704059603L) | |
| test(0L, 288897937097L, 4174872075961L) | |
| test(1L, 21991187412389L, 15489126165811L) | |
| test(0L, 5839012516L, 10106143423983L) | |
| test(8L, 229000703832L, 27780654407L) | |
| test(0L, 58730811340L, 225578259160L) | |
| test(0L, 57432730865L, 690482805325L) | |
| test(0L, 176831982665L, 44502943027168L) | |
| test(0L, 135650155666L, 2473601103342862L) | |
| test(76L, 4306939188043L, 56039151891L) | |
| test(0L, 27678403241L, 14530933230495L) | |
| test(0L, 325783201862L, 1429918316597450L) | |
| test(0L, 638270432082L, 3919909688035L) | |
| test(0L, 305398988952L, 6832490296772512L) | |
| test(0L, 2570041898L, 167230554267L) | |
| test(0L, 68712734660L, 751812070666L) | |
| test(50L, 8994542324058741L, 176704424639976L) | |
| test(0L, 3296554204L, 127090317995L) | |
| test(0L, 14870954195L, 204066183786L) | |
| test(0L, 8480319499L, 85970293968645L) | |
| test(127L, 3872913127538L, 30378210782L) | |
| test(0L, 285099136391851L, 1075947159560094L) | |
| // int53, big | |
| test(0L, 59305199701875L, -61978378594400103L) | |
| test(0L, 878702206301718L, -3047361456851090070L) | |
| test(0L, 31936398707065L, 679920552742984365L) | |
| test(0L, 1065886403865357L, 278654289724641174L) | |
| test(0L, 2667310741936L, 440847768145795128L) | |
| test(0L, 12278863038908L, -71793457772450809L) | |
| test(0L, 11618498453L, 110861759245861602L) | |
| test(0L, 95042014006L, -142554989424244815L) | |
| test(0L, 496460930879730L, -9178143056234401L) | |
| test(0L, 347683226692935L, 6318124517041566307L) | |
| // big, int32 | |
| test(26192471907L, 723782312359256698L, 27633219L) | |
| test(879107723762463L, -2616224585917092202L, -2976L) | |
| test(189814434L, -64599774627614709L, -340331202L) | |
| test(-4860916252638991L, -505535290274455145L, 104L) | |
| test(61885399461685L, -43752977419411966L, -707L) | |
| test(8600250819417791L, 722421068831094472L, 84L) | |
| test(-5157240553L, 156686648156150146L, -30381877L) | |
| test(-301408991367L, 2164461671311657366L, -7181145L) | |
| test(-10897544612214L, -37825377348996138L, 3471L) | |
| test(20273603415L, 41538261659499635L, 2048884L) | |
| test(1324107666L, 17884174072385720L, 13506586L) | |
| test(27320767651826108L, 54641535303652216L, 2L) | |
| test(-327955404958810L, 79037252595073238L, -241L) | |
| test(-177595108878660314L, 887975544393301570L, -5L) | |
| test(-76516770852181L, -260845671835087356L, 3409L) | |
| test(-2922506998444L, 10792818345254164L, -3693L) | |
| test(-148773795060L, -41563232673777087L, 279372L) | |
| test(2588091355L, -9757298518375933L, -3770075L) | |
| test(46855338940916L, -27878926669845136L, -595L) | |
| test(-1534866990081L, -11101692939261578L, 7233L) | |
| test(-1607988232266227L, 527420140183322469L, -328L) | |
| test(1421525100L, -68713435799727319L, -48337828L) | |
| test(-9422344923772683L, -141335173856590245L, 15L) | |
| test(-264609900256179L, 510697107494427095L, -1930L) | |
| test(-67052898569093L, -9454458698242151L, 141L) | |
| test(10084472962553L, -1916019609466306523L, -189997L) | |
| test(526621590143L, 231952059243267540L, 440453L) | |
| test(81459474793L, 234414545801980405L, 2877683L) | |
| test(-102870074701433L, 143298014059096433L, -1393L) | |
| test(-178073210L, -10447052378290802L, 58667176L) | |
| test(611202294492L, -233502502183290181L, -382038L) | |
| test(75406112292668151L, 226218336878004455L, 3L) | |
| test(2169515162020208600L, -4339030324040417200L, -2L) | |
| test(9939764678148L, -93950655737855096L, -9452L) | |
| test(3705731170438873170L, -7411462340877746340L, -2L) | |
| test(17364248365L, 6513292159132795798L, 375097846L) | |
| test(1243945230L, -1015249224614937988L, -816152673L) | |
| test(-3759636477941L, 113875629280371731L, -30289L) | |
| test(2336087242176329L, -3606918701920252251L, -1544L) | |
| test(102272964513L, -238477950920641560L, -2331779L) | |
| test(-10696841840L, -7709668252031154692L, 720742474L) | |
| test(-531682844470L, 279278111080786291L, -525272L) | |
| test(5393369008070L, -53281092430729833L, -9879L) | |
| test(3117012283L, 482514502098834968L, 154800321L) | |
| test(-219145567178234740L, -438291134356469480L, 2L) | |
| test(-1331247316563774L, 34612430230658145L, -26L) | |
| test(5269935045196L, -4126327520778768141L, -782994L) | |
| test(24765938495865L, -469636491697100502L, -18963L) | |
| test(181706959279836402L, 6178036615514437691L, 34L) | |
| test(-1886837760507410L, -26415728647103752L, 14L) | |
| // big, int53 | |
| test(88399L, 1547294638316862730L, 17503470499928L) | |
| test(-45459L, -209839210582638165L, 4616002148581L) | |
| test(4395497L, 940370097701555719L, 213939423948L) | |
| test(3198134L, 2578616978236540319L, 806287894342L) | |
| test(470L, 3633455166312612934L, 7724173057120691L) | |
| test(92L, 27853465488661812L, 301778663579871L) | |
| test(167728L, 1806252011061650438L, 10768880197972L) | |
| test(25700177L, 2242463707657038031L, 87254795475L) | |
| test(-35822646L, -562598053333099173L, 15705094769L) | |
| test(-348L, -9112381674112046L, 26143402564658L) | |
| test(-2179L, -509057682015062058L, 233613517042906L) | |
| test(1187L, 181474883994203019L, 152819267878488L) | |
| test(3223L, 150553666516195580L, 46704391768104L) | |
| test(23608500L, 300363587202603124L, 12722688144L) | |
| test(7286803L, 45378843712712738L, 6227538127L) | |
| test(-137450L, -71343536160388549L, 519050448589L) | |
| test(114592L, 75617491646984375L, 659882766920L) | |
| test(61L, 59861182577767050L, 977967428486591L) | |
| test(-247360L, -3675261108362052533L, 14857923710053L) | |
| test(-61725L, -17706760935497774L, 286863193667L) | |
| test(2226L, 785774864008795364L, 352922104422398L) | |
| test(-997L, -33536475745382905L, 33616480572407L) | |
| test(36L, 19186635942791762L, 519428459800194L) | |
| test(56005L, 2626558083934978484L, 46898367867780L) | |
| test(-90057L, -79469909799080191L, 882439775947L) | |
| test(-9L, -14634507588329350L, 1515865418406015L) | |
| test(62240L, 2074357853073880797L, 33328209754855L) | |
| test(-1774L, -18883471414475441L, 10639493264514L) | |
| test(-153400L, -11246877030282940L, 73317116228L) | |
| test(2145L, 274737714555168746L, 128035347707168L) | |
| test(106042L, 185872670829287234L, 1752819113274L) | |
| test(-381407L, -167197834434549929L, 438370276333L) | |
| test(1217514L, 159606413062972309L, 131091960664L) | |
| test(-17L, -46712745604586317L, 2730376203303889L) | |
| test(4880327L, 8239833148507419484L, 1688377060863L) | |
| test(-1023070L, -2195881405872704768L, 2146364670600L) | |
| test(439L, 194204736450122813L, 442052361992590L) | |
| test(2171202L, 63817733899474393L, 29392809781L) | |
| test(-5332527L, -2641202944529830332L, 495300414087L) | |
| test(-435180L, -2269494636969765724L, 5215063874376L) | |
| test(27837L, 2314753811624982214L, 83152993851334L) | |
| test(-396L, -1594166273043442864L, 4023963601415498L) | |
| test(-115583279L, -892027830791363054L, 7717620044L) | |
| test(-6783543L, -450355256733558628L, 66389385105L) | |
| test(-1464006069L, -5807365214353469879L, 3966763072L) | |
| test(11599107L, 141701763851325632L, 12216609367L) | |
| test(842L, 1339898823144275017L, 1589772675238524L) | |
| test(43514L, 1753445026367710966L, 40295956575370L) | |
| test(-230L, -17726634007299531L, 77015681672071L) | |
| test(249094L, 276740732551840706L, 1110987688070L) | |
| // big, big | |
| test(-10L, -3035292483719699986L, 278502589500941238L) | |
| test(0L, 309352054257937604L, 3761260870078728814L) | |
| test(-2L, 36003686779005089L, -12888055118407988L) | |
| test(0L, 100264685753707774L, -1264190786717094832L) | |
| test(-37L, 461625058320865256L, -12195431348931304L) | |
| test(3L, 130723244245954867L, 35331266536894367L) | |
| test(-3L, -924932423900552316L, 252217550766181432L) | |
| test(2L, 69196492400756053L, 23535447678190438L) | |
| test(0L, 31449474321301746L, 9197997245108567284L) | |
| test(5L, 3736171329516923512L, 727045796882164310L) | |
| test(0L, 425057195577712622L, 2272184365474796943L) | |
| test(-2L, 807082311223102834L, -351978682494614360L) | |
| test(0L, -18868872832156821L, 226172537255253600L) | |
| test(22L, 572602005562282640L, 25982734904706641L) | |
| test(0L, 57843482432513353L, -2888397807038685054L) | |
| test(0L, -728953506047215037L, 3310993973484462547L) | |
| test(-27L, -1297762999973373449L, 47730487036641355L) | |
| test(-6L, -630351948303467419L, 101862614519465124L) | |
| test(0L, -161760942000700532L, 896669025309325774L) | |
| test(0L, -60571160055601992L, 3199697903948807752L) | |
| test(176L, -8905725250420237724L, -50384839403275195L) | |
| test(0L, 83529788996273036L, -868755088371510182L) | |
| test(6L, -227446351753346408L, -33328529234649391L) | |
| test(1L, 8187661920961984367L, 5363684730160280818L) | |
| test(0L, 189508821671714868L, -2046527394535651556L) | |
| test(0L, 156063739985865739L, -2214871552090474931L) | |
| test(0L, -71987272961247290L, -188911916350736042L) | |
| test(0L, 110913222542181819L, 1237912121737071001L) | |
| test(0L, 12880539371492270L, -9119362639343639778L) | |
| test(0L, -26151666524701044L, -240635881920542488L) | |
| test(-56L, 845191509087740151L, -14948325543844578L) | |
| test(0L, -162061855539686933L, -332451575304128502L) | |
| test(108L, 4253288611327629461L, 39367666671308052L) | |
| test(0L, -121341020863288159L, -2229209572918613645L) | |
| test(0L, 237137442026956209L, 1001116996845036907L) | |
| test(0L, -15661167300264588L, -116492150099255378L) | |
| test(-13L, 472755776244344837L, -34657749367478312L) | |
| test(0L, 61501256427799033L, 1117043674891618395L) | |
| test(8L, -816682331745911859L, -93013379356993805L) | |
| test(0L, -622502180540310102L, 861027865126430670L) | |
| test(-1L, -101326472862486775L, 53712510215619894L) | |
| test(0L, 23026094268252610L, 671734049378935892L) | |
| test(-1L, 2881176027443124423L, -2018901387779500606L) | |
| test(0L, 80880976030674953L, -148068225104828165L) | |
| test(31L, 939317388631011065L, 29631503184556902L) | |
| test(-19L, 2634188664743885501L, -132107816406700970L) | |
| test(0L, 28392039795497627L, -452518913994378813L) | |
| test(0L, -29885528417307733L, -3324874348720642133L) | |
| test(-2L, 591048418976612297L, -288205539284930378L) | |
| test(8L, 533073956562640706L, 65273067278234250L) | |
| } | |
| @Test | |
| fun modulo() { | |
| fun test(expected: Long, x: Long, y: Long) { | |
| assertEquals(expected, x % y) | |
| } | |
| test(0L, IntMinVal, -1L) | |
| test(0L, IntMinVal, IntMaxValPlus1) | |
| test(0L, IntMaxValPlus1, -1L) | |
| test(0L, IntMaxValPlus1, IntMinVal) | |
| test(0L, MaxVal, -1L) | |
| test(0L, MinVal, 1L) | |
| test(0L, MinVal, -1L) | |
| test(9223372036854775807L, MaxVal, MinVal) | |
| test(0L, MaxVal, MaxVal) | |
| test(0L, MinVal, MinVal) | |
| test(-1L, MinVal, MaxVal) | |
| // int32, int32 | |
| test(880L, 880L, -219594L) | |
| test(-27L, -49125L, 98L) | |
| test(-1194L, -1922504L, 4195L) | |
| test(3L, 3L, 7963L) | |
| test(-626L, -626L, -484628621L) | |
| test(11315L, 11315L, -3914076L) | |
| test(26241L, 15712341L, -1045740L) | |
| test(-507L, -855439L, 5213L) | |
| test(-259L, -101026259L, -500L) | |
| test(27720977L, 27720977L, -42317657L) | |
| test(1L, 25954L, -3L) | |
| test(6724180L, 338447650L, -8505730L) | |
| test(10488L, 23967L, -13479L) | |
| test(1L, 885202L, -3L) | |
| test(0L, 692795590L, -10L) | |
| test(-1L, -1L, 156L) | |
| test(388L, 388L, 189523294L) | |
| test(352L, 352L, -3257L) | |
| test(-9L, -9L, 14653L) | |
| test(-1L, -258745L, 8L) | |
| test(-21023L, -206976653L, 34321L) | |
| test(-1L, -1L, -971L) | |
| test(59L, 59L, 388L) | |
| test(0L, -7L, 1L) | |
| test(12L, 77L, 13L) | |
| test(224246L, 224246L, 719055L) | |
| test(-61296L, -61296L, -135723660L) | |
| test(549465L, 6897809L, 793543L) | |
| test(45L, 45L, 984210147L) | |
| test(0L, -64L, 1L) | |
| test(2L, 379611734L, 4L) | |
| test(0L, 0L, -263L) | |
| test(29L, 29L, -117L) | |
| test(24L, 245094L, -70L) | |
| test(0L, 0L, 5L) | |
| test(2L, 2L, 47787927L) | |
| test(-124L, -124L, -22714040L) | |
| test(412L, 412L, -17176L) | |
| test(-11860L, -11860L, 9506787L) | |
| test(-31L, -31L, -1544676L) | |
| test(-3L, -1990315281L, -7L) | |
| test(99L, 99L, -277L) | |
| test(-86L, -29227L, -161L) | |
| test(106L, 106L, -47032956L) | |
| test(18L, 18L, 510836179L) | |
| test(2L, 3543112L, 10L) | |
| test(534271L, 3547603L, -1506666L) | |
| test(-16361L, -16361L, 10637613L) | |
| test(8L, 606879016L, -16L) | |
| test(-1L, -1L, 46424570L) | |
| // int32, int53 | |
| test(-3L, -3L, 4501768361L) | |
| test(-57756L, -57756L, 58918491782L) | |
| test(0L, 0L, 43125290916540L) | |
| test(423524L, 423524L, 70929482476L) | |
| test(38317L, 38317L, 105675177856L) | |
| test(60291L, 60291L, 244354846581L) | |
| test(1L, 1L, 5282610957902448L) | |
| test(296788L, 296788L, 223521545252L) | |
| test(-2005515L, -2005515L, 73346179491L) | |
| test(-179812L, -179812L, 22139703363330L) | |
| test(-3678L, -3678L, 1046277259413147L) | |
| test(-93867L, -93867L, 182758226138L) | |
| test(7600917L, 7600917L, 410489691890596L) | |
| test(300012L, 300012L, 435742913624L) | |
| test(-6347L, -6347L, 102640501950L) | |
| test(-41L, -41L, 1974472974044L) | |
| test(3425L, 3425L, 11303925732L) | |
| test(-25L, -25L, 111639285165193L) | |
| test(-8303L, -8303L, 8251985937002L) | |
| test(274032571L, 274032571L, 1096672203508L) | |
| test(-3L, -3L, 3132174934065L) | |
| test(-1124428L, -1124428L, 1459767596240L) | |
| test(-2L, -2L, 10844488562438L) | |
| test(1L, 1L, 8187934047L) | |
| test(107013504L, 107013504L, 13042506495L) | |
| test(4976822L, 4976822L, 9580026016302L) | |
| test(-1L, -1L, 180082425574L) | |
| test(80396L, 80396L, 59720539378L) | |
| test(937638L, 937638L, 115266897342L) | |
| test(756L, 756L, 7305399119272924L) | |
| test(5L, 5L, 91698197791401L) | |
| test(262831839L, 262831839L, 45669473529162L) | |
| test(-2146273993L, -2146273993L, 2755837895L) | |
| test(59799L, 59799L, 438440762347895L) | |
| test(-5347L, -5347L, 79274704127L) | |
| test(926L, 926L, 447563301356135L) | |
| test(1L, 1L, 5297346540373L) | |
| test(334L, 334L, 86480981154L) | |
| test(-61747L, -61747L, 6433018815983L) | |
| test(-1L, -1L, 341485018510162L) | |
| test(59605313L, 59605313L, 3132647545L) | |
| test(12267518L, 12267518L, 2441054592777302L) | |
| test(19230695L, 19230695L, 92038604353L) | |
| test(3950296L, 3950296L, 1047123350022L) | |
| test(503276L, 503276L, 6833559922L) | |
| test(30880536L, 30880536L, 219321124203675L) | |
| test(5659804L, 5659804L, 7864595535L) | |
| test(11882277L, 11882277L, 30308498427L) | |
| test(371783010L, 371783010L, 60134467254876L) | |
| test(840L, 840L, 470727040462L) | |
| // int32, big | |
| test(-267334310L, -267334310L, -578098228522141853L) | |
| test(57L, 57L, -43380562927871013L) | |
| test(30332L, 30332L, -386567995220878153L) | |
| test(187L, 187L, 35408332567946697L) | |
| test(-2L, -2L, 1678312288977938609L) | |
| test(-4252915L, -4252915L, 100866720606529501L) | |
| test(-2L, -2L, 416241567208853860L) | |
| test(10L, 10L, -343269240122331697L) | |
| test(-14L, -14L, 12765011240586127L) | |
| test(-20155233L, -20155233L, -109516752655403150L) | |
| test(-406L, -406L, 541589412425788400L) | |
| test(43L, 43L, 662582496523789435L) | |
| test(-4830L, -4830L, -12345854471231468L) | |
| test(-4271L, -4271L, -455809912113831520L) | |
| test(126L, 126L, -390003337959587581L) | |
| test(40445345L, 40445345L, 28987462963925530L) | |
| test(-1L, -1L, 122087865959677394L) | |
| test(-2123811L, -2123811L, 189636249314231355L) | |
| test(-25650126L, -25650126L, -69326722004354685L) | |
| test(30L, 30L, 681892781269423310L) | |
| test(2494211L, 2494211L, 93887941708414673L) | |
| test(100937174L, 100937174L, -321171615457988555L) | |
| test(901687L, 901687L, -2201437483664111307L) | |
| test(-422854L, -422854L, -424454611154691763L) | |
| test(2L, 2L, -42716550338485662L) | |
| test(-465211L, -465211L, -687950518813471351L) | |
| test(63L, 63L, 773357788582046200L) | |
| test(47L, 47L, -70955237701823702L) | |
| test(233450563L, 233450563L, 1621520427889937948L) | |
| test(-134912L, -134912L, -54171828449716468L) | |
| test(-95441L, -95441L, 69203073384780773L) | |
| test(-1160726496L, -1160726496L, -40549405630198558L) | |
| test(-502L, -502L, -1622331392079708275L) | |
| test(3313324L, 3313324L, 1899654667629672576L) | |
| test(-145L, -145L, 127665492386834182L) | |
| test(-19091L, -19091L, -746417751226485798L) | |
| test(-3331910L, -3331910L, 315702750057691225L) | |
| test(56622L, 56622L, 22416201665597149L) | |
| test(0L, 0L, 139463266603917347L) | |
| test(800L, 800L, 9875713007192617L) | |
| test(86949L, 86949L, -5946649264404445276L) | |
| test(10L, 10L, 4298700652581681596L) | |
| test(-333236L, -333236L, 537058674065071788L) | |
| test(-598L, -598L, -1417232804253270457L) | |
| test(-19L, -19L, 702749557261284541L) | |
| test(465328283L, 465328283L, -223584594313514269L) | |
| test(-25837L, -25837L, 37124400903503228L) | |
| test(-383633650L, -383633650L, 35485060063777451L) | |
| test(-66L, -66L, 1029153726012930463L) | |
| test(1676620L, 1676620L, 355475425885479146L) | |
| // int53 / int32 | |
| test(15827410L, 14129525327L, -231372097L) | |
| test(15118L, 535478124622L, -20252L) | |
| test(11L, 309815810367L, 13L) | |
| test(42298679L, 15343123799L, -95630157L) | |
| test(17447610L, 127082894730L, -45315780L) | |
| test(0L, 1089230016351334L, -11L) | |
| test(51980L, 33057920873202L, 1489246L) | |
| test(2L, 6252840555450L, 8L) | |
| test(5125741L, 211719788413L, -34627848L) | |
| test(77691L, 91971976662285L, 149449L) | |
| test(521867604L, 2806186706724L, 671211684L) | |
| test(14579368L, 4273853776L, 177469767L) | |
| test(0L, 137176127796L, 1L) | |
| test(24027362L, 8425966166L, 33341027L) | |
| test(6792805L, 61762298457697L, -11334498L) | |
| test(9L, 7809058585409L, -10L) | |
| test(204L, 110067902189L, -235L) | |
| test(61089L, 2717761007L, 1618642L) | |
| test(289305533L, 2161231946023L, -321808286L) | |
| test(7272892L, 239618019295L, 15166197L) | |
| test(3L, 15433620448578L, 7L) | |
| test(12036L, 179964225338842L, -20591L) | |
| test(29L, 170743054973L, 48L) | |
| test(0L, 63933442317L, 1L) | |
| test(260441364L, 289183097958L, 1010219079L) | |
| test(3936541L, 138777709933L, -4427443L) | |
| test(183313645L, 3344958680351L, -273780418L) | |
| test(91783L, 2410446282098536L, -156677L) | |
| test(5L, 165936653941L, -8L) | |
| test(11214823L, 795868675507147L, -19368267L) | |
| test(75719L, 327928751549867L, 94212L) | |
| test(10941L, 236458995808L, 17599L) | |
| test(5331L, 501747583891L, -14942L) | |
| test(1L, 1018146484162351L, -2L) | |
| test(24400L, 125019445157368L, -37848L) | |
| test(95L, 4271993459155085L, -170L) | |
| test(9836L, 32301991436L, -10100L) | |
| test(30255783L, 52905400908L, -38454651L) | |
| test(417L, 19346043042L, 6825L) | |
| test(0L, 36027253440L, 2L) | |
| test(257L, 4209488274417L, -845L) | |
| test(82991L, 35239435579599L, 105392L) | |
| test(691256L, 8257556698L, 882238L) | |
| test(0L, 48993903540L, -20L) | |
| test(4L, 5301351495200050L, -13L) | |
| test(150L, 74179579248540L, 11033L) | |
| test(14L, 57030792056L, -23L) | |
| test(256216433L, 3216838357L, 740155481L) | |
| test(45583L, 15855664793359L, -63588L) | |
| test(459L, 6312015826290975L, -502L) | |
| // int53, int53 | |
| test(6100144474L, 6100144474L, 1763937724960L) | |
| test(12301461237L, 7782416962849632L, 13976141337L) | |
| test(5641274328L, 5641274328L, 145356552798L) | |
| test(348750706398L, 348750706398L, 697512769240164L) | |
| test(5039243323L, 27190138897695L, 5337738004L) | |
| test(29273105L, 111580375427L, 5070504651L) | |
| test(8973135037L, 18510346432499L, 25240618414L) | |
| test(1915384404291L, 1915384404291L, 1322775745166193L) | |
| test(66563411320291L, 337238385612127L, 67668743572959L) | |
| test(75556878017L, 75556878017L, 315965468896632L) | |
| test(200222196095L, 200222196095L, 3226379400818411L) | |
| test(2821442827793L, 138954438973037L, 4861892719473L) | |
| test(2623090810L, 524628597533230L, 3760624884L) | |
| test(1012951716177L, 1012951716177L, 62946143599282L) | |
| test(2631016392226L, 2631016392226L, 12562543301042L) | |
| test(24502759655744L, 269716367153504L, 40868934582960L) | |
| test(19470049613L, 392647117165837L, 30944801948L) | |
| test(13597049958L, 13597049958L, 12189589505874L) | |
| test(191998352795L, 191998352795L, 3699380048895726L) | |
| test(61316766466L, 822043338636418L, 131223183568L) | |
| test(2833219350L, 19325725280274L, 5495703089L) | |
| test(167671681803991L, 167671681803991L, 609495034800021L) | |
| test(86115567547L, 86115567547L, 34925892478207L) | |
| test(100396132611L, 2270038478531L, 108482117296L) | |
| test(1722095012L, 192572302736L, 2891669814L) | |
| test(21689352006966L, 21689352006966L, 68016102680965L) | |
| test(1030709774291L, 1030709774291L, 33023840129568L) | |
| test(10652960238L, 473387766338L, 13220994460L) | |
| test(1645694049213L, 4867202831074L, 3221508781861L) | |
| test(204153882854L, 6851909241714L, 302170698130L) | |
| test(36056708963L, 36056708963L, 17883074988258L) | |
| test(28031441760L, 140488949988L, 56228754114L) | |
| test(6159596714L, 6159596714L, 4169026498867883L) | |
| test(184930003162138L, 4131898509072325L, 438552056212243L) | |
| test(22656551412L, 22656551412L, 113212339389675L) | |
| test(32219528416L, 1187328064845472L, 32429144688L) | |
| test(49836539309L, 419173707721801L, 92685508886L) | |
| test(143463766729516L, 748952389102980L, 302744311186732L) | |
| test(50357913499696L, 7025561694924070L, 1162533963570729L) | |
| test(242732351104L, 4198374281226L, 3955641930122L) | |
| test(127926935141L, 127926935141L, 82293613539627L) | |
| test(2012610771245L, 51496098028909L, 12370871814416L) | |
| test(57176122448L, 9374842408948L, 74541330292L) | |
| test(196672043680L, 196672043680L, 705905777378603L) | |
| test(230390222864L, 6102587199902L, 652466330782L) | |
| test(2669055575772L, 508650794854087L, 3693297366995L) | |
| test(902909663L, 34740183778L, 6767454823L) | |
| test(244160986772L, 454465802184020L, 339478057696L) | |
| test(162217586832L, 162217586832L, 378482848219509L) | |
| test(8558331816L, 8558331816L, 1038995034941793L) | |
| // int53, big | |
| test(16249759881L, 16249759881L, 3974504957130349699L) | |
| test(69801090825685L, 69801090825685L, 33609950826369033L) | |
| test(13150892233L, 13150892233L, -13352491823470351L) | |
| test(7408616170L, 7408616170L, 323012663481879067L) | |
| test(253783346903L, 253783346903L, -15596620746994050L) | |
| test(30972089554240L, 30972089554240L, -597395697936563678L) | |
| test(1359229988914L, 1359229988914L, -70151378460850387L) | |
| test(22776954844L, 22776954844L, 8338492573096515492L) | |
| test(2589224141516L, 2589224141516L, -582886159682980665L) | |
| test(2146722475297L, 2146722475297L, 54788046706768692L) | |
| test(2621531318650L, 2621531318650L, -691006344228255894L) | |
| test(4278483743L, 4278483743L, -7507719163850761352L) | |
| test(1038098064271L, 1038098064271L, -16401973284007851L) | |
| test(113168563974L, 113168563974L, -75157404508782419L) | |
| test(21796590416779L, 21796590416779L, 133448491453053159L) | |
| test(301847845516L, 301847845516L, -10696056474562902L) | |
| test(276953913912055L, 276953913912055L, 286740098556819600L) | |
| test(66738347538L, 66738347538L, 35225365194683174L) | |
| test(859025882164L, 859025882164L, -87272109905754421L) | |
| test(130253635110L, 130253635110L, -516770689141439465L) | |
| test(165643343437L, 165643343437L, 258119112451680666L) | |
| test(457118714799838L, 457118714799838L, -27186111829755469L) | |
| test(7223147609530411L, 7223147609530411L, 3263844584201112404L) | |
| test(47628957944688L, 47628957944688L, 14966006350759263L) | |
| test(1797578806720604L, 1797578806720604L, 14755661816785046L) | |
| test(344889987516L, 344889987516L, 1074257614097638658L) | |
| test(836850064448957L, 836850064448957L, 255240963022984568L) | |
| test(690921554798L, 690921554798L, 662819742471320650L) | |
| test(873327926453293L, 873327926453293L, 54527238454039994L) | |
| test(28722407527057L, 28722407527057L, 575601986231877219L) | |
| test(236635853491382L, 236635853491382L, -519622234960070382L) | |
| test(909765505249L, 909765505249L, -33816862537130552L) | |
| test(16180618491099L, 16180618491099L, -3235734480858584223L) | |
| test(132036592953L, 132036592953L, -226189298761468375L) | |
| test(9197248206L, 9197248206L, 254197295582276395L) | |
| test(2649490767787184L, 2649490767787184L, -195973906032954538L) | |
| test(4299787879680L, 4299787879680L, -48216847057476434L) | |
| test(92554360220420L, 92554360220420L, -498043957092554165L) | |
| test(138044092947625L, 138044092947625L, -15633878625202712L) | |
| test(851919394660L, 851919394660L, -473658874706870235L) | |
| test(3717788240566689L, 3717788240566689L, 11036376673790284L) | |
| test(30945796487505L, 30945796487505L, -68136163659478143L) | |
| test(5949003144209073L, 5949003144209073L, -35994306852615237L) | |
| test(17936864813251L, 17936864813251L, 133705877164730270L) | |
| test(37916212916L, 37916212916L, 2954580780708018654L) | |
| test(34796376878256L, 34796376878256L, -20676849320796038L) | |
| test(1047258769169L, 1047258769169L, 135053992753680793L) | |
| test(202109157226684L, 202109157226684L, -25513642512638919L) | |
| test(3788149908L, 3788149908L, 45352930034800570L) | |
| test(484613624593729L, 484613624593729L, -2861163538035533427L) | |
| // big, int32 | |
| test(-3L, -1370393961416443737L, -6L) | |
| test(464005L, 3498020946037312230L, 825883L) | |
| test(34559370L, 11571581487268923L, 108493743L) | |
| test(-286379L, -2708099963766068459L, -506616L) | |
| test(-62L, -100064861483392562L, -206L) | |
| test(386945695L, 11246329772673651L, 1225551197L) | |
| test(270232L, 11888849560393702L, -291653L) | |
| test(277129L, 14906960692027984L, -29714535L) | |
| test(15L, 5449889234700691356L, -121L) | |
| test(1L, 148558486733610669L, 2L) | |
| test(46669L, 804275144639233391L, 129274L) | |
| test(-1508L, -1045956962716058568L, -31235L) | |
| test(0L, -1718682581097092450L, -1L) | |
| test(-1680L, -242610712566980878L, 2626L) | |
| test(53L, 49536209618101139L, 59L) | |
| test(-1699972L, -112595231960155440L, -2142359L) | |
| test(-200041L, -111202467621161165L, 483607L) | |
| test(-13123232L, -17543954451355937L, 428648085L) | |
| test(0L, -1577902156112015916L, 7L) | |
| test(-4528L, -1439263069294332652L, 5502L) | |
| test(-71L, -43275173539104061L, 110L) | |
| test(0L, 22222833743042817L, -1L) | |
| test(7872112L, 13138840034519224L, -29413816L) | |
| test(-37L, -15588082407912742L, -85L) | |
| test(14227L, 304145128647476139L, -14561L) | |
| test(-49L, -552172433790738993L, -256L) | |
| test(6101L, 67987053199001551L, 195494L) | |
| test(-6L, -23229285526738638L, 11L) | |
| test(-137624717L, -74919122060047792L, -168087095L) | |
| test(-3592L, -1593952962110360962L, 4765L) | |
| test(4335L, 756440483003859179L, -5564L) | |
| test(-271754L, -2567899230364692674L, -413908L) | |
| test(-361112L, -131350233252654878L, -496311L) | |
| test(-4L, -199379822739198927L, 29L) | |
| test(414436L, 13195486437163619L, 438221L) | |
| test(0L, -1290141875629267497L, 1L) | |
| test(-454L, -1191229212361459250L, -1237L) | |
| test(586891857L, 961830664768998345L, 707359548L) | |
| test(2L, 114848444499577496L, -3L) | |
| test(-24053960L, -375741920772048173L, 80229261L) | |
| test(-79944815L, -703102898231292331L, -983334452L) | |
| test(2600110L, 1915518801432622570L, 1035472980L) | |
| test(74L, 12822669827243498L, -148L) | |
| test(0L, 218533980803599700L, -1L) | |
| test(106L, 331433769486199795L, -563L) | |
| test(0L, -10261989598247925L, 1L) | |
| test(659L, 140012532054223616L, -729L) | |
| test(968L, 381558400809215180L, 13378L) | |
| test(920991L, 197728213235670981L, 922370L) | |
| test(2462152L, 28096912645232162L, -8405198L) | |
| // big, int53 | |
| test(20393562716713L, 178525956958972613L, 78984762564715L) | |
| test(80530168971L, 120859823286244081L, 83815712363L) | |
| test(-48574599516617L, -746365263938012606L, 61694361357237L) | |
| test(-159605477404L, -28743647516819522L, 1777471270258L) | |
| test(-130067810337L, -921677148722623905L, 1626014442824L) | |
| test(-5545084389096L, -297533196331696083L, 10267717543131L) | |
| test(7729508244L, 1576350401918501173L, 50861495929L) | |
| test(-5425788258053L, -141792118906388348L, 12719717692485L) | |
| test(580541203635402L, 311841143885208818L, 1095988037611174L) | |
| test(-180987651967588L, -140226684536981914L, 246994174400378L) | |
| test(833309352355L, 5257458635234442787L, 1208023361952L) | |
| test(-22579028592974L, -47476342822552146L, 27864805516124L) | |
| test(9744525439149L, 736474376002594749L, 16812725583900L) | |
| test(-2843945215351L, -4166583957483287041L, 12900830149977L) | |
| test(-95865922570233L, -7254881016852281121L, 156363237944904L) | |
| test(134929788733543L, 4296825268368993527L, 137256910892546L) | |
| test(-207046992163300L, -60631062060489279L, 507764832506941L) | |
| test(-450506499492950L, -16279270902200926L, 545819462162344L) | |
| test(-21001025749L, -120715296107306033L, 683857870204L) | |
| test(110713754053227L, 11810000429759325L, 185702963106446L) | |
| test(-80504845900L, -66865102423090775L, 241806366625L) | |
| test(29361316939605L, 58425424162599923L, 193364446508809L) | |
| test(126332132307L, 495975906374412307L, 324618034880L) | |
| test(11750310041475L, 13098795247127361L, 14256040236477L) | |
| test(-2820995231L, -28082971156288335L, 2886317458L) | |
| test(-856087747000L, -7294235031903546523L, 2207709354381L) | |
| test(127372407516579L, 11875343380291413L, 279713594589877L) | |
| test(-95189779224694L, -201555894005618344L, 550439082585775L) | |
| test(-28210944743796L, -1037785570908536901L, 32835227336301L) | |
| test(4876153249L, 2839783057425459229L, 6407327394L) | |
| test(736189873568640L, 6875482986828220008L, 742172816253336L) | |
| test(-54624415368L, -118006778504953818L, 72596916825L) | |
| test(5102813362L, 39332119031229253L, 7602748813L) | |
| test(5244962969L, 86295194778571611L, 5401388374L) | |
| test(33647288201L, 16471371769530323L, 61350792699L) | |
| test(-16050338151L, -79135962419075376L, 28953323041L) | |
| test(12981486165522L, 228753608673200210L, 15736146614408L) | |
| test(2320531678876581L, 34527401002950741L, 3220686932407416L) | |
| test(-40680649487109L, -812780619607995673L, 53030140869014L) | |
| test(27897231688L, 1202898358452196048L, 64099076376L) | |
| test(-722136158L, -221468877749422237L, 3275821841L) | |
| test(-5898655866L, -9215248956777098454L, 68235756031L) | |
| test(763722238061482L, 2052506370068787562L, 2334178211411520L) | |
| test(347399715894725L, 514090742964385997L, 403886276138751L) | |
| test(82266055037649L, 192767004824633149L, 98559968680100L) | |
| test(898959150979L, 1158797429354770081L, 1436860683609L) | |
| test(-20037981041L, -37961764798073149L, 27673024823L) | |
| test(-72717556642L, -97162772410332351L, 272117928569L) | |
| test(-165925766094L, -247893552858557017L, 183293309603L) | |
| test(1479797283485806L, 4220161867656721306L, 4244146952085750L) | |
| // big, big | |
| test(883059337460449097L, 883059337460449097L, -1550174044384773417L) | |
| test(-9543412627974774L, -1596905473229600544L, -48101880624291690L) | |
| test(-10486616343740193L, -139303458961510665L, -11710622056160952L) | |
| test(81149513920264088L, 981926948276712668L, 300259144785482860L) | |
| test(9009882275485474L, 9009882275485474L, 79923769055871012L) | |
| test(-19932235341099321L, -506314354450506803L, 37414009162262114L) | |
| test(-12129109812415433L, -12129109812415433L, -2837741386438975528L) | |
| test(270784395103096803L, 270784395103096803L, 1612528131811460834L) | |
| test(83859782188007132L, 83859782188007132L, 3644002888077209617L) | |
| test(1746519510828363190L, 1746519510828363190L, 2111669249919511875L) | |
| test(860799297181306610L, 860799297181306610L, -1412005147950594882L) | |
| test(234265100281002846L, 2191676294256233782L, 489352798493807734L) | |
| test(-13539569498274996L, -4452079248766003228L, 23735506306244536L) | |
| test(91370955325389303L, 6249777914395455887L, 118430903059039742L) | |
| test(-16411784352803327L, -16411784352803327L, -20385458013414654L) | |
| test(-5887325254449551L, -22305484444692601L, -16418159190243050L) | |
| test(22270342034497702L, 22270342034497702L, -66419375563091088L) | |
| test(207601032925887705L, 666019080114845530L, 458418047188957825L) | |
| test(47277983711388430L, 47277983711388430L, -2109772615529102760L) | |
| test(-704328891862849825L, -704328891862849825L, 2276831382955067502L) | |
| test(-385964656907145510L, -1943847791817249050L, 389470783727525885L) | |
| test(-26138261192193017L, -369890880368811227L, 57292103196103035L) | |
| test(27655717698414314L, 27655717698414314L, -88623210967528211L) | |
| test(543130187522154L, 1012955677254479086L, -38938944117959882L) | |
| test(-11415718626796457L, -6587569366595715394L, -25004386494178399L) | |
| test(-487347157564673452L, -487347157564673452L, -3509587062480584104L) | |
| test(-783760630633017209L, -783760630633017209L, -2558190581855276594L) | |
| test(7102865471817366L, 851578697173205241L, -11259677756018505L) | |
| test(5421656277549904L, 1072836539808888926L, 28849050906252406L) | |
| test(50081603807435201L, 50081603807435201L, 3843187566851690054L) | |
| test(12229355184416833L, 12229355184416833L, 2960824918561572509L) | |
| test(-16093544120601009L, -232956518018373358L, -30980424842538907L) | |
| test(64957442391474035L, 64957442391474035L, -171662220355549567L) | |
| test(8955319424775302L, 23150711558820742L, -14195392134045440L) | |
| test(-44782815960861120L, -44782815960861120L, -7466833304991332587L) | |
| test(-17992712993945554L, -1092009147168492376L, -537008217087273411L) | |
| test(-7873560312580230L, -23378354844686757L, 15504794532106527L) | |
| test(2613971449376623L, 589867370672363331L, 12494753174957164L) | |
| test(-26919191832277496L, -1222102598859431176L, -74698962939197105L) | |
| test(-21166931130425933L, -139930636312903327L, 118763705182477394L) | |
| test(238558283776615026L, 238558283776615026L, 3989754685942986200L) | |
| test(-76394705346847293L, -216784999385471550L, 140390294038624257L) | |
| test(-9599424061286026L, -3941016588643634046L, -14835536470122068L) | |
| test(-328598693087048219L, -901033158038560664L, 572434464951512445L) | |
| test(-55762208105690701L, -55762208105690701L, 83369854153389342L) | |
| test(79579040298589706L, 2237037492842351339L, 102736116787798173L) | |
| test(-13418102631886498L, -502614740376610358L, -24459831887236193L) | |
| test(-21278129215907032L, -773733797545036687L, -68405060757193605L) | |
| test(2561606633654628L, 941995737089482432L, 234858532613956951L) | |
| test(-46319249618260476L, -46319249618260476L, 3256129778140263880L) | |
| } | |
| } |