On Tue, Jan 9, 2018 at 10:07 PM, Jonathan Hull via swift-evolution <
swift-evolution@swift.org> wrote:

>
> One additional question.  How do you ergonomically get a Double which
> doesn’t have a range, but also isn’t NaN?
>
>
Assuming you are ok with signed zero and infinities and "strange" bias as
result of IEEE 754:

func randomNonNanDouble<R: RandomNumberGenerator>(using generator: R) ->
Double {
    while true {
        let rndUInt64 = generator.next()
        let rndDouble = Double(bitPattern: rndUInt64)
        if rndDouble != Double.nan { return rndDouble }
    }
}

/Jens
_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to