Yes -- it rocks. Promotion+conversion needs to know detailed stuff about the destination type (unsurprisingly). I'm hoping for a [partial] meta- or supra- way that would simplify work for me and for other people who may want this as another way to use their own packaged number stuff. Is there an avenue that [partially] obviates the need to deeply code each package's preparation?
On Tuesday, December 1, 2015 at 12:01:27 PM UTC-5, Tom Breloff wrote: > > Have you tried Julia's promotion mechanism? This has worked well for me > in the past, although there may be a slight performance penalty... I can't > comment on that. > > > http://docs.julialang.org/en/release-0.4/manual/conversion-and-promotion/#promotion > > On Tue, Dec 1, 2015 at 11:54 AM, Jeffrey Sarnoff <[email protected] > <javascript:>> wrote: > >> I am working on a module that uses bounded intervals. It would be great >> if the result were easy to use with other's packaged floating-point based >> or Real derived types. >> They work like stretchy Float64s, and support arith, exp, log, >> [a]trig[h], and cdf+pdf+quantile for univariate continuous distributions. >> >> >> Is there any type hierarchy modification with some generalized code that >> would make "conversion to __ not found" happen less when using >> this as if it were Float64 with others' floating point based types that >> are not dependant on sizeof()? >> >> ```julia >> >> abstract EnhancedFloat <: Real abstract AnyFlexFloat <: EnhancedFloat # >> FlexFloat >> is a (lo,hi) bounded interval # either or both bounds may be Closed(Cl) >> or Open(Op) # e.g. ClOp(lo,hi) is a ClOpen interval. >> abstract OpOp <: AnyFlexFloat abstract ClOp <: AnyFlexFloat abstract OpCl >> <: AnyFlexFloat abstract ClCl <: AnyFlexFloat typealias WorkFlex >> AnyFlexFloat; # was Union{ClCl,ClOp,OpCl,OpOp} typealias WorkFloat >> Union{Float64,Float32}; immutable FlexFloat{T<:WorkFlex, F<:WorkFloat} # <: >> Real does not seem to help much lo::F hi::F end ``` >> > >
