     
      java.lang.Object 
      (toString [m]
-       (str "(" (str (.real m)) ", " (str (.imag m)) ")]"))
+       (str "#complex/complex-array [" (clojure.core.matrix.complex/real m) ", " (clojure.core.matrix.complex/imag m) "]"))
   
      clojure.lang.Seqable
      (seq [m]

	    (m/array? m) (m/emap imag m)
      :else (error "Unable to get imaginary part of object: " m " with type " (class m)))))

;; a canoncial object used to register the complex array implementation
(def canonical-complex-array
  (let [a (complex-array 0 1)] 

    a))

(imp/register-implementation (complex-array 0 1))
(imp/register-implementation (c/complex-number 2 3))

