@@ -116,6 +116,47 @@ FloatingPoint.test("BinaryFloatingPoint/genericIntegerConversion") {
116
116
}
117
117
118
118
FloatingPoint.test("BinaryFloatingPoint/genericFloatingPointConversion") {
119
+ func convert<
120
+ T: BinaryFloatingPoint, U: BinaryFloatingPoint
121
+ >(exactly value: T, to: U.Type) -> U { U(exactly: value) }
122
+
123
+ expectEqual(convert(exactly: 0 as Float, to: Double.self), 0.0)
124
+ expectEqual(convert(exactly: -0.0 as Float, to: Double.self), -0.0)
125
+ expectEqual(
126
+ convert(exactly: -0.0 as Float, to: Double.self).sign,
127
+ FloatingPointSign.minus)
128
+ expectEqual(convert(exactly: 0 as Double, to: Float.self), 0.0 as Float)
129
+ expectEqual(convert(exactly: -0.0 as Double, to: Float.self), -0.0 as Float)
130
+ expectEqual(
131
+ convert(exactly: -0.0 as Double, to: Float.self).sign,
132
+ FloatingPointSign.minus)
133
+ expectEqual(convert(exactly: 1 as Float, to: Double.self), 1.0)
134
+ expectEqual(convert(exactly: -1 as Float, to: Double.self), -1.0)
135
+ expectEqual(convert(exactly: 1 as Double, to: Float.self), 1.0 as Float)
136
+ expectEqual(convert(exactly: -1 as Double, to: Float.self), -1.0 as Float)
137
+ expectEqual(
138
+ convert(exactly: Float.infinity, to: Double.self), Double.infinity)
139
+ expectEqual(
140
+ convert(exactly: -Float.infinity, to: Double.self), -Double.infinity)
141
+ expectEqual(
142
+ convert(exactly: Double.infinity, to: Float.self), Float.infinity)
143
+ expectEqual(
144
+ convert(exactly: -Double.infinity, to: Float.self), -Float.infinity)
145
+ expectEqual(convert(exactly: Float.nan, to: Double.self), nil)
146
+ expectEqual(convert(exactly: Double.nan, to: Float.self), nil)
147
+ expectEqual(convert(exactly: Float.nan, to: Float.self), nil)
148
+ expectEqual(convert(exactly: Double.nan, to: Double.self), nil)
149
+ expectEqual(
150
+ convert(exactly: Double.leastNonzeroMagnitude, to: Float.self), nil)
151
+ expectEqual(
152
+ convert(exactly: Float.leastNonzeroMagnitude, to: Double.self),
153
+ Double(Float.leastNonzeroMagnitude))
154
+ expectEqual(
155
+ convert(exactly: Double.greatestFiniteMagnitude, to: Float.self), nil)
156
+ expectEqual(
157
+ convert(exactly: Float.greatestFiniteMagnitude, to: Double.self),
158
+ Double(Float.greatestFiniteMagnitude))
159
+
119
160
expectTrue(Double._convert(from: 0 as Float) == (value: 0, exact: true))
120
161
expectTrue(Double._convert(from: -0.0 as Float) == (value: -0.0, exact: true))
121
162
expectTrue(Double._convert(from: 1 as Float) == (value: 1, exact: true))
0 commit comments