From cd0fbdc0eda0ca9d83cbab1d780db18d73660df4 Mon Sep 17 00:00:00 2001 From: Oliver Sander <sander@igpm.rwth-aachen.de> Date: Tue, 3 Sep 2013 16:29:11 +0000 Subject: [PATCH] Use std::abs instead of std::fabs Because ADOL-C cannot handle the latter [[Imported from SVN: r9386]] --- dune/gfe/rotation.hh | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/dune/gfe/rotation.hh b/dune/gfe/rotation.hh index c84bc60a..5d8cd68a 100644 --- a/dune/gfe/rotation.hh +++ b/dune/gfe/rotation.hh @@ -93,7 +93,7 @@ public: const Rotation<T,2>& b) { // This assertion is here to remind me of the following laziness: // The difference has to be computed modulo 2\pi - assert( std::fabs(a.angle_ - b.angle_) <= M_PI ); + assert( std::abs(a.angle_ - b.angle_) <= M_PI ); return -2 * (a.angle_ - b.angle_); } @@ -253,14 +253,14 @@ public: */ static Rotation<T,3> exp(const Rotation<T,3>& p, const EmbeddedTangentVector& v) { - assert( std::fabs(p*v) < 1e-8 ); + assert( std::abs(p*v) < 1e-8 ); // The vector v as a quaternion Quaternion<T> vQuat(v); // left multiplication by the inverse base point yields a tangent vector at the identity Quaternion<T> vAtIdentity = p.inverse().mult(vQuat); - assert( std::fabs(vAtIdentity[3]) < 1e-8 ); + assert( std::abs(vAtIdentity[3]) < 1e-8 ); // vAtIdentity as a skew matrix SkewMatrix<T,3> vMatrix; @@ -324,7 +324,7 @@ public: // left multiplication by the inverse base point yields a tangent vector at the identity Quaternion<T> vAtIdentity = p.inverse().mult(q); - assert( std::fabs(vAtIdentity[3]) < 1e-8 ); + assert( std::abs(vAtIdentity[3]) < 1e-8 ); SkewMatrix<T,3> skew; skew.axial()[0] = 2*vAtIdentity[0]; @@ -336,14 +336,14 @@ public: static Rotation<T,3> exp(const Rotation<T,3>& p, const Dune::FieldVector<T,4>& v) { - assert( std::fabs(p*v) < 1e-8 ); + assert( std::abs(p*v) < 1e-8 ); // The vector v as a quaternion Quaternion<T> vQuat(v); // left multiplication by the inverse base point yields a tangent vector at the identity Quaternion<T> vAtIdentity = p.inverse().mult(vQuat); - assert( std::fabs(vAtIdentity[3]) < 1e-8 ); + assert( std::abs(vAtIdentity[3]) < 1e-8 ); // vAtIdentity as a skew matrix SkewMatrix<T,3> vMatrix; @@ -660,7 +660,7 @@ public: result.axpy(-1*(q*p), q); // The ternary operator comes from the derivative of the absolute value function - result *= 4 * UnitVector<T,4>::derivativeOfArcCosSquared(std::fabs(sp)) * ( (sp<0) ? -1 : 1 ); + result *= 4 * UnitVector<T,4>::derivativeOfArcCosSquared(std::abs(sp)) * ( (sp<0) ? -1 : 1 ); return result; } @@ -677,7 +677,7 @@ public: for (int j=0; j<4; j++) A[i][j] = pProjected[i]*pProjected[j]; - A *= 4*UnitVector<T,4>::secondDerivativeOfArcCosSquared(std::fabs(sp)); + A *= 4*UnitVector<T,4>::secondDerivativeOfArcCosSquared(std::abs(sp)); // Compute matrix B (see notes) Dune::FieldMatrix<T,4,4> Pq; @@ -686,7 +686,7 @@ public: Pq[i][j] = (i==j) - q.globalCoordinates()[i]*q.globalCoordinates()[j]; // Bring it all together - A.axpy(-4* ((sp<0) ? -1 : 1) * UnitVector<T,4>::derivativeOfArcCosSquared(std::fabs(sp))*sp, Pq); + A.axpy(-4* ((sp<0) ? -1 : 1) * UnitVector<T,4>::derivativeOfArcCosSquared(std::abs(sp))*sp, Pq); return A; } @@ -708,7 +708,7 @@ public: Dune::FieldMatrix<T,4,4> A; // A = row * column Dune::FMatrixHelp::multMatrix(column,row,A); - A *= 4 * UnitVector<T,4>::secondDerivativeOfArcCosSquared(std::fabs(sp)); + A *= 4 * UnitVector<T,4>::secondDerivativeOfArcCosSquared(std::abs(sp)); // Compute matrix B (see notes) Dune::FieldMatrix<T,4,4> Pp, Pq; @@ -722,7 +722,7 @@ public: Dune::FMatrixHelp::multMatrix(Pp,Pq,B); // Bring it all together - A.axpy(4 * ( (sp<0) ? -1 : 1) * UnitVector<T,4>::derivativeOfArcCosSquared(std::fabs(sp)), B); + A.axpy(4 * ( (sp<0) ? -1 : 1) * UnitVector<T,4>::derivativeOfArcCosSquared(std::abs(sp)), B); return A; } @@ -751,12 +751,12 @@ public: for (int j=0; j<4; j++) for (int k=0; k<4; k++) { - result[i][j][k] = plusMinus * UnitVector<T,4>::thirdDerivativeOfArcCosSquared(std::fabs(sp)) * pProjected[i] * pProjected[j] * pProjected[k] - - UnitVector<T,4>::secondDerivativeOfArcCosSquared(std::fabs(sp)) * ((i==j)*sp + p.globalCoordinates()[i]*q.globalCoordinates()[j])*pProjected[k] - - UnitVector<T,4>::secondDerivativeOfArcCosSquared(std::fabs(sp)) * ((i==k)*sp + p.globalCoordinates()[i]*q.globalCoordinates()[k])*pProjected[j] - - UnitVector<T,4>::secondDerivativeOfArcCosSquared(std::fabs(sp)) * pProjected[i] * Pq[j][k] * sp - + plusMinus * UnitVector<T,4>::derivativeOfArcCosSquared(std::fabs(sp)) * ((i==j)*q.globalCoordinates()[k] + (i==k)*q.globalCoordinates()[j]) * sp - - plusMinus * UnitVector<T,4>::derivativeOfArcCosSquared(std::fabs(sp)) * p.globalCoordinates()[i] * Pq[j][k]; + result[i][j][k] = plusMinus * UnitVector<T,4>::thirdDerivativeOfArcCosSquared(std::abs(sp)) * pProjected[i] * pProjected[j] * pProjected[k] + - UnitVector<T,4>::secondDerivativeOfArcCosSquared(std::abs(sp)) * ((i==j)*sp + p.globalCoordinates()[i]*q.globalCoordinates()[j])*pProjected[k] + - UnitVector<T,4>::secondDerivativeOfArcCosSquared(std::abs(sp)) * ((i==k)*sp + p.globalCoordinates()[i]*q.globalCoordinates()[k])*pProjected[j] + - UnitVector<T,4>::secondDerivativeOfArcCosSquared(std::abs(sp)) * pProjected[i] * Pq[j][k] * sp + + plusMinus * UnitVector<T,4>::derivativeOfArcCosSquared(std::abs(sp)) * ((i==j)*q.globalCoordinates()[k] + (i==k)*q.globalCoordinates()[j]) * sp + - plusMinus * UnitVector<T,4>::derivativeOfArcCosSquared(std::abs(sp)) * p.globalCoordinates()[i] * Pq[j][k]; } Pq *= 4; @@ -797,10 +797,10 @@ public: double plusMinus = (sp < 0) ? -1 : 1; - result = plusMinus * UnitVector<T,4>::thirdDerivativeOfArcCosSquared(std::fabs(sp)) * Tensor3<T,4,4,4>::product(qProjected,pProjected,pProjected) - + UnitVector<T,4>::secondDerivativeOfArcCosSquared(std::fabs(sp)) * derivativeOfPqOTimesPq - - UnitVector<T,4>::secondDerivativeOfArcCosSquared(std::fabs(sp)) * sp * Tensor3<T,4,4,4>::product(qProjected,Pq) - - plusMinus * UnitVector<T,4>::derivativeOfArcCosSquared(std::fabs(sp)) * Tensor3<T,4,4,4>::product(qProjected,Pq); + result = plusMinus * UnitVector<T,4>::thirdDerivativeOfArcCosSquared(std::abs(sp)) * Tensor3<T,4,4,4>::product(qProjected,pProjected,pProjected) + + UnitVector<T,4>::secondDerivativeOfArcCosSquared(std::abs(sp)) * derivativeOfPqOTimesPq + - UnitVector<T,4>::secondDerivativeOfArcCosSquared(std::abs(sp)) * sp * Tensor3<T,4,4,4>::product(qProjected,Pq) + - plusMinus * UnitVector<T,4>::derivativeOfArcCosSquared(std::abs(sp)) * Tensor3<T,4,4,4>::product(qProjected,Pq); result *= 4; -- GitLab