(*** Complex numbers ***)

load"Math" ;  (*** NEEDED IN mosml ***)

abstype complex = C of real * real 
  with

    fun ComplexRep( x , y ) = C(x,y) ;

    val origin = C( 0.0 , 0.0 ) ;

    fun X( C(x,y) ) = x ;

    fun Y( C(x,y) ) = y ;

    fun norm v = Math.sqrt( X(v)*X(v) + Y(v)*Y(v) ) ;

    fun scalevec( r, v ) = C( r*X(v) , r*Y(v) ) ;

    fun normal v = scalevec( 1.0/(norm v) , v ) ;

    fun CartRep v = ( X v , Y v ) ;
  end ;

