Thanks for starting this package. I've been getting used to it before adding my stuff.
Here are a few things I've noticed in the implementation so far that I think need to be justified or addressed:
- Is
NotANumber really necessary? Why not just raise an exception?
- I don't think we should have constructors
RealInfinity(signbit::Bool) and ComplexInfinity(angle::Real): the convention in Julia Base is that for a numeric type T that T(x::Number) is the same as convert(T, x). There should be constructors private to the module called realinffromsignbit or something.
- Why is there checked arithmetic when this is for integers, and infinity is not an integer?
- Why is
fld(x, Infinity()) == -1 when x<0? I am guessing that you are defining fld(x, Infinity()) as the limit as y gets big of fld(x, y), but an equally good definition is simply that it is floor(x / Infinity()) == 0. The latter definition is the one in the Julia documentation, and arguably the one people would expect.
- Given
ComplexInfinity is not ordered, why are mod, div, fld, isless, <, min, etc. defined? They aren't defined for Complex.
Thanks for starting this package. I've been getting used to it before adding my stuff.
Here are a few things I've noticed in the implementation so far that I think need to be justified or addressed:
NotANumberreally necessary? Why not just raise an exception?RealInfinity(signbit::Bool)andComplexInfinity(angle::Real): the convention in Julia Base is that for a numeric typeTthatT(x::Number)is the same asconvert(T, x). There should be constructors private to the module calledrealinffromsignbitor something.fld(x, Infinity()) == -1whenx<0? I am guessing that you are definingfld(x, Infinity())as the limit asygets big offld(x, y), but an equally good definition is simply that it isfloor(x / Infinity()) == 0. The latter definition is the one in the Julia documentation, and arguably the one people would expect.ComplexInfinityis not ordered, why aremod,div,fld,isless,<,min, etc. defined? They aren't defined forComplex.