|  | // Copyright (c) 2018, 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 | 
|  |  | 
|  | import "package:expect/expect.dart"; | 
|  | import 'dart:math'; | 
|  |  | 
|  | final int maxInt32 = 2147483647; | 
|  | final int minInt32 = -2147483648; | 
|  |  | 
|  | doZeros() { | 
|  | Expect.equals(1, pow(0, 0)); | 
|  | Expect.equals(0, pow(0, 1)); | 
|  | Expect.equals(0, pow(0, 2)); | 
|  | Expect.equals(0, pow(0, 3)); | 
|  | Expect.equals(0, pow(0, 4)); | 
|  | Expect.equals(0, pow(0, 5)); | 
|  | Expect.equals(0, pow(0, 45)); | 
|  | Expect.equals(0, pow(0, maxInt32 - 1)); | 
|  | Expect.equals(0, pow(0, maxInt32)); | 
|  |  | 
|  | Expect.equals(double.infinity, pow(0, -1)); | 
|  | Expect.equals(double.infinity, pow(0, -2)); | 
|  | Expect.equals(double.infinity, pow(0, minInt32)); | 
|  | } | 
|  |  | 
|  | doOnes() { | 
|  | Expect.equals(1, pow(1, 0)); | 
|  | Expect.equals(1, pow(1, 1)); | 
|  | Expect.equals(1, pow(1, 2)); | 
|  | Expect.equals(1, pow(1, 3)); | 
|  | Expect.equals(1, pow(1, 4)); | 
|  | Expect.equals(1, pow(1, 5)); | 
|  | Expect.equals(1, pow(1, 45)); | 
|  | Expect.equals(1, pow(1, maxInt32 - 1)); | 
|  | Expect.equals(1, pow(1, maxInt32)); | 
|  |  | 
|  | Expect.equals(1.0, pow(1, -1)); | 
|  | Expect.equals(1.0, pow(1, -2)); | 
|  | Expect.equals(1.0, pow(1, minInt32)); | 
|  | } | 
|  |  | 
|  | doMinOnes() { | 
|  | Expect.equals(1, pow(-1, 0)); | 
|  | Expect.equals(-1, pow(-1, 1)); | 
|  | Expect.equals(1, pow(-1, 2)); | 
|  | Expect.equals(-1, pow(-1, 3)); | 
|  | Expect.equals(1, pow(-1, 4)); | 
|  | Expect.equals(-1, pow(-1, 5)); | 
|  | Expect.equals(-1, pow(-1, 45)); | 
|  | Expect.equals(1, pow(-1, maxInt32 - 1)); | 
|  | Expect.equals(-1, pow(-1, maxInt32)); | 
|  |  | 
|  | Expect.equals(-1.0, pow(-1, -1)); | 
|  | Expect.equals(1.0, pow(-1, -2)); | 
|  | Expect.equals(1.0, pow(-1, minInt32)); | 
|  | } | 
|  |  | 
|  | doTwos() { | 
|  | Expect.equals(1, pow(2, 0)); | 
|  | Expect.equals(2, pow(2, 1)); | 
|  | Expect.equals(4, pow(2, 2)); | 
|  | Expect.equals(8, pow(2, 3)); | 
|  | Expect.equals(16, pow(2, 4)); | 
|  | Expect.equals(32, pow(2, 5)); | 
|  | Expect.equals(32768, pow(2, 15)); | 
|  | Expect.equals(65536, pow(2, 16)); | 
|  | Expect.equals(35184372088832, pow(2, 45)); | 
|  | Expect.equals(0, pow(2, maxInt32 - 1)); | 
|  | Expect.equals(0, pow(2, maxInt32)); | 
|  |  | 
|  | Expect.equals(0.5, pow(2, -1)); | 
|  | Expect.equals(0.25, pow(2, -2)); | 
|  | Expect.equals(0.0, pow(2, minInt32)); | 
|  | } | 
|  |  | 
|  | doMinTwos() { | 
|  | Expect.equals(1, pow(-2, 0)); | 
|  | Expect.equals(-2, pow(-2, 1)); | 
|  | Expect.equals(4, pow(-2, 2)); | 
|  | Expect.equals(-8, pow(-2, 3)); | 
|  | Expect.equals(16, pow(-2, 4)); | 
|  | Expect.equals(-32, pow(-2, 5)); | 
|  | Expect.equals(-32768, pow(-2, 15)); | 
|  | Expect.equals(65536, pow(-2, 16)); | 
|  | Expect.equals(-35184372088832, pow(-2, 45)); | 
|  | Expect.equals(0, pow(-2, maxInt32 - 1)); | 
|  | Expect.equals(0, pow(-2, maxInt32)); | 
|  |  | 
|  | Expect.equals(-0.5, pow(-2, -1)); | 
|  | Expect.equals(0.25, pow(-2, -2)); | 
|  | Expect.equals(0.0, pow(-2, minInt32)); | 
|  | } | 
|  |  | 
|  | doVar0() { | 
|  | int d = 0; | 
|  | for (int i = -10; i < 10; i++) { | 
|  | d += pow(i, 0); | 
|  | } | 
|  | Expect.equals(20, d); | 
|  | } | 
|  |  | 
|  | doVar1() { | 
|  | int d = 0; | 
|  | for (int i = -10; i < 10; i++) { | 
|  | d += pow(i, 1); | 
|  | } | 
|  | Expect.equals(-10, d); | 
|  | } | 
|  |  | 
|  | doVar2() { | 
|  | int d = 0; | 
|  | for (int i = -10; i < 10; i++) { | 
|  | d += pow(i, 2); | 
|  | } | 
|  | Expect.equals(670, d); | 
|  | } | 
|  |  | 
|  | doVar3() { | 
|  | int d = 0; | 
|  | for (int i = -10; i < 10; i++) { | 
|  | d += pow(i, 3); | 
|  | } | 
|  | Expect.equals(-1000, d); | 
|  | } | 
|  |  | 
|  | doVar4() { | 
|  | int d = 0; | 
|  | for (int i = -10; i < 10; i++) { | 
|  | d += pow(i, 4); | 
|  | } | 
|  | Expect.equals(40666, d); | 
|  | } | 
|  |  | 
|  | doVar5() { | 
|  | int d = 0; | 
|  | for (int i = -10; i < 10; i++) { | 
|  | d += pow(i, 5); | 
|  | } | 
|  | Expect.equals(-100000, d); | 
|  | } | 
|  |  | 
|  | doVarMax() { | 
|  | int d = 0; | 
|  | for (int i = -5; i < 10; i++) { | 
|  | d += pow(i, maxInt32); | 
|  | } | 
|  | Expect.equals(1786231423019973616, d); | 
|  | } | 
|  |  | 
|  | doVarZeroes() { | 
|  | int d = 0; | 
|  | for (int i = 0; i < 10; i++) { | 
|  | d += pow(0, i); | 
|  | } | 
|  | Expect.equals(1, d); | 
|  | } | 
|  |  | 
|  | doVarOnes() { | 
|  | int d = 0; | 
|  | for (int i = 0; i < 10; i++) { | 
|  | d += pow(1, i); | 
|  | } | 
|  | Expect.equals(10, d); | 
|  | } | 
|  |  | 
|  | doVarTwos() { | 
|  | int d = 0; | 
|  | for (int i = 0; i < 10; i++) { | 
|  | d += pow(2, i); | 
|  | } | 
|  | Expect.equals(1023, d); | 
|  | } | 
|  |  | 
|  | main() { | 
|  | doZeros(); | 
|  | doOnes(); | 
|  | doMinOnes(); | 
|  | doTwos(); | 
|  | doMinTwos(); | 
|  | doVar0(); | 
|  | doVar1(); | 
|  | doVar2(); | 
|  | doVar3(); | 
|  | doVar4(); | 
|  | doVar5(); | 
|  | doVarMax(); | 
|  | doVarZeroes(); | 
|  | doVarOnes(); | 
|  | doVarTwos(); | 
|  | } |