From 653b07041341d7d3cf4a23cf5bad967618b4be92 Mon Sep 17 00:00:00 2001
From: Oliver Sander <sander@igpm.rwth-aachen.de>
Date: Tue, 3 Sep 2013 16:29:24 +0000
Subject: [PATCH] Inject ADOL-C overloads into the std namespace

[[Imported from SVN: r9394]]
---
 dune/gfe/Makefile.am                 |  3 +-
 dune/gfe/adolcnamespaceinjections.hh | 68 ++++++++++++++++++++++++++++
 2 files changed, 70 insertions(+), 1 deletion(-)
 create mode 100644 dune/gfe/adolcnamespaceinjections.hh

diff --git a/dune/gfe/Makefile.am b/dune/gfe/Makefile.am
index 47e42cc0..ad63f329 100644
--- a/dune/gfe/Makefile.am
+++ b/dune/gfe/Makefile.am
@@ -5,7 +5,8 @@ SUBDIRS = coupling
 AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/..
 
 srcincludedir = $(includedir)/dune/common
-srcinclude_HEADERS = averagedistanceassembler.hh \
+srcinclude_HEADERS = adolcnamespaceinjections.hh \
+                     averagedistanceassembler.hh \
                      averageinterface.hh \
                      cosseratvtkwriter.hh \
                      geodesicdifference.hh \
diff --git a/dune/gfe/adolcnamespaceinjections.hh b/dune/gfe/adolcnamespaceinjections.hh
new file mode 100644
index 00000000..dc74ba14
--- /dev/null
+++ b/dune/gfe/adolcnamespaceinjections.hh
@@ -0,0 +1,68 @@
+#ifndef DUNE_GFE_ADOLC_NAMESPACE_INJECTIONS_HH
+#define DUNE_GFE_ADOLC_NAMESPACE_INJECTIONS_HH
+
+adouble sqrt_hack(adouble a) {
+  return sqrt(a);
+}
+
+adouble pow_hack(const adouble& a, const adouble& b) {
+    return pow(a,b);
+}
+
+adouble pow_hack(const adouble& a, double b) {
+    return pow(a,b);
+}
+
+namespace std
+{
+   adouble min(adouble a, adouble b) {
+      return fmin(a,b);
+   }
+
+   adouble max(adouble a, adouble b) {
+      return fmax(a,b);
+   }
+
+   adouble sqrt(adouble a) {
+     return sqrt_hack(a);
+   }
+
+   adouble abs(adouble a) {
+     return fabs(a);
+   }
+
+//    adouble fabs(adouble a) {
+//      return fabs(a);
+//    }
+
+   adouble pow(const adouble& a, const adouble& b) {
+     return pow_hack(a,b);
+   }
+
+   adouble pow(const adouble& a, double b) {
+     return pow_hack(a,b);
+   }
+
+   adouble sin(adouble a) {
+     return sin(a);
+   }
+
+   adouble cos(adouble a) {
+     return cos(a);
+   }
+
+   adouble acos(adouble a) {
+     return acos(a);
+   }
+
+   bool isnan(adouble a) {
+     return std::isnan(a.value());
+   }
+
+   bool isinf(adouble a) {
+     return std::isinf(a.value());
+   }
+
+}
+
+#endif
\ No newline at end of file
-- 
GitLab