asech.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.createAsech = void 0;
  6. var _factory = require("../../utils/factory.js");
  7. var _index = require("../../plain/number/index.js");
  8. var name = 'asech';
  9. var dependencies = ['typed', 'config', 'Complex', 'BigNumber'];
  10. var createAsech = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
  11. var typed = _ref.typed,
  12. config = _ref.config,
  13. Complex = _ref.Complex,
  14. _BigNumber = _ref.BigNumber;
  15. /**
  16. * Calculate the hyperbolic arcsecant of a value,
  17. * defined as `asech(x) = acosh(1/x) = ln(sqrt(1/x^2 - 1) + 1/x)`.
  18. *
  19. * To avoid confusion with the matrix hyperbolic arcsecant, this function
  20. * does not apply to matrices.
  21. *
  22. * Syntax:
  23. *
  24. * math.asech(x)
  25. *
  26. * Examples:
  27. *
  28. * math.asech(0.5) // returns 1.3169578969248166
  29. *
  30. * See also:
  31. *
  32. * acsch, acoth
  33. *
  34. * @param {number | BigNumber | Complex} x Function input
  35. * @return {number | BigNumber | Complex} Hyperbolic arcsecant of x
  36. */
  37. return typed(name, {
  38. number: function number(x) {
  39. if (x <= 1 && x >= -1 || config.predictable) {
  40. var xInv = 1 / x;
  41. if (xInv > 0 || config.predictable) {
  42. return (0, _index.asechNumber)(x);
  43. }
  44. var ret = Math.sqrt(xInv * xInv - 1);
  45. return new Complex(Math.log(ret - xInv), Math.PI);
  46. }
  47. return new Complex(x, 0).asech();
  48. },
  49. Complex: function Complex(x) {
  50. return x.asech();
  51. },
  52. BigNumber: function BigNumber(x) {
  53. return new _BigNumber(1).div(x).acosh();
  54. }
  55. });
  56. });
  57. exports.createAsech = createAsech;