Mostly about math (that I do not know to well, this advanced, above complex numbers), just seems relevant to generic programming..:
In e.g.: https://en.wikipedia.org/wiki/Complex_number in the template at the bottom: Real numbers and extensions: Real numbers (ℝ) Complex numbers (ℂ) Quaternions (ℍ) Octonions (𝕆) Sedenions (𝕊) Cayley–Dickson construction Dual numbers Split-complex numbers Bicomplex numbers Hypercomplex numbers Superreal numbers Irrational numbers Transcendental numbers Hyperreal numbers Levi-Civita field Surreal numbers http://math.stackexchange.com/questions/86434/what-lies-beyond-the-sedenions I see that dual numbers are supported already with a library, and know what Julia does support. Since Julia IS a scientific language, I checked: julia> 1+0im < 2+0im ERROR: `isless` has no method matching isless(::Complex{Int64}, ::Complex{Int64}) in < at operators.jl:32 that is the right thing. I wander what MATLAB does, since all numbers(?) are stored as complex. 0im special cased? real numbers have properties that floating point already doesn't support, so loosing those properties with higher order numbers seems not to be an issue, but is it for the even higher order numbers and those properties? I assume not, as there are no operators/functions and even if there where operators (really just functions), then they would just stop working. In a language where everything is typed (not generic), this might not be a problem, but leads to run-time "ERROR"s/exceptions. Should you use ::Real at every point to not get those with Complex? What about other possible numbers? Thanks in advance, -- Palli.