jar1
1
typemin(T)
says
The lowest value representable by the given (real) numeric DataType T.
Suppose we want to be more generic than a “(real) numeric” datatype. What should it say then?
How about
The minimum value representable by the given DataType
having a unique minimum value.
one might think from the docstring that
typemin(::T)
returns value v
such that
min(v, w) == v
for all w
where typeof(w) <: T
however unfortunately this isn’t always true…
Could we use isless
? Is this accurate?
The lowest value representable by the DataType T
as ordered by [`isless`](@ref)
; this value isless
than all other values of type T
.
1 Like
it would have to be isless || isequal
What’s an example of a datatype with multiple equal typemin
values?
Conversely, defining typemax
as
The highest value representable by the DataType T
as ordered by [
isless](@ref)
; this value isless
than no other values of type T
.
seems obvious but breaks in the presence of NaN.
julia> isless(typemax(Float64), NaN)
true
1 Like
good point, nvm 
was trying to construct something with subnormals but they don’t work like I thought
but still, it’s not true for DateTime
as noticed by @Sukera `typemin`/`typemax` of `DateTime` is not actually the smallest/largest representable `DateTime` · Issue #50931 · JuliaLang/julia · GitHub
1 Like
I believe the proper predicate is typemax(T) means that !exists x such that isless(typemax(T), x)
1 Like
jar1
9
julia> isless(typemax(Float64), NaN)
true
Can we say “… in the well ordered subset of values of T
” or something like that?
Yes (I think that’s equivalent to what I wrote above, but it’s late). x = NaN
exists anyways.