diff --git a/dune/solvers/iterationsteps/projectedlinegsstep.cc b/dune/solvers/iterationsteps/projectedlinegsstep.cc
index 4b66a694b4ae71f4791841912932481992cb7996..d2c8dc70ed8c82789b0b9f8f2132f7c20145e78a 100755
--- a/dune/solvers/iterationsteps/projectedlinegsstep.cc
+++ b/dune/solvers/iterationsteps/projectedlinegsstep.cc
@@ -1,5 +1,7 @@
 #include <dune/istl/scaledidmatrix.hh>
 
+#include <cmath>
+
 #include <dune/solvers/iterationsteps/projectedblockgsstep.hh>
 #include <dune/solvers/norms/energynorm.hh>
 
diff --git a/dune/solvers/iterationsteps/truncatedblockgsstep.hh b/dune/solvers/iterationsteps/truncatedblockgsstep.hh
index 67b9accffd9c134d8906cb0b9869c601d146789f..dae872c265cb6104e7f0c10e50a0dcb9fdf4df32 100644
--- a/dune/solvers/iterationsteps/truncatedblockgsstep.hh
+++ b/dune/solvers/iterationsteps/truncatedblockgsstep.hh
@@ -1,6 +1,8 @@
 #ifndef TRUNCATED_BLOCK_GAUSS_SEIDEL_STEP_HH
 #define TRUNCATED_BLOCK_GAUSS_SEIDEL_STEP_HH
 
+#include <cmath>
+
 #include <dune/common/bitsetvector.hh>
 
 #include <dune/solvers/iterationsteps/lineariterationstep.hh>
@@ -217,7 +219,7 @@ public:
                 for(typename MBlock::size_type i=0; i<Aii.N(); ++i)
                 {
                     const typename MBlock::field_type& aii = Aii[i][i];
-                    if (fabs(aii)>1e-13)
+                    if (std::abs(aii)>1e-13)
                     {
                         if (not(ignore[row][i]))
                         {
@@ -262,7 +264,7 @@ public:
             for(typename MBlock::size_type i=0; i<A.N(); ++i)
             {
                 const typename MBlock::field_type& aii = A[i][i];
-                if (fabs(aii)>1e-13)
+                if (std::abs(aii)>1e-13)
                 {
                     if (not(ignore[i]))
                     {
diff --git a/dune/solvers/norms/diagnorm.hh b/dune/solvers/norms/diagnorm.hh
index 4a047a889fa26dd9ec2043d10043d02b3b4c7e97..b3c941118e09b2d79f0c29c9937e53582f404852 100644
--- a/dune/solvers/norms/diagnorm.hh
+++ b/dune/solvers/norms/diagnorm.hh
@@ -3,6 +3,8 @@
 #ifndef DIAGNORM_HH
 #define DIAGNORM_HH
 
+#include <cmath>
+
 #include <dune/common/fvector.hh>
 #include <dune/istl/bvector.hh>
 
@@ -37,7 +39,7 @@ class DiagNorm:
                 r += Dv*v[row];
             }
 
-            return sqrt(fabs(alpha * r));
+            return std::sqrt(std::abs(alpha * r));
         }
 
         //! Compute the norm of the difference of two vectors
@@ -52,7 +54,7 @@ class DiagNorm:
                 r += Dv*(v1[row]-v2[row]);
             }
 
-            return sqrt(fabs(alpha * r));
+            return std::sqrt(std::abs(alpha * r));
         }
 
     private:
@@ -83,7 +85,7 @@ class DiagNorm<Dune::BlockVector<Dune::FieldVector <double,1> >, Dune::BlockVect
             for(SizeType row = 0; row < v.size(); ++row)
                 r += d[row] * v[row] * v[row];
 
-            return sqrt(fabs(alpha * r));
+            return std::sqrt(std::abs(alpha * r));
         }
 
         //! Compute the norm of the difference of two vectors
@@ -94,7 +96,7 @@ class DiagNorm<Dune::BlockVector<Dune::FieldVector <double,1> >, Dune::BlockVect
             for (SizeType row = 0; row < v1.size(); ++row)
                 r += (double)d[row] * (v1[row]-v2[row]) * (v1[row] - v2[row]);
 
-            return sqrt(fabs(alpha * r));
+            return std::sqrt(std::abs(alpha * r));
         }
 
     private:
