         return Self(lhs.real / rhs, lhs.imag / rhs)
     }
     public static func /(_ lhs:Self, _ rhs:Self)->Self {
-        return lhs * rhs.conj / rhs.norm
+        return rhs.imag.isZero ? lhs / rhs.real : lhs * rhs.conj / rhs.norm
     }
     public static func /(_ lhs:Element, _ rhs:Self)->Self {
         return Self(lhs, 0) / rhs

    public static func /=(_ lhs:inout Self, _ rhs:Element) {
        lhs = lhs / rhs
    }
}

extension ComplexFloat {
    /// square root of z in Complex
    public static func sqrt(_ z:Self) -> Self {

}

extension ComplexFloat {
    /// construct by polar coodinates
    public init(abs:Element, arg:Element) {
        self.init(abs * Element.cos(arg), abs * Element.sin(arg))
    }
