You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
The text was updated successfully, but these errors were encountered:
Is NotANumber really necessary? Why not just raise an exception?
For consistency with Inf. Functions do not expect 0/Inf to throw an exception so if 0/∞ did it would break code.
don't think we should have constructors RealInfinity(signbit::Bool)...
Agreed.
Why is there checked arithmetic when this is for integers, and infinity is not an integer?
You are right, this should be for InfiniteCardinal{0} (the code was copied from InfiniteArrays.jl where Infinity <: Integer)
I am guessing that you are defining fld(x, Infinity()) as the limit…
Yes. This was probably also meant for InfiniteCardinal{0} where probably the behaviour is required for some part of the array code. Once I get InfiniteArrays.jl depending on this package we can try changing things to see if it breaks it.
Given ComplexInfinity is not ordered...
Note its only defined for ComplexInfinity{Bool} which we know is real, but I agree its confusing. This was copied over from OrientedInfinity{Bool} which was less controversial, but I believe predates the creation of RealInfinity, so in the past -∞ was OrientedInfinity(true). So this code can likely be deleted. It might impact ApproxFun.jl so again lets keep it for now and can try removing it once the dependencies are added.
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:
NotANumber
really necessary? Why not just raise an exception?RealInfinity(signbit::Bool)
andComplexInfinity(angle::Real)
: the convention in Julia Base is that for a numeric typeT
thatT(x::Number)
is the same asconvert(T, x)
. There should be constructors private to the module calledrealinffromsignbit
or something.fld(x, Infinity()) == -1
whenx<0
? I am guessing that you are definingfld(x, Infinity())
as the limit asy
gets 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.ComplexInfinity
is not ordered, why aremod
,div
,fld
,isless
,<
,min
, etc. defined? They aren't defined forComplex
.The text was updated successfully, but these errors were encountered: