blob: 7fb5f0708b17f27e516eda0b04a72f0a90c2ba79 [file] [log] [blame]
// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
// @dart = 2.9
// Testing Bigints with and without intrinsics.
// VMOptions=--intrinsify --no-enable-asserts
// VMOptions=--intrinsify --enable-asserts
// VMOptions=--no-intrinsify --enable-asserts
// VMOptions=--no-intrinsify --no-enable-asserts
import "package:expect/expect.dart";
expectProduct(aString, bString, expectedString) {
BigInt a = BigInt.parse(aString, radix: 16);
BigInt b = BigInt.parse(bString, radix: 16);
BigInt expected = BigInt.parse(expectedString, radix: 16);
BigInt actual = a * b;
String actualString = actual.toRadixString(16);
print("$aString * $bString");
print(" = $actualString (expected $expectedString)");
Expect.equals(expected, actual);
}
main() {
expectProduct(
"d87becaa3701c97b31b5b8084f2b5b34e7857092",
"d4cba13fac3ee22b996ff6856c27c1f6d88aef0e",
"b3f2d29d6885d40866b040adf8f545352154823b15fed8aa8c35c5c223fcf4bf6eb904401c1875fc");
expectProduct(
"d4cba13fac3ee22b996ff6856c27c1f6d88aef0e",
"d87becaa3701c97b31b5b8084f2b5b34e7857092",
"b3f2d29d6885d40866b040adf8f545352154823b15fed8aa8c35c5c223fcf4bf6eb904401c1875fc");
expectProduct(
"d87becaa3701c97b31b5b8084f2b5b34e7857092",
"a13fac3ee22b996ff6856c27c1f6d88aef0e",
"885bc7febac39cd5592e28ce964bfea66a31ea38d8aa8c35c5c223fcf4bf6eb904401c1875fc");
expectProduct(
"d87becaa3701c97b31b5b8084f2b5b34e7857092",
"3fac3ee22b996ff6856c27c1f6d88aef0e",
"35d827ae2b7d1edeeae0115c81ba4a2496fe6d06aa8c35c5c223fcf4bf6eb904401c1875fc");
expectProduct(
"d87becaa3701c97b31b5b8084f2b5b34e7857092",
"ac3ee22b996ff6856c27c1f6d88aef0e",
"91a87047f3ae4999a45912763e9eb292049652bc8c35c5c223fcf4bf6eb904401c1875fc");
expectProduct(
"d87becaa3701c97b31b5b8084f2b5b34e7857092",
"3ee22b996ff6856c27c1f6d88aef0e",
"352d4596b9163adef2fad0a96d914a7908ab1a7435c5c223fcf4bf6eb904401c1875fc");
expectProduct("d87becaa3701c97b31b5b8084f2b5b34e7857092", "1",
"d87becaa3701c97b31b5b8084f2b5b34e7857092");
expectProduct("d87becaa3701c97b31b5b8084f2b5b34e7857092", "0", "0");
expectProduct(
"-d87becaa3701c97b31b5b8084f2b5b34e7857092",
"d4cba13fac3ee22b996ff6856c27c1f6d88aef0e",
"-b3f2d29d6885d40866b040adf8f545352154823b15fed8aa8c35c5c223fcf4bf6eb904401c1875fc");
expectProduct(
"-d4cba13fac3ee22b996ff6856c27c1f6d88aef0e",
"d87becaa3701c97b31b5b8084f2b5b34e7857092",
"-b3f2d29d6885d40866b040adf8f545352154823b15fed8aa8c35c5c223fcf4bf6eb904401c1875fc");
expectProduct(
"-d87becaa3701c97b31b5b8084f2b5b34e7857092",
"a13fac3ee22b996ff6856c27c1f6d88aef0e",
"-885bc7febac39cd5592e28ce964bfea66a31ea38d8aa8c35c5c223fcf4bf6eb904401c1875fc");
expectProduct(
"-d87becaa3701c97b31b5b8084f2b5b34e7857092",
"3fac3ee22b996ff6856c27c1f6d88aef0e",
"-35d827ae2b7d1edeeae0115c81ba4a2496fe6d06aa8c35c5c223fcf4bf6eb904401c1875fc");
expectProduct(
"-d87becaa3701c97b31b5b8084f2b5b34e7857092",
"ac3ee22b996ff6856c27c1f6d88aef0e",
"-91a87047f3ae4999a45912763e9eb292049652bc8c35c5c223fcf4bf6eb904401c1875fc");
expectProduct(
"-d87becaa3701c97b31b5b8084f2b5b34e7857092",
"3ee22b996ff6856c27c1f6d88aef0e",
"-352d4596b9163adef2fad0a96d914a7908ab1a7435c5c223fcf4bf6eb904401c1875fc");
expectProduct("-d87becaa3701c97b31b5b8084f2b5b34e7857092", "1",
"-d87becaa3701c97b31b5b8084f2b5b34e7857092");
expectProduct("-d87becaa3701c97b31b5b8084f2b5b34e7857092", "0", "0");
expectProduct(
"d87becaa3701c97b31b5b8084f2b5b34e7857092",
"-d4cba13fac3ee22b996ff6856c27c1f6d88aef0e",
"-b3f2d29d6885d40866b040adf8f545352154823b15fed8aa8c35c5c223fcf4bf6eb904401c1875fc");
expectProduct(
"d4cba13fac3ee22b996ff6856c27c1f6d88aef0e",
"-d87becaa3701c97b31b5b8084f2b5b34e7857092",
"-b3f2d29d6885d40866b040adf8f545352154823b15fed8aa8c35c5c223fcf4bf6eb904401c1875fc");
expectProduct(
"d87becaa3701c97b31b5b8084f2b5b34e7857092",
"-a13fac3ee22b996ff6856c27c1f6d88aef0e",
"-885bc7febac39cd5592e28ce964bfea66a31ea38d8aa8c35c5c223fcf4bf6eb904401c1875fc");
expectProduct(
"d87becaa3701c97b31b5b8084f2b5b34e7857092",
"-3fac3ee22b996ff6856c27c1f6d88aef0e",
"-35d827ae2b7d1edeeae0115c81ba4a2496fe6d06aa8c35c5c223fcf4bf6eb904401c1875fc");
expectProduct(
"d87becaa3701c97b31b5b8084f2b5b34e7857092",
"-ac3ee22b996ff6856c27c1f6d88aef0e",
"-91a87047f3ae4999a45912763e9eb292049652bc8c35c5c223fcf4bf6eb904401c1875fc");
expectProduct(
"d87becaa3701c97b31b5b8084f2b5b34e7857092",
"-3ee22b996ff6856c27c1f6d88aef0e",
"-352d4596b9163adef2fad0a96d914a7908ab1a7435c5c223fcf4bf6eb904401c1875fc");
expectProduct("d87becaa3701c97b31b5b8084f2b5b34e7857092", "-1",
"-d87becaa3701c97b31b5b8084f2b5b34e7857092");
expectProduct("d87becaa3701c97b31b5b8084f2b5b34e7857092", "-0", "0");
expectProduct(
"-d87becaa3701c97b31b5b8084f2b5b34e7857092",
"-d4cba13fac3ee22b996ff6856c27c1f6d88aef0e",
"b3f2d29d6885d40866b040adf8f545352154823b15fed8aa8c35c5c223fcf4bf6eb904401c1875fc");
expectProduct(
"-d4cba13fac3ee22b996ff6856c27c1f6d88aef0e",
"-d87becaa3701c97b31b5b8084f2b5b34e7857092",
"b3f2d29d6885d40866b040adf8f545352154823b15fed8aa8c35c5c223fcf4bf6eb904401c1875fc");
expectProduct(
"-d87becaa3701c97b31b5b8084f2b5b34e7857092",
"-a13fac3ee22b996ff6856c27c1f6d88aef0e",
"885bc7febac39cd5592e28ce964bfea66a31ea38d8aa8c35c5c223fcf4bf6eb904401c1875fc");
expectProduct(
"-d87becaa3701c97b31b5b8084f2b5b34e7857092",
"-3fac3ee22b996ff6856c27c1f6d88aef0e",
"35d827ae2b7d1edeeae0115c81ba4a2496fe6d06aa8c35c5c223fcf4bf6eb904401c1875fc");
expectProduct(
"-d87becaa3701c97b31b5b8084f2b5b34e7857092",
"-ac3ee22b996ff6856c27c1f6d88aef0e",
"91a87047f3ae4999a45912763e9eb292049652bc8c35c5c223fcf4bf6eb904401c1875fc");
expectProduct(
"-d87becaa3701c97b31b5b8084f2b5b34e7857092",
"-3ee22b996ff6856c27c1f6d88aef0e",
"352d4596b9163adef2fad0a96d914a7908ab1a7435c5c223fcf4bf6eb904401c1875fc");
expectProduct("-d87becaa3701c97b31b5b8084f2b5b34e7857092", "-1",
"d87becaa3701c97b31b5b8084f2b5b34e7857092");
expectProduct("-d87becaa3701c97b31b5b8084f2b5b34e7857092", "-0", "0");
}