"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.acosNumber = acosNumber;
exports.acoshNumber = acoshNumber;
exports.acotNumber = acotNumber;
exports.acothNumber = acothNumber;
exports.acscNumber = acscNumber;
exports.acschNumber = acschNumber;
exports.asecNumber = asecNumber;
exports.asechNumber = asechNumber;
exports.asinNumber = asinNumber;
exports.asinhNumber = asinhNumber;
exports.atan2Number = atan2Number;
exports.atanNumber = atanNumber;
exports.atanhNumber = atanhNumber;
exports.cosNumber = cosNumber;
exports.coshNumber = coshNumber;
exports.cotNumber = cotNumber;
exports.cothNumber = cothNumber;
exports.cscNumber = cscNumber;
exports.cschNumber = cschNumber;
exports.secNumber = secNumber;
exports.sechNumber = sechNumber;
exports.sinNumber = sinNumber;
exports.sinhNumber = sinhNumber;
exports.tanNumber = tanNumber;
exports.tanhNumber = tanhNumber;
var _number = require("../../utils/number.js");
const n1 = 'number';
const n2 = 'number, number';
function acosNumber(x) {
  return Math.acos(x);
}
acosNumber.signature = n1;
function acoshNumber(x) {
  return (0, _number.acosh)(x);
}
acoshNumber.signature = n1;
function acotNumber(x) {
  return Math.atan(1 / x);
}
acotNumber.signature = n1;
function acothNumber(x) {
  return isFinite(x) ? (Math.log((x + 1) / x) + Math.log(x / (x - 1))) / 2 : 0;
}
acothNumber.signature = n1;
function acscNumber(x) {
  return Math.asin(1 / x);
}
acscNumber.signature = n1;
function acschNumber(x) {
  const xInv = 1 / x;
  return Math.log(xInv + Math.sqrt(xInv * xInv + 1));
}
acschNumber.signature = n1;
function asecNumber(x) {
  return Math.acos(1 / x);
}
asecNumber.signature = n1;
function asechNumber(x) {
  const xInv = 1 / x;
  const ret = Math.sqrt(xInv * xInv - 1);
  return Math.log(ret + xInv);
}
asechNumber.signature = n1;
function asinNumber(x) {
  return Math.asin(x);
}
asinNumber.signature = n1;
function asinhNumber(x) {
  return (0, _number.asinh)(x);
}
asinhNumber.signature = n1;
function atanNumber(x) {
  return Math.atan(x);
}
atanNumber.signature = n1;
function atan2Number(y, x) {
  return Math.atan2(y, x);
}
atan2Number.signature = n2;
function atanhNumber(x) {
  return (0, _number.atanh)(x);
}
atanhNumber.signature = n1;
function cosNumber(x) {
  return Math.cos(x);
}
cosNumber.signature = n1;
function coshNumber(x) {
  return (0, _number.cosh)(x);
}
coshNumber.signature = n1;
function cotNumber(x) {
  return 1 / Math.tan(x);
}
cotNumber.signature = n1;
function cothNumber(x) {
  const e = Math.exp(2 * x);
  return (e + 1) / (e - 1);
}
cothNumber.signature = n1;
function cscNumber(x) {
  return 1 / Math.sin(x);
}
cscNumber.signature = n1;
function cschNumber(x) {
  // consider values close to zero (+/-)
  if (x === 0) {
    return Number.POSITIVE_INFINITY;
  } else {
    return Math.abs(2 / (Math.exp(x) - Math.exp(-x))) * (0, _number.sign)(x);
  }
}
cschNumber.signature = n1;
function secNumber(x) {
  return 1 / Math.cos(x);
}
secNumber.signature = n1;
function sechNumber(x) {
  return 2 / (Math.exp(x) + Math.exp(-x));
}
sechNumber.signature = n1;
function sinNumber(x) {
  return Math.sin(x);
}
sinNumber.signature = n1;
function sinhNumber(x) {
  return (0, _number.sinh)(x);
}
sinhNumber.signature = n1;
function tanNumber(x) {
  return Math.tan(x);
}
tanNumber.signature = n1;
function tanhNumber(x) {
  return (0, _number.tanh)(x);
}
tanhNumber.signature = n1;