whole_func_string: function NumberToExponentialJS(fractionDigits) {
    var x = this;
    if (!IS_NUMBER(this)) {
      if (!IS_NUMBER_WRAPPER(this)) {
        throw MakeTypeError(kIncompatibleMethodReceiver,
                            "Number.prototype.toExponential", this);
      }
      // Get the value of this number in case it's an object.
      x = %_ValueOf(this);
    }
    var f = IS_UNDEFINED(fractionDigits) ? UNDEFINED : TO_INTEGER(fractionDigits);
  
    if (NUMBER_IS_NAN(x)) return "NaN";
    if (x == INFINITY) return "Infinity";
    if (x == -INFINITY) return "-Infinity";
  
    if (IS_UNDEFINED(f)) {
      f = -1;  // Signal for runtime function that f is not defined.
    } else if (f < 0 || f > 20) {
      throw MakeRangeError(kNumberFormatRange, "toExponential()");
    }
    return %NumberToExponential(x, f);
  }
func_code_string: function NumberToExponentialJS(fractionDigits) {
    var x = this;
    if (!IS_NUMBER(this)) {
      if (!IS_NUMBER_WRAPPER(this)) {
        throw MakeTypeError(kIncompatibleMethodReceiver,
                            "Number.prototype.toExponential", this);
      }
      // Get the value of this number in case it's an object.
      x = %_ValueOf(this);
    }
    var f = IS_UNDEFINED(fractionDigits) ? UNDEFINED : TO_INTEGER(fractionDigits);
  
    if (NUMBER_IS_NAN(x)) return "NaN";
    if (x == INFINITY) return "Infinity";
    if (x == -INFINITY) return "-Infinity";
  
    if (IS_UNDEFINED(f)) {
      f = -1;  // Signal for runtime function that f is not defined.
    } else if (f < 0 || f > 20) {
      throw MakeRangeError(kNumberFormatRange, "toExponential()");
    }
    return %NumberToExponential(x, f);
  }
func_documentation_string: ES6 20.1.3.2 Number.prototype.toExponential(fractionDigits)