     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)

    self = unsafeBitCast(_representation, Float.self)
  }
  public init<T: BinaryFloatingPointType>(_ other: T) {
    switch other {
    case let f as Float:
      self = f

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