     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) }

  //  Conversions from all floating-point types.
  init(_ value: Float)
  init(_ value: Double)
  init(_ value: Float80)
  
  //  TODO: where do conversions to/from string live?  IEEE-754 requires
  //  conversions to/from decimal character and hexadecimal character

    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) }
