A bit inconvenient, but will this simple wrapper work for you?
extension UnsafeAtomic where Value == UInt64 {
public var double: Double {
get { Double(bitPattern: load(ordering: .relaxed)) }
set { store(newValue.bitPattern, ordering: .releasing) }
}
}
var val = UnsafeAtomic<UInt64>.create(0)
val.double = 3.14
let x: Double = val.double