// Copyright 2016 Rick Waldron.  All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.

/*---
esid: sec-applying-the-exp-operator
description: >
    If exponent is −0, the result is 1, even if base is NaN.
---*/


var exponent = -0;
var bases = [];
bases[0] = -Infinity;
bases[1] = -1.7976931348623157E308; //largest (by module) finite number
bases[2] = -0.000000000000001;
bases[3] = -0;
bases[4] = +0
bases[5] = 0.000000000000001;
bases[6] = 1.7976931348623157E308; //largest finite number
bases[7] = +Infinity;
bases[8] = NaN;

for (var i = 0; i < bases.length; i++) {
  if ((bases[i] ** exponent) !== 1) {
    $ERROR("(" + bases[i] + " ** -0) !== 1");
  }
}
