Index: coeffs/gnumpc.cc
===================================================================
--- coeffs/gnumpc.cc	(revision 3b1a8d2d42c74cbc3f3f8b25288fd7d79934d0d4)
+++ coeffs/gnumpc.cc	(revision ac568634b7a2d8b8d88e28ffdb7d39c09ac42783)
@@ -46,5 +46,5 @@
   if ( from != NULL )
   {
-    gmp_complex *res=new gmp_complex(numberFieldToFloat(from,QTOF));
+    gmp_complex *res=new gmp_complex(numberFieldToFloat(from,QTOF,aRing));
     return (number)res;
   }
@@ -463,5 +463,5 @@
   {
     char *out;
-    out= complexToStr(*(gmp_complex*)a, gmp_output_digits);
+    out= complexToStr(*(gmp_complex*)a, gmp_output_digits, r);
     StringAppendS(out);
     //    omFreeSize((void *)out, (strlen(out)+1)* sizeof(char) );
Index: coeffs/mpr_complex.cc
===================================================================
--- coeffs/mpr_complex.cc	(revision 3b1a8d2d42c74cbc3f3f8b25288fd7d79934d0d4)
+++ coeffs/mpr_complex.cc	(revision ac568634b7a2d8b8d88e28ffdb7d39c09ac42783)
@@ -373,9 +373,9 @@
 // makes a COPY of num! (Ist das gut?)
 //
-gmp_float numberToFloat( number num )
+gmp_float numberToFloat( number num, const coeffs src)
 {
   gmp_float r;
 
-  if ( rField_is_Q() )
+  if ( nField_is_Q(src) )
   {
     if ( num != NULL )
@@ -389,5 +389,5 @@
         if ( num->s == 0 )
         {
-          nlNormalize( num );
+          nlNormalize( num, src );
         }
         if (SR_HDL(num) & SR_INT)
@@ -414,9 +414,9 @@
     }
   }
-  else if (rField_is_long_R() || rField_is_long_C())
+  else if (nField_is_long_R(src) || nField_is_long_C(src))
   {
     r= *(gmp_float*)num;
   }
-  else if ( rField_is_R() )
+  else if ( nField_is_R(src) )
   {
     // Add some code here :-)
@@ -431,5 +431,5 @@
 }
 
-gmp_float numberFieldToFloat( number num, int k )
+gmp_float numberFieldToFloat( number num, int k, const coeffs src)
 {
   gmp_float r;
@@ -448,5 +448,5 @@
         if ( num->s == 0 )
         {
-          nlNormalize( num );
+          nlNormalize( num, src );
         }
         if (SR_HDL(num) & SR_INT)
@@ -702,5 +702,5 @@
 // converts a gmp_complex to a string ( <real part> + I * <imaginary part> )
 //
-char *complexToStr( gmp_complex & c, const unsigned int oprec )
+char *complexToStr( gmp_complex & c, const unsigned int oprec, const coeffs src )
 {
   char *out,*in_imag,*in_real;
@@ -713,19 +713,19 @@
     in_imag=floatToStr( abs(c.imag()), oprec );    // get imaginary part
 
-    if (rField_is_long_C())
-    {
-      int len=(strlen(in_real)+strlen(in_imag)+7+strlen(currRing->parameter[0]))*sizeof(char);
+    if (nField_is_long_C(src))
+    {
+      int len=(strlen(in_real)+strlen(in_imag)+7+strlen(src->parameter[0]))*sizeof(char);
       out=(char*)omAlloc(len);
       memset(out,0,len);
       if (  !c.real().isZero() )  // (-23-i*5.43) or (15.1+i*5.3)
-        sprintf(out,"(%s%s%s*%s)",in_real,c.imag().sign()>=0?"+":"-",currRing->parameter[0],in_imag);
+        sprintf(out,"(%s%s%s*%s)",in_real,c.imag().sign()>=0?"+":"-",src->parameter[0],in_imag);
       else // (-i*43) or (i*34)
       {
         if (c.imag().isOne())
-          sprintf(out,"%s",currRing->parameter[0]);
+          sprintf(out,"%s",src->parameter[0]);
         else if (c.imag().isMOne())
-          sprintf(out,"-%s",currRing->parameter[0]);
+          sprintf(out,"-%s",src->parameter[0]);
         else
-          sprintf(out,"(%s%s*%s)",c.imag().sign()>=0?"":"-",currRing->parameter[0],in_imag);
+          sprintf(out,"(%s%s*%s)",c.imag().sign()>=0?"":"-",src->parameter[0],in_imag);
       }
     }
Index: coeffs/mpr_complex.h
===================================================================
--- coeffs/mpr_complex.h	(revision 3b1a8d2d42c74cbc3f3f8b25288fd7d79934d0d4)
+++ coeffs/mpr_complex.h	(revision ac568634b7a2d8b8d88e28ffdb7d39c09ac42783)
@@ -159,6 +159,6 @@
 gmp_float max( const gmp_float &, const gmp_float & );
 
-gmp_float numberToFloat( number num );
-gmp_float numberFieldToFloat( number num, int k );
+gmp_float numberToFloat( number num, const coeffs src );
+gmp_float numberFieldToFloat( number num, int k, const coeffs src );
 //char *floatToStr( const gmp_float & r, const unsigned int oprec );
 //<-
@@ -308,9 +308,9 @@
   else
   {
-    return gmp_complex( numberToFloat(num) );
-  }
-}
-
-char *complexToStr( gmp_complex & c, const  unsigned int oprec );
+    return gmp_complex( numberToFloat(num, r) );
+  }
+}
+
+char *complexToStr( gmp_complex & c, const  unsigned int oprec, const coeffs src );
 //<-
 
