     default:
       fatalError()
     }
+#else
+    switch other {
+    case let f as Float:
+      self = f
+    case let d as Double:
+      self = Float(d)
+    default:
+      fatalError()
+    }
+#endif
   }
   public func roundToIntegralTiesToAway() -> Float { return roundf(self) }
   public func roundToIntegralTowardZero() -> Float { return truncf(self) }

    default:
      fatalError()
    }
  }
  public func roundToIntegralTiesToAway() -> Double { return round(self) }
  public func roundToIntegralTowardZero() -> Double { return trunc(self) }

    self = unsafeBitCast(_representation, Double.self)
  }
  public init<T: BinaryFloatingPointType>(_ other: T) {
    // rdar://16980851 #if does not work with 'switch' cases
#if arch(i386) || arch(x86_64)
    switch other {
    case let f as Float:
      self = Double(f)