diff --git a/dune/solvers/norms/energynorm.hh b/dune/solvers/norms/energynorm.hh
index e6f3f00f4dc769c1d47b5d6ed3821d2f66386d96..686e60d4dda7407622687641d34bf12044719ab5 100644
--- a/dune/solvers/norms/energynorm.hh
+++ b/dune/solvers/norms/energynorm.hh
@@ -1,6 +1,8 @@
 #ifndef ENERGY_NORM_HH
 #define ENERGY_NORM_HH
 
+#include <cmath>
+
 #include "norm.hh"
 #include <dune/solvers/iterationsteps/lineariterationstep.hh>
 
@@ -59,7 +61,7 @@
         //! Compute the norm of the given vector
         double operator()(const DiscFuncType& f) const 
         {
-            return sqrt(this->EnergyNorm<OperatorType,DiscFuncType>::normSquared(f));
+            return std::sqrt(this->EnergyNorm<OperatorType,DiscFuncType>::normSquared(f));
         }
 
         /** \brief Compute the square of the norm of the given vector
diff --git a/dune/solvers/norms/fullnorm.hh b/dune/solvers/norms/fullnorm.hh
index 0191cb0241ebbec9fd09beed7fbbbe6338e8619a..51d5dd1c9d0945312b0d771077b508ec209a458f 100644
--- a/dune/solvers/norms/fullnorm.hh
+++ b/dune/solvers/norms/fullnorm.hh
@@ -3,6 +3,8 @@
 #ifndef FULLNORM_HH
 #define FULLNORM_HH
 
+#include <cmath>
+
 #include <dune/common/fvector.hh>
 #include <dune/istl/bvector.hh>
 
@@ -33,7 +35,7 @@ class FullNorm: public Norm<VectorType>
 
             lowRankFactor_.umv(v,r);
 
-            return sqrt(fabs(alpha*(r*r)));
+            return std::sqrt(std::abs(alpha*(r*r)));
         }
 
     //! Compute the norm of the difference of two vectors
@@ -46,7 +48,7 @@ class FullNorm: public Norm<VectorType>
                 for (typename LowRankFactor::size_type i=0; i<lowRankFactor_.M(); ++i)
                     lowRankFactor_[k][i].umv(v1[i]-v2[i],r[k]);
 
-            return sqrt(fabs(alpha*(r*r)));
+            return std::sqrt(std::abs(alpha*(r*r)));
         }
 
     private:
@@ -77,7 +79,7 @@ class FullNorm<Dune::BlockVector<Dune::FieldVector<double,1> >, Dune::BlockVecto
             for (SizeType row = 0; row < v.size(); ++row)
                 r += m[row] * v[row];
 
-            return sqrt(fabs(alpha*r*r));
+            return std::sqrt(std::abs(alpha*r*r));
         }
 
         //! Compute the norm of the difference of two vectors
@@ -88,7 +90,7 @@ class FullNorm<Dune::BlockVector<Dune::FieldVector<double,1> >, Dune::BlockVecto
             for (SizeType row = 0; row < v1.size(); ++row)
                 r += (double)m[row] * (v1[row] - v2[row]);
 
-            return sqrt(fabs(alpha*r*r));
+            return std::sqrt(std::abs(alpha*r*r));
         }
 
     private:
diff --git a/dune/solvers/norms/h1seminorm.hh b/dune/solvers/norms/h1seminorm.hh
index 33bd77b18aaedefc51c543bb11c4153d7853ba0c..e7a4e9fb6b4313a9adc88f8deb1c7bd122dd637f 100644
--- a/dune/solvers/norms/h1seminorm.hh
+++ b/dune/solvers/norms/h1seminorm.hh
@@ -1,6 +1,8 @@
 #ifndef DUNE_H1_SEMINORM_HH
 #define DUNE_H1_SEMINORM_HH
 
+#include <cmath>
+
 #include <dune/common/fmatrix.hh>
 #include <dune/istl/bcrsmatrix.hh>
 
diff --git a/dune/solvers/norms/pnorm.hh b/dune/solvers/norms/pnorm.hh
index c12584a49f7078e539715892492e7fcd8a26bc09..ca0443382fbb327d0831746c665bb1b33ee4cbcb 100644
--- a/dune/solvers/norms/pnorm.hh
+++ b/dune/solvers/norms/pnorm.hh
@@ -1,6 +1,8 @@
 #ifndef __PNORM__HH__
 #define __PNORM__HH__
 
+#include <cmath>
+
 #include <dune/common/fvector.hh>
 #include <dune/istl/bvector.hh>
 
@@ -24,7 +26,7 @@ class PNorm: public Norm<Vector>
 			{
 				for(int row = 0; row < v.size(); ++row)
 				{
-					double z = fabs(v[row]);
+					double z = std::abs(v[row]);
 					if (r<z)
 						r = z;
 				}
@@ -32,18 +34,18 @@ class PNorm: public Norm<Vector>
 			else if (p==1)
 			{
 				for(int row = 0; row < v.size(); ++row)
-					r += fabs(v[row]);
+					r += std::abs(v[row]);
 			}
 			else if (p==2)
 			{
 				for(int row = 0; row < v.size(); ++row)
 					r += v[row] * v[row];
-				r = sqrt(r);
+				r = std::sqrt(r);
 			}
 			else
 			{
 				for(int row = 0; row < v.size(); ++row)
-					r += pow(fabs(v[row]), p);
+					r += pow(std::abs(v[row]), p);
 				r = pow(r, 1.0/p);
 			}
 			
@@ -58,7 +60,7 @@ class PNorm: public Norm<Vector>
 			{
 				for(int row = 0; row < v1.size(); ++row)
 				{
-					double z = fabs(v1[row]-v2[row]);
+					double z = std::abs(v1[row]-v2[row]);
 					if (z>r)
 						r = z;
 				}
@@ -66,18 +68,18 @@ class PNorm: public Norm<Vector>
 			else if (p==1)
 			{
 				for(int row = 0; row < v1.size(); ++row)
-					r += fabs(v1[row]-v2[row]);
+					r += std::abs(v1[row]-v2[row]);
 			}
 			else if (p==2)
 			{
 				for(int row = 0; row < v1.size(); ++row)
 					r += (v1[row]-v2[row]) * (v1[row]-v2[row]);
-				r = sqrt(r);
+				r = std::sqrt(r);
 			}
 			else
 			{
 				for(int row = 0; row < v1.size(); ++row)
-					r += pow(fabs(v1[row]-v2[row]), p);
+					r += pow(std::abs(v1[row]-v2[row]), p);
 				r = pow(r, 1.0/p);
 			}
 			
diff --git a/dune/solvers/norms/twonorm.hh b/dune/solvers/norms/twonorm.hh
index feee1112ef32be1629840ff7b9e47aa446bce80a..eefd77951b1f1af4a2f17071c4521443bf6db570 100644
--- a/dune/solvers/norms/twonorm.hh
+++ b/dune/solvers/norms/twonorm.hh
@@ -1,7 +1,7 @@
 #ifndef TWONORM_HH
 #define TWONORM_HH
 
-#include <cmath>   // For std::sqrt
+#include <cmath>
 #include <cstring> // For size_t
 
 #include "norm.hh"
diff --git a/dune/solvers/solvers/tcgsolver.hh b/dune/solvers/solvers/tcgsolver.hh
index 07d2779cae8c37c42e6ddacdb16affcf3544aa1f..dbd8698cbe500b4e2c797b1dd527dab24dc427d6 100644
--- a/dune/solvers/solvers/tcgsolver.hh
+++ b/dune/solvers/solvers/tcgsolver.hh
@@ -1,6 +1,8 @@
 #ifndef TRUNCATED_CG_SOLVER_HH
 #define TRUNCATED_CG_SOLVER_HH
 
+#include <cmath>
+
 #include <dune/solvers/solvers/iterativesolver.hh>
 #include <dune/solvers/iterationsteps/lineariterationstep.hh>
 #include <dune/solvers/norms/norm.hh>
diff --git a/dune/solvers/test/multigridtest.cc b/dune/solvers/test/multigridtest.cc
index 8f120d1a98c292b0a89d7c672b5fb0a39c764883..cfcde56b880d91eeca470579b9a0cb9e383bf80e 100644
--- a/dune/solvers/test/multigridtest.cc
+++ b/dune/solvers/test/multigridtest.cc
@@ -1,5 +1,6 @@
 #include <config.h>
 
+#include <cmath>
 #include <iostream>
 #include <sstream>
 
@@ -64,7 +65,7 @@ struct MultigridTestSuite
             for (size_t j=0; j<blocksize; ++j)
             {
                 u_ex[i][j] = (1.0*rand())/RAND_MAX;
-//                A[i][i][j][j] += 0.5*fabs(A[0][0][0][0]); // in case of no dirichlet values you can make the matrix pd hereby
+//                A[i][i][j][j] += 0.5*std::abs(A[0][0][0][0]); // in case of no dirichlet values you can make the matrix pd hereby
             }
 
         Vector rhs(A.N());