From: Jean-Paul Pelteret Date: Fri, 3 Nov 2017 19:15:24 +0000 (+0100) Subject: Add tests for number traits classes: Adol-C X-Git-Tag: v9.0.0-rc1~769^2~1 X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bbfb5b09d54254267b160ba8c54068d06ed83d31;p=dealii.git Add tests for number traits classes: Adol-C --- diff --git a/tests/adolc/ad_number_traits_01.cc b/tests/adolc/ad_number_traits_01.cc new file mode 100644 index 0000000000..a3af4fddbd --- /dev/null +++ b/tests/adolc/ad_number_traits_01.cc @@ -0,0 +1,59 @@ +// --------------------------------------------------------------------- +// +// Copyright (C) 2016 - 2017 by the deal.II authors +// +// This file is part of the deal.II library. +// +// The deal.II library is free software; you can use it, redistribute +// it, and/or modify it under the terms of the GNU Lesser General +// Public License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// The full text of the license can be found in the file LICENSE at +// the top level of the deal.II distribution. +// +// --------------------------------------------------------------------- + + +// Test that all of the Adol-C number traits combinations are constructible + +#include "../tests.h" +#include +#include + +#include +#include +#include + +using namespace dealii; +namespace AD = Differentiation::AD; + +int main () +{ + initlog(); + + // --- Taped --- + AD::NumberTraits(); + AD::NumberTraits,AD::NumberTypes::adolc_taped>(); + AD::NumberTraits(); + AD::NumberTraits,AD::NumberTypes::adolc_taped>(); + + AD::ADNumberTraits(); + AD::ADNumberTraits >(); + AD::NumberTraits(); + AD::NumberTraits,AD::NumberTypes::adolc_taped>(); + deallog << "Taped OK" << std::endl; + + // --- Tapeless --- + AD::NumberTraits(); + AD::NumberTraits,AD::NumberTypes::adolc_tapeless>(); + AD::NumberTraits(); + AD::NumberTraits,AD::NumberTypes::adolc_tapeless>(); + + AD::ADNumberTraits(); + AD::ADNumberTraits >(); + AD::NumberTraits(); + AD::NumberTraits,AD::NumberTypes::adolc_tapeless>(); + deallog << "Tapeless OK" << std::endl; + + deallog << "OK" << std::endl; +} diff --git a/tests/adolc/ad_number_traits_01.output b/tests/adolc/ad_number_traits_01.output new file mode 100644 index 0000000000..3114cf7921 --- /dev/null +++ b/tests/adolc/ad_number_traits_01.output @@ -0,0 +1,4 @@ + +DEAL::Taped OK +DEAL::Tapeless OK +DEAL::OK diff --git a/tests/adolc/ad_number_traits_02a.cc b/tests/adolc/ad_number_traits_02a.cc new file mode 100644 index 0000000000..9028c81066 --- /dev/null +++ b/tests/adolc/ad_number_traits_02a.cc @@ -0,0 +1,98 @@ +// --------------------------------------------------------------------- +// +// Copyright (C) 2016 - 2017 by the deal.II authors +// +// This file is part of the deal.II library. +// +// The deal.II library is free software; you can use it, redistribute +// it, and/or modify it under the terms of the GNU Lesser General +// Public License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// The full text of the license can be found in the file LICENSE at +// the top level of the deal.II distribution. +// +// --------------------------------------------------------------------- + + +// Test that all of the Adol-C number traits return the correct information +// ::adouble (Taped) + +#include "../tests.h" +#include +#include + +#include +#include +#include +#include + +using namespace dealii; +namespace AD = Differentiation::AD; + +template +void print_info () +{ + deallog + << "type_code: " + << static_cast::type>(NumberTraitsType::type_code) + << std::endl; + deallog << "is_taped: " << NumberTraitsType::is_taped << std::endl; + deallog << "is_tapeless: " << NumberTraitsType::is_tapeless << std::endl; + deallog << "is_real_valued: " << NumberTraitsType::is_real_valued << std::endl; + deallog << "is_complex_valued: " << NumberTraitsType::is_complex_valued << std::endl; + deallog << "n_supported_derivative_levels: " << NumberTraitsType::n_supported_derivative_levels << std::endl; + + deallog << "is_ad_number: " << AD::is_ad_number::value << std::endl; + deallog << "is_adolc_number: " << AD::is_adolc_number::value << std::endl; + deallog << "is_taped_ad_number: " << AD::is_taped_ad_number::value << std::endl; + deallog << "is_tapeless_ad_number: " << AD::is_tapeless_ad_number::value << std::endl; +} + +int main () +{ + initlog(); + + deallog.push("NumberTraits"); + + deallog.push("float"); + print_info >(); + deallog.pop(); + + deallog.push("std::complex"); + print_info,AD::NumberTypes::adolc_taped> >(); + deallog.pop(); + + deallog.push("double"); + print_info >(); + deallog.pop(); + + deallog.push("std::complex"); + print_info,AD::NumberTypes::adolc_taped> >(); + deallog.pop(); + + deallog.push("adouble"); + print_info >(); + deallog.pop(); + + deallog.push("std::complex"); + print_info,AD::NumberTypes::adolc_taped> >(); + deallog.pop(); + + deallog.pop(); // NumberTraits + + deallog << std::endl; + + deallog.push("ADNumberTraits"); + + deallog.push("adouble"); + print_info >(); + deallog.pop(); + + deallog.push("std::complex"); + print_info > >(); + deallog.pop(); + + deallog.pop(); // ADNumberTraits + + deallog << "OK" << std::endl; +} diff --git a/tests/adolc/ad_number_traits_02a.output b/tests/adolc/ad_number_traits_02a.output new file mode 100644 index 0000000000..6220be7c8d --- /dev/null +++ b/tests/adolc/ad_number_traits_02a.output @@ -0,0 +1,83 @@ + +DEAL:NumberTraits:float::type_code: 0 +DEAL:NumberTraits:float::is_taped: 1 +DEAL:NumberTraits:float::is_tapeless: 0 +DEAL:NumberTraits:float::is_real_valued: 1 +DEAL:NumberTraits:float::is_complex_valued: 0 +DEAL:NumberTraits:float::n_supported_derivative_levels: 4294967295 +DEAL:NumberTraits:float::is_ad_number: 1 +DEAL:NumberTraits:float::is_adolc_number: 1 +DEAL:NumberTraits:float::is_taped_ad_number: 1 +DEAL:NumberTraits:float::is_tapeless_ad_number: 0 +DEAL:NumberTraits:std::complex::type_code: 0 +DEAL:NumberTraits:std::complex::is_taped: 1 +DEAL:NumberTraits:std::complex::is_tapeless: 0 +DEAL:NumberTraits:std::complex::is_real_valued: 0 +DEAL:NumberTraits:std::complex::is_complex_valued: 1 +DEAL:NumberTraits:std::complex::n_supported_derivative_levels: 4294967295 +DEAL:NumberTraits:std::complex::is_ad_number: 1 +DEAL:NumberTraits:std::complex::is_adolc_number: 1 +DEAL:NumberTraits:std::complex::is_taped_ad_number: 1 +DEAL:NumberTraits:std::complex::is_tapeless_ad_number: 0 +DEAL:NumberTraits:double::type_code: 0 +DEAL:NumberTraits:double::is_taped: 1 +DEAL:NumberTraits:double::is_tapeless: 0 +DEAL:NumberTraits:double::is_real_valued: 1 +DEAL:NumberTraits:double::is_complex_valued: 0 +DEAL:NumberTraits:double::n_supported_derivative_levels: 4294967295 +DEAL:NumberTraits:double::is_ad_number: 1 +DEAL:NumberTraits:double::is_adolc_number: 1 +DEAL:NumberTraits:double::is_taped_ad_number: 1 +DEAL:NumberTraits:double::is_tapeless_ad_number: 0 +DEAL:NumberTraits:std::complex::type_code: 0 +DEAL:NumberTraits:std::complex::is_taped: 1 +DEAL:NumberTraits:std::complex::is_tapeless: 0 +DEAL:NumberTraits:std::complex::is_real_valued: 0 +DEAL:NumberTraits:std::complex::is_complex_valued: 1 +DEAL:NumberTraits:std::complex::n_supported_derivative_levels: 4294967295 +DEAL:NumberTraits:std::complex::is_ad_number: 1 +DEAL:NumberTraits:std::complex::is_adolc_number: 1 +DEAL:NumberTraits:std::complex::is_taped_ad_number: 1 +DEAL:NumberTraits:std::complex::is_tapeless_ad_number: 0 +DEAL:NumberTraits:adouble::type_code: 0 +DEAL:NumberTraits:adouble::is_taped: 1 +DEAL:NumberTraits:adouble::is_tapeless: 0 +DEAL:NumberTraits:adouble::is_real_valued: 1 +DEAL:NumberTraits:adouble::is_complex_valued: 0 +DEAL:NumberTraits:adouble::n_supported_derivative_levels: 4294967295 +DEAL:NumberTraits:adouble::is_ad_number: 1 +DEAL:NumberTraits:adouble::is_adolc_number: 1 +DEAL:NumberTraits:adouble::is_taped_ad_number: 1 +DEAL:NumberTraits:adouble::is_tapeless_ad_number: 0 +DEAL:NumberTraits:std::complex::type_code: 0 +DEAL:NumberTraits:std::complex::is_taped: 1 +DEAL:NumberTraits:std::complex::is_tapeless: 0 +DEAL:NumberTraits:std::complex::is_real_valued: 0 +DEAL:NumberTraits:std::complex::is_complex_valued: 1 +DEAL:NumberTraits:std::complex::n_supported_derivative_levels: 4294967295 +DEAL:NumberTraits:std::complex::is_ad_number: 1 +DEAL:NumberTraits:std::complex::is_adolc_number: 1 +DEAL:NumberTraits:std::complex::is_taped_ad_number: 1 +DEAL:NumberTraits:std::complex::is_tapeless_ad_number: 0 +DEAL:: +DEAL:ADNumberTraits:adouble::type_code: 0 +DEAL:ADNumberTraits:adouble::is_taped: 1 +DEAL:ADNumberTraits:adouble::is_tapeless: 0 +DEAL:ADNumberTraits:adouble::is_real_valued: 1 +DEAL:ADNumberTraits:adouble::is_complex_valued: 0 +DEAL:ADNumberTraits:adouble::n_supported_derivative_levels: 4294967295 +DEAL:ADNumberTraits:adouble::is_ad_number: 1 +DEAL:ADNumberTraits:adouble::is_adolc_number: 1 +DEAL:ADNumberTraits:adouble::is_taped_ad_number: 1 +DEAL:ADNumberTraits:adouble::is_tapeless_ad_number: 0 +DEAL:ADNumberTraits:std::complex::type_code: 0 +DEAL:ADNumberTraits:std::complex::is_taped: 1 +DEAL:ADNumberTraits:std::complex::is_tapeless: 0 +DEAL:ADNumberTraits:std::complex::is_real_valued: 0 +DEAL:ADNumberTraits:std::complex::is_complex_valued: 1 +DEAL:ADNumberTraits:std::complex::n_supported_derivative_levels: 4294967295 +DEAL:ADNumberTraits:std::complex::is_ad_number: 1 +DEAL:ADNumberTraits:std::complex::is_adolc_number: 1 +DEAL:ADNumberTraits:std::complex::is_taped_ad_number: 1 +DEAL:ADNumberTraits:std::complex::is_tapeless_ad_number: 0 +DEAL::OK diff --git a/tests/adolc/ad_number_traits_02b.cc b/tests/adolc/ad_number_traits_02b.cc new file mode 100644 index 0000000000..73b251f3c0 --- /dev/null +++ b/tests/adolc/ad_number_traits_02b.cc @@ -0,0 +1,98 @@ +// --------------------------------------------------------------------- +// +// Copyright (C) 2016 - 2017 by the deal.II authors +// +// This file is part of the deal.II library. +// +// The deal.II library is free software; you can use it, redistribute +// it, and/or modify it under the terms of the GNU Lesser General +// Public License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// The full text of the license can be found in the file LICENSE at +// the top level of the deal.II distribution. +// +// --------------------------------------------------------------------- + + +// Test that all of the Adol-C number traits return the correct information +// adtl::adouble (Tapeless) + +#include "../tests.h" +#include +#include + +#include +#include +#include +#include + +using namespace dealii; +namespace AD = Differentiation::AD; + +template +void print_info () +{ + deallog + << "type_code: " + << static_cast::type>(NumberTraitsType::type_code) + << std::endl; + deallog << "is_taped: " << NumberTraitsType::is_taped << std::endl; + deallog << "is_tapeless: " << NumberTraitsType::is_tapeless << std::endl; + deallog << "is_real_valued: " << NumberTraitsType::is_real_valued << std::endl; + deallog << "is_complex_valued: " << NumberTraitsType::is_complex_valued << std::endl; + deallog << "n_supported_derivative_levels: " << NumberTraitsType::n_supported_derivative_levels << std::endl; + + deallog << "is_ad_number: " << AD::is_ad_number::value << std::endl; + deallog << "is_adolc_number: " << AD::is_adolc_number::value << std::endl; + deallog << "is_taped_ad_number: " << AD::is_taped_ad_number::value << std::endl; + deallog << "is_tapeless_ad_number: " << AD::is_tapeless_ad_number::value << std::endl; +} + +int main () +{ + initlog(); + + deallog.push("NumberTraits"); + + deallog.push("float"); + print_info >(); + deallog.pop(); + + deallog.push("std::complex"); + print_info,AD::NumberTypes::adolc_tapeless> >(); + deallog.pop(); + + deallog.push("double"); + print_info >(); + deallog.pop(); + + deallog.push("std::complex"); + print_info,AD::NumberTypes::adolc_tapeless> >(); + deallog.pop(); + + deallog.push("adouble"); + print_info >(); + deallog.pop(); + + deallog.push("std::complex"); + print_info,AD::NumberTypes::adolc_tapeless> >(); + deallog.pop(); + + deallog.pop(); // NumberTraits + + deallog << std::endl; + + deallog.push("ADNumberTraits"); + + deallog.push("adtl::adouble"); + print_info >(); + deallog.pop(); + + deallog.push("std::complex"); + print_info > >(); + deallog.pop(); + + deallog.pop(); // ADNumberTraits + + deallog << "OK" << std::endl; +} diff --git a/tests/adolc/ad_number_traits_02b.output b/tests/adolc/ad_number_traits_02b.output new file mode 100644 index 0000000000..318322efb0 --- /dev/null +++ b/tests/adolc/ad_number_traits_02b.output @@ -0,0 +1,83 @@ + +DEAL:NumberTraits:float::type_code: 1 +DEAL:NumberTraits:float::is_taped: 0 +DEAL:NumberTraits:float::is_tapeless: 1 +DEAL:NumberTraits:float::is_real_valued: 1 +DEAL:NumberTraits:float::is_complex_valued: 0 +DEAL:NumberTraits:float::n_supported_derivative_levels: 1 +DEAL:NumberTraits:float::is_ad_number: 1 +DEAL:NumberTraits:float::is_adolc_number: 1 +DEAL:NumberTraits:float::is_taped_ad_number: 0 +DEAL:NumberTraits:float::is_tapeless_ad_number: 1 +DEAL:NumberTraits:std::complex::type_code: 1 +DEAL:NumberTraits:std::complex::is_taped: 0 +DEAL:NumberTraits:std::complex::is_tapeless: 1 +DEAL:NumberTraits:std::complex::is_real_valued: 0 +DEAL:NumberTraits:std::complex::is_complex_valued: 1 +DEAL:NumberTraits:std::complex::n_supported_derivative_levels: 1 +DEAL:NumberTraits:std::complex::is_ad_number: 1 +DEAL:NumberTraits:std::complex::is_adolc_number: 1 +DEAL:NumberTraits:std::complex::is_taped_ad_number: 0 +DEAL:NumberTraits:std::complex::is_tapeless_ad_number: 1 +DEAL:NumberTraits:double::type_code: 1 +DEAL:NumberTraits:double::is_taped: 0 +DEAL:NumberTraits:double::is_tapeless: 1 +DEAL:NumberTraits:double::is_real_valued: 1 +DEAL:NumberTraits:double::is_complex_valued: 0 +DEAL:NumberTraits:double::n_supported_derivative_levels: 1 +DEAL:NumberTraits:double::is_ad_number: 1 +DEAL:NumberTraits:double::is_adolc_number: 1 +DEAL:NumberTraits:double::is_taped_ad_number: 0 +DEAL:NumberTraits:double::is_tapeless_ad_number: 1 +DEAL:NumberTraits:std::complex::type_code: 1 +DEAL:NumberTraits:std::complex::is_taped: 0 +DEAL:NumberTraits:std::complex::is_tapeless: 1 +DEAL:NumberTraits:std::complex::is_real_valued: 0 +DEAL:NumberTraits:std::complex::is_complex_valued: 1 +DEAL:NumberTraits:std::complex::n_supported_derivative_levels: 1 +DEAL:NumberTraits:std::complex::is_ad_number: 1 +DEAL:NumberTraits:std::complex::is_adolc_number: 1 +DEAL:NumberTraits:std::complex::is_taped_ad_number: 0 +DEAL:NumberTraits:std::complex::is_tapeless_ad_number: 1 +DEAL:NumberTraits:adouble::type_code: 1 +DEAL:NumberTraits:adouble::is_taped: 0 +DEAL:NumberTraits:adouble::is_tapeless: 1 +DEAL:NumberTraits:adouble::is_real_valued: 1 +DEAL:NumberTraits:adouble::is_complex_valued: 0 +DEAL:NumberTraits:adouble::n_supported_derivative_levels: 1 +DEAL:NumberTraits:adouble::is_ad_number: 1 +DEAL:NumberTraits:adouble::is_adolc_number: 1 +DEAL:NumberTraits:adouble::is_taped_ad_number: 0 +DEAL:NumberTraits:adouble::is_tapeless_ad_number: 1 +DEAL:NumberTraits:std::complex::type_code: 1 +DEAL:NumberTraits:std::complex::is_taped: 0 +DEAL:NumberTraits:std::complex::is_tapeless: 1 +DEAL:NumberTraits:std::complex::is_real_valued: 0 +DEAL:NumberTraits:std::complex::is_complex_valued: 1 +DEAL:NumberTraits:std::complex::n_supported_derivative_levels: 1 +DEAL:NumberTraits:std::complex::is_ad_number: 1 +DEAL:NumberTraits:std::complex::is_adolc_number: 1 +DEAL:NumberTraits:std::complex::is_taped_ad_number: 0 +DEAL:NumberTraits:std::complex::is_tapeless_ad_number: 1 +DEAL:: +DEAL:ADNumberTraits:adtl::adouble::type_code: 1 +DEAL:ADNumberTraits:adtl::adouble::is_taped: 0 +DEAL:ADNumberTraits:adtl::adouble::is_tapeless: 1 +DEAL:ADNumberTraits:adtl::adouble::is_real_valued: 1 +DEAL:ADNumberTraits:adtl::adouble::is_complex_valued: 0 +DEAL:ADNumberTraits:adtl::adouble::n_supported_derivative_levels: 1 +DEAL:ADNumberTraits:adtl::adouble::is_ad_number: 1 +DEAL:ADNumberTraits:adtl::adouble::is_adolc_number: 1 +DEAL:ADNumberTraits:adtl::adouble::is_taped_ad_number: 0 +DEAL:ADNumberTraits:adtl::adouble::is_tapeless_ad_number: 1 +DEAL:ADNumberTraits:std::complex::type_code: 1 +DEAL:ADNumberTraits:std::complex::is_taped: 0 +DEAL:ADNumberTraits:std::complex::is_tapeless: 1 +DEAL:ADNumberTraits:std::complex::is_real_valued: 0 +DEAL:ADNumberTraits:std::complex::is_complex_valued: 1 +DEAL:ADNumberTraits:std::complex::n_supported_derivative_levels: 1 +DEAL:ADNumberTraits:std::complex::is_ad_number: 1 +DEAL:ADNumberTraits:std::complex::is_adolc_number: 1 +DEAL:ADNumberTraits:std::complex::is_taped_ad_number: 0 +DEAL:ADNumberTraits:std::complex::is_tapeless_ad_number: 1 +DEAL::OK diff --git a/tests/adolc/ad_number_traits_03.cc b/tests/adolc/ad_number_traits_03.cc new file mode 100644 index 0000000000..de3bb00eb5 --- /dev/null +++ b/tests/adolc/ad_number_traits_03.cc @@ -0,0 +1,80 @@ +// --------------------------------------------------------------------- +// +// Copyright (C) 2016 - 2017 by the deal.II authors +// +// This file is part of the deal.II library. +// +// The deal.II library is free software; you can use it, redistribute +// it, and/or modify it under the terms of the GNU Lesser General +// Public License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// The full text of the license can be found in the file LICENSE at +// the top level of the deal.II distribution. +// +// --------------------------------------------------------------------- + + +// Test that all of the Adol-C number traits return the correct information + +#include "../tests.h" +#include + +#include +#include +#include +#include + +using namespace dealii; +namespace AD = Differentiation::AD; + +template +void print () +{ + deallog << "is_ad_number: " << AD::is_ad_number::value << std::endl; + deallog << "is_adolc_number: " << AD::is_adolc_number::value << std::endl; + deallog << "is_taped_ad_number: " << AD::is_taped_ad_number::value << std::endl; + deallog << "is_tapeless_ad_number: " << AD::is_tapeless_ad_number::value << std::endl; + + Assert(AD::is_ad_number::value == AD::is_ad_number::value, ExcMessage("Error const")); + Assert(AD::is_adolc_number::value == AD::is_adolc_number::value, ExcMessage("Error const")); + Assert(AD::is_taped_ad_number::value == AD::is_taped_ad_number::value, ExcMessage("Error const")); + Assert(AD::is_tapeless_ad_number::value == AD::is_tapeless_ad_number::value, ExcMessage("Error const")); + + Assert(AD::is_ad_number::value == AD::is_ad_number::value, ExcMessage("Error reference")); + Assert(AD::is_adolc_number::value == AD::is_adolc_number::value, ExcMessage("Error reference")); + Assert(AD::is_taped_ad_number::value == AD::is_taped_ad_number::value, ExcMessage("Error reference")); + Assert(AD::is_tapeless_ad_number::value == AD::is_tapeless_ad_number::value, ExcMessage("Error reference")); + + Assert(AD::is_ad_number::value == AD::is_ad_number::value, ExcMessage("Error const reference")); + Assert(AD::is_adolc_number::value == AD::is_adolc_number::value, ExcMessage("Error const reference")); + Assert(AD::is_taped_ad_number::value == AD::is_taped_ad_number::value, ExcMessage("Error const reference")); + Assert(AD::is_tapeless_ad_number::value == AD::is_tapeless_ad_number::value, ExcMessage("Error const reference")); + + Assert(AD::is_ad_number::value == AD::is_ad_number::value, ExcMessage("Error rvalue")); + Assert(AD::is_adolc_number::value == AD::is_adolc_number::value, ExcMessage("Error rvalue")); + Assert(AD::is_taped_ad_number::value == AD::is_taped_ad_number::value, ExcMessage("Error rvalue")); + Assert(AD::is_tapeless_ad_number::value == AD::is_tapeless_ad_number::value, ExcMessage("Error rvalue")); +} + +int main () +{ + initlog(); + + deallog.push("adouble"); + print<::adouble>(); + deallog.pop(); + + deallog.push("std::complex<::adouble>"); + print>(); + deallog.pop(); + + deallog.push("adtl::adouble"); + print(); + deallog.pop(); + + deallog.push("std::complex"); + print>(); + deallog.pop(); + + deallog << "OK" << std::endl; +} diff --git a/tests/adolc/ad_number_traits_03.output b/tests/adolc/ad_number_traits_03.output new file mode 100644 index 0000000000..c974541607 --- /dev/null +++ b/tests/adolc/ad_number_traits_03.output @@ -0,0 +1,18 @@ + +DEAL:adouble::is_ad_number: 1 +DEAL:adouble::is_adolc_number: 1 +DEAL:adouble::is_taped_ad_number: 1 +DEAL:adouble::is_tapeless_ad_number: 0 +DEAL:std::complex<::adouble>::is_ad_number: 1 +DEAL:std::complex<::adouble>::is_adolc_number: 1 +DEAL:std::complex<::adouble>::is_taped_ad_number: 1 +DEAL:std::complex<::adouble>::is_tapeless_ad_number: 0 +DEAL:adtl::adouble::is_ad_number: 1 +DEAL:adtl::adouble::is_adolc_number: 1 +DEAL:adtl::adouble::is_taped_ad_number: 0 +DEAL:adtl::adouble::is_tapeless_ad_number: 1 +DEAL:std::complex::is_ad_number: 1 +DEAL:std::complex::is_adolc_number: 1 +DEAL:std::complex::is_taped_ad_number: 0 +DEAL:std::complex::is_tapeless_ad_number: 1 +DEAL::OK