| // Copyright (c) 2013, 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 test program for testing math's pow. | 
 |  | 
 | // @dart = 2.9 | 
 |  | 
 | library pow_test; | 
 |  | 
 | import "package:expect/expect.dart"; | 
 | import 'dart:math'; | 
 |  | 
 | var expectedResults = [ | 
 |   1, | 
 |   2, | 
 |   4, | 
 |   8, | 
 |   16, | 
 |   32, | 
 |   64, | 
 |   128, | 
 |   256, | 
 |   512, | 
 |   1024, | 
 |   2048, | 
 |   4096, | 
 |   8192, | 
 |   16384, | 
 |   32768, | 
 |   65536, | 
 |   131072, | 
 |   262144, | 
 |   524288, | 
 |   1048576, | 
 |   2097152, | 
 |   4194304, | 
 |   8388608, | 
 |   16777216, | 
 |   33554432, | 
 |   67108864, | 
 |   134217728, | 
 |   268435456, | 
 |   536870912, | 
 |   1073741824, | 
 |   2147483648, | 
 |   4294967296, | 
 |   8589934592, | 
 |   17179869184, | 
 |   34359738368, | 
 |   68719476736, | 
 |   137438953472, | 
 |   274877906944, | 
 |   549755813888, | 
 |   1099511627776, | 
 |   2199023255552, | 
 |   4398046511104, | 
 |   8796093022208, | 
 |   17592186044416, | 
 |   35184372088832, | 
 |   70368744177664, | 
 |   140737488355328, | 
 |   281474976710656, | 
 |   562949953421312, | 
 |   1125899906842624, | 
 |   2251799813685248, | 
 |   4503599627370496, | 
 |   9007199254740992, | 
 |   18014398509481984, | 
 |   36028797018963968, | 
 |   72057594037927936, | 
 |   144115188075855872, | 
 |   288230376151711744, | 
 |   576460752303423488, | 
 |   1152921504606846976, | 
 |   2305843009213693952, | 
 |   4611686018427387904, | 
 | ]; | 
 |  | 
 | void main() { | 
 |   int exp = 0; | 
 |   for (int val in expectedResults) { | 
 |     Expect.equals(val, pow(2, exp)); | 
 |     Expect.equals(val.toDouble(), pow(2, exp.toDouble())); | 
 |     exp++; | 
 |   } | 
 |  | 
 |   // Optimize it. | 
 |   for (int i = 0; i < 8888; i++) { | 
 |     pow(2, 3); | 
 |     pow(2.0, 3.0); | 
 |   } | 
 |   exp = 0; | 
 |   for (int val in expectedResults) { | 
 |     Expect.equals(val, pow(2, exp)); | 
 |     Expect.equals(val.toDouble(), pow(2, exp.toDouble())); | 
 |     exp++; | 
 |   } | 
 | } |