https://github.com/meirizarrygelpi/numbers
A collection of packages that implement arithmetic for many number systems in Go.
https://github.com/meirizarrygelpi/numbers
complex-numbers dual-numbers perplex-numbers quaternion
Last synced: 5 months ago
JSON representation
A collection of packages that implement arithmetic for many number systems in Go.
- Host: GitHub
- URL: https://github.com/meirizarrygelpi/numbers
- Owner: meirizarrygelpi
- License: mit
- Created: 2016-12-19T18:38:30.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2018-10-23T11:22:40.000Z (over 7 years ago)
- Last Synced: 2024-06-20T10:21:59.966Z (about 2 years ago)
- Topics: complex-numbers, dual-numbers, perplex-numbers, quaternion
- Language: Go
- Size: 636 KB
- Stars: 6
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# numbers
[](https://goreportcard.com/report/github.com/meirizarrygelpi/numbers) [](https://godoc.org/github.com/meirizarrygelpi/numbers)
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
1. `vec7`: seven-dimensional vectors
1. `eisenstein`: [Eisenstein numbers](https://en.wikipedia.org/wiki/Eisenstein_integer)
1. `heegner`: imaginary quadratic fields with class number 1. See [Heegner numbers](https://en.wikipedia.org/wiki/Heegner_number)
1. `maclaurin`: [Maclaurin polynomials](https://en.wikipedia.org/wiki/Polynomial)
1. `pade`: [Padé approximants](https://en.wikipedia.org/wiki/Pad%C3%A9_approximant)
1. `cplex`: [complex numbers](https://en.wikipedia.org/wiki/Complex_number)
1. `nplex`: nilplex numbers (more commonly known as [dual numbers](https://en.wikipedia.org/wiki/Dual_number))
1. `pplex`: perplex numbers (more commonly known as [split-complex numbers](https://en.wikipedia.org/wiki/Split-complex_number))
1. `hamilton`: Hamilton quaternions (i.e. traditional [quaternions](https://en.wikipedia.org/wiki/Quaternion); can also be referred to as elliptic quaternions; four-dimensional)
1. `cockle`: Cockle quaternions (more commonly known as [split-quaternions](https://en.wikipedia.org/wiki/Split-quaternion); can also be referred to as hyperbolic quaternions; four-dimensional)
1. `grassmann2`: two-dimensional Grassmann numbers (different from bi-nilplex numbers; can also be referred to as parabolic quaternions; four-dimensional)
1. `supercplex`: super-complex numbers (different from dual-complex numbers; four-dimensional)
1. `superpplex`: super-perplex numbers (different from dual-perplex numbers; four-dimensional)
1. `bicplex`: [bi-complex numbers](https://en.wikipedia.org/wiki/Bicomplex_number) (complexification of the complex numbers; four-dimensional)
1. `bipplex`: bi-perplex numbers (perplexification of the perplex numbers; four-dimensional)
1. `binplex`: bi-nilplex numbers (nilplexification of the nilplex numbers; four-dimensional)
1. `dualcplex`: dual-complex numbers (nilplexification of the complex numbers; four-dimensional)
1. `dualpplex`: dual-perplex numbers (nilplexification of the perplex numbers; four-dimensional)
1. `cayley`: Cayley octonions (i.e. traditional [octonions](https://en.wikipedia.org/wiki/Octonion); can also be referred to as elliptic octonions; eight-dimensional)
1. `zorn`: Zorn octonions (more commonly known as [split-octonions](https://en.wikipedia.org/wiki/Split-octonion); can also be referred to as hyperbolic octonions; eight-dimensional)
1. `grassmann3`: three-dimensional Grassmann numbers (different from tri-nilplex numbers; can also be referred to as parabolic octonions; eight-dimensional)
1. `superhamilton`: super-Hamilton quaternions (different from the dual-Hamilton quaternions; eight-dimensional)
1. `supercockle`: super-Cockle quaternions (different from the dual-Cockle quaternions; eight-dimensional)
1. `ultracplex`: ultra-complex numbers (different from the hyper-complex numbers; eight-dimensional)
1. `ultrapplex`: ultra-perplex numbers (different from the hyper-perplex numbers; eight-dimensional)
1. `tricplex`: tri-complex numbers (complexification of the bi-complex numbers; eight-dimensional)
1. `trinplex`: tri-nilplex numbers (nilplexification of the bi-nilplex numbers; eight-dimensional)
1. `tripplex`: tri-perplex numbers (perplexification of the di-perplex numbers; eight-dimensional)
1. `hypercplex`: hyper-complex numbers (nilplexification of dual-complex numbers; eight-dimensional)
1. `hyperpplex`: hyper-perplex numbers (nilplexification of dual-perplex numbers; eight-dimensional)
1. `dualhamilton`: dual-Hamilton quaternions (nilplexification of Hamilton quaternions; eight-dimensional)
1. `dualcockle`: dual-Cockle quaternions (nilplexification of Cockle quaternions; eight-dimensional)
1. `comhamilton`: complex-Hamilton quaternions (complexification of Hamilton quaternions; eight-dimensional)
1. `perhamilton`: perplex-Hamilton quaternions (perplexification of Hamilton quaternions; eight-dimensional)
1. `percockle`: perplex-Cockle quaternions (perplexification of Cockle quaternions; eight-dimensional)
1. `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](https://en.wikipedia.org/wiki/Laurent_polynomial)
To-Do:
1. `SetReal` and `SetUnreal` methods
1. `Plus` and `Minus` methods
1. `Maclaurin` methods
1. `Padé` methods
1. `Inf` and `NaN` methods
1. `IsInf` and `IsNaN` methods
1. `Dot` and `Cross` methods