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