v8/test/mjsunit/harmony/bigint/exp.js
Mathias Bynens f7d357b20a Remove always-true --harmony-bigint runtime flag
It was shipped in Chrome 67.

Bug: v8:6791, v8:8238
Cq-Include-Trybots: luci.chromium.try:linux_chromium_headless_rel;luci.chromium.try:linux_chromium_rel_ng;luci.v8.try:v8_linux_noi18n_rel_ng;master.tryserver.blink:linux_trusty_blink_rel
Change-Id: I94d8f0aa18570452403a35dea270b18f155c970a
Reviewed-on: https://chromium-review.googlesource.com/1253604
Reviewed-by: Georg Neis <neis@chromium.org>
Commit-Queue: Mathias Bynens <mathias@chromium.org>
Cr-Commit-Position: refs/heads/master@{#56310}
2018-10-01 11:31:13 +00:00

53 lines
1.5 KiB
JavaScript

// Copyright 2017 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flags: --allow-natives-syntax
assertEquals(1n, (-1n) ** 0n);
assertEquals(-1n, (-1n) ** 1n);
assertEquals(1n, (-1n) ** 2n);
assertEquals(-1n, (-1n) ** 3n);
assertEquals(1n, (-1n) ** 4n);
// Multi-digit exponents.
assertEquals(1n, (-1n) ** (2n ** 80n));
assertEquals(-1n, (-1n) ** ((2n ** 80n) + 1n));
assertEquals(1n, 0n ** 0n);
assertEquals(0n, 0n ** 1n);
assertEquals(0n, 0n ** 23n);
assertEquals(1n, 1n ** 0n);
assertEquals(1n, 1n ** 1n);
assertEquals(1n, 99n ** 0n);
assertEquals(2n, 2n ** 1n);
assertEquals(4n, 2n ** 2n);
assertEquals(8n, 2n ** 3n);
assertEquals(16n, 2n ** 4n);
assertEquals(151115727451828646838272n, 2n ** 77n);
assertEquals(3n, 3n ** 1n);
assertEquals(9n, 3n ** 2n);
assertEquals(27n, 3n ** 3n);
assertEquals(81n, 3n ** 4n);
assertEquals(243n, 3n ** 5n);
assertEquals(30903154382632612361920641803529n, 3n ** 66n);
assertEquals(1n, (-2n) ** 0n);
assertEquals(-2n, (-2n) ** 1n);
assertEquals(4n, (-2n) ** 2n);
assertEquals(-8n, (-2n) ** 3n);
assertEquals(16n, (-2n) ** 4n);
assertEquals(-32n, (-2n) ** 5n);
assertEquals(1n, (-3n) ** 0n);
assertEquals(-3n, (-3n) ** 1n);
assertEquals(9n, (-3n) ** 2n);
assertEquals(-27n, (-3n) ** 3n);
assertEquals(81n, (-3n) ** 4n);
assertEquals(-243n, (-3n) ** 5n);
assertThrows(() => 3n ** -2n, RangeError); // Negative exponent.
assertThrows(() => 2n ** (1024n ** 4n), RangeError); // Too big.