constants.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import { memoize } from '../function.js';
  2. /**
  3. * Calculate BigNumber e
  4. * @param {function} BigNumber BigNumber constructor
  5. * @returns {BigNumber} Returns e
  6. */
  7. export var createBigNumberE = memoize(function (BigNumber) {
  8. return new BigNumber(1).exp();
  9. }, {
  10. hasher
  11. });
  12. /**
  13. * Calculate BigNumber golden ratio, phi = (1+sqrt(5))/2
  14. * @param {function} BigNumber BigNumber constructor
  15. * @returns {BigNumber} Returns phi
  16. */
  17. export var createBigNumberPhi = memoize(function (BigNumber) {
  18. return new BigNumber(1).plus(new BigNumber(5).sqrt()).div(2);
  19. }, {
  20. hasher
  21. });
  22. /**
  23. * Calculate BigNumber pi.
  24. * @param {function} BigNumber BigNumber constructor
  25. * @returns {BigNumber} Returns pi
  26. */
  27. export var createBigNumberPi = memoize(function (BigNumber) {
  28. return BigNumber.acos(-1);
  29. }, {
  30. hasher
  31. });
  32. /**
  33. * Calculate BigNumber tau, tau = 2 * pi
  34. * @param {function} BigNumber BigNumber constructor
  35. * @returns {BigNumber} Returns tau
  36. */
  37. export var createBigNumberTau = memoize(function (BigNumber) {
  38. return createBigNumberPi(BigNumber).times(2);
  39. }, {
  40. hasher
  41. });
  42. /**
  43. * Create a hash for a BigNumber constructor function. The created has is
  44. * the configured precision
  45. * @param {Array} args Supposed to contain a single entry with
  46. * a BigNumber constructor
  47. * @return {number} precision
  48. * @private
  49. */
  50. function hasher(args) {
  51. return args[0].precision;
  52. }