oops, don't set the precision to -1 !!
diff --git a/Eigen/src/Core/IO.h b/Eigen/src/Core/IO.h
index 7cd2b68..53e0241 100644
--- a/Eigen/src/Core/IO.h
+++ b/Eigen/src/Core/IO.h
@@ -139,7 +139,8 @@
         width = std::max<int>(width, int(sstr.str().length()));
       }
   }
-  std::streamsize old_precision = s.precision(fmt.precision);
+  std::streamsize old_precision;
+  if(fmt.precision != -1) old_precision = s.precision(fmt.precision);
   s << fmt.matPrefix;
   for(int i = 0; i < m.rows(); ++i)
   {
@@ -159,7 +160,7 @@
       s << fmt.rowSeparator;
   }
   s << fmt.matSuffix;
-  s.precision(old_precision);
+  if(fmt.precision != -1) s.precision(old_precision);
   return s;
 }