/numbers

A collection of packages that implement arithmetic for many number systems in Go.

Primary LanguageGoMIT LicenseMIT

numbers

Go Report Card GoDoc

Metapackage numbers is a collection of packages that implement arithmetic over many number systems, including dual numbers, quaternions, octonions, and their parabolic and hyperbolic cousins. In each package five types are implemented:

  • Int64
  • Float64
  • Int
  • Float
  • Rat

Each value is printed in the form "(...)". This is similar to complex128 values.

Here is a list of available packages:

  1. vec3: three-dimensional vectors
  2. vec7: seven-dimensional vectors
  3. eisenstein: Eisenstein numbers
  4. heegner: imaginary quadratic fields with class number 1. See Heegner numbers
  5. maclaurin: Maclaurin polynomials
  6. pade: Padé approximants
  7. cplex: complex numbers
  8. nplex: nilplex numbers (more commonly known as dual numbers)
  9. pplex: perplex numbers (more commonly known as split-complex numbers)
  10. hamilton: Hamilton quaternions (i.e. traditional quaternions; can also be referred to as elliptic quaternions; four-dimensional)
  11. cockle: Cockle quaternions (more commonly known as split-quaternions; can also be referred to as hyperbolic quaternions; four-dimensional)
  12. grassmann2: two-dimensional Grassmann numbers (different from bi-nilplex numbers; can also be referred to as parabolic quaternions; four-dimensional)
  13. supercplex: super-complex numbers (different from dual-complex numbers; four-dimensional)
  14. superpplex: super-perplex numbers (different from dual-perplex numbers; four-dimensional)
  15. bicplex: bi-complex numbers (complexification of the complex numbers; four-dimensional)
  16. bipplex: bi-perplex numbers (perplexification of the perplex numbers; four-dimensional)
  17. binplex: bi-nilplex numbers (nilplexification of the nilplex numbers; four-dimensional)
  18. dualcplex: dual-complex numbers (nilplexification of the complex numbers; four-dimensional)
  19. dualpplex: dual-perplex numbers (nilplexification of the perplex numbers; four-dimensional)
  20. cayley: Cayley octonions (i.e. traditional octonions; can also be referred to as elliptic octonions; eight-dimensional)
  21. zorn: Zorn octonions (more commonly known as split-octonions; can also be referred to as hyperbolic octonions; eight-dimensional)
  22. grassmann3: three-dimensional Grassmann numbers (different from tri-nilplex numbers; can also be referred to as parabolic octonions; eight-dimensional)
  23. superhamilton: super-Hamilton quaternions (different from the dual-Hamilton quaternions; eight-dimensional)
  24. supercockle: super-Cockle quaternions (different from the dual-Cockle quaternions; eight-dimensional)
  25. ultracplex: ultra-complex numbers (different from the hyper-complex numbers; eight-dimensional)
  26. ultrapplex: ultra-perplex numbers (different from the hyper-perplex numbers; eight-dimensional)
  27. tricplex: tri-complex numbers (complexification of the bi-complex numbers; eight-dimensional)
  28. trinplex: tri-nilplex numbers (nilplexification of the bi-nilplex numbers; eight-dimensional)
  29. tripplex: tri-perplex numbers (perplexification of the di-perplex numbers; eight-dimensional)
  30. hypercplex: hyper-complex numbers (nilplexification of dual-complex numbers; eight-dimensional)
  31. hyperpplex: hyper-perplex numbers (nilplexification of dual-perplex numbers; eight-dimensional)
  32. dualhamilton: dual-Hamilton quaternions (nilplexification of Hamilton quaternions; eight-dimensional)
  33. dualcockle: dual-Cockle quaternions (nilplexification of Cockle quaternions; eight-dimensional)
  34. comhamilton: complex-Hamilton quaternions (complexification of Hamilton quaternions; eight-dimensional)
  35. perhamilton: perplex-Hamilton quaternions (perplexification of Hamilton quaternions; eight-dimensional)
  36. percockle: perplex-Cockle quaternions (perplexification of Cockle quaternions; eight-dimensional)
  37. grassmann4: four-dimensional Grassmann numbers (can also be referred to as parabolic sedenions; sixteen-dimensional)

Here is a list of future packages:

  1. laurent: Laurent polynomials

To-Do:

  1. SetReal and SetUnreal methods
  2. Plus and Minus methods
  3. Maclaurin methods
  4. Padé methods
  5. Inf and NaN methods
  6. IsInf and IsNaN methods
  7. Dot and Cross methods