From fa75d3ac15b6eb4e023d40ccc1559017321df104 Mon Sep 17 00:00:00 2001 From: Martin Kronbichler Date: Fri, 4 Aug 2017 18:27:56 +0200 Subject: [PATCH] Fix Utilities::fixed_power for VectorizedArray. --- include/deal.II/base/utilities.h | 2 +- tests/base/utilities_12.cc | 60 ++++++++++++++++++++++++++++++++ tests/base/utilities_12.output | 26 ++++++++++++++ 3 files changed, 87 insertions(+), 1 deletion(-) create mode 100644 tests/base/utilities_12.cc create mode 100644 tests/base/utilities_12.output diff --git a/include/deal.II/base/utilities.h b/include/deal.II/base/utilities.h index e46c586d66..788ddaaff2 100644 --- a/include/deal.II/base/utilities.h +++ b/include/deal.II/base/utilities.h @@ -601,7 +601,7 @@ namespace Utilities switch (N) { case 0: - return 1; + return dealii::internal::NumberType::value(1); case 1: return n; case 2: diff --git a/tests/base/utilities_12.cc b/tests/base/utilities_12.cc new file mode 100644 index 0000000000..d39ee2cef7 --- /dev/null +++ b/tests/base/utilities_12.cc @@ -0,0 +1,60 @@ +// --------------------------------------------------------------------- +// +// Copyright (C) 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 Utilities::fixed_power on VectorizedArray, similar to utilities_02 + +#include "../tests.h" +#include +#include +#include +#include + +#include +#include + + +template +void test () +{ + VectorizedArray v1 = make_vectorized_array(2.); + v1 = Utilities::fixed_power(v1); + deallog << v1[0] << std::endl; + v1 = -2; + v1 = Utilities::fixed_power(v1); + deallog << v1[0] << std::endl; + v1 = 2.5; + v1 = Utilities::fixed_power(v1); + deallog << v1[0] << std::endl; + VectorizedArray v2 = make_vectorized_array(-2.5); + v2 = Utilities::fixed_power(v2); + deallog << (double)v2[0] << std::endl; + deallog << std::endl; +} + + + + +int main() +{ + initlog(); + deallog.threshold_double(1.e-10); + + test<0> (); + test<1> (); + test<2> (); + test<3> (); + test<4> (); +} diff --git a/tests/base/utilities_12.output b/tests/base/utilities_12.output new file mode 100644 index 0000000000..829812b5bd --- /dev/null +++ b/tests/base/utilities_12.output @@ -0,0 +1,26 @@ + +DEAL::1.00000 +DEAL::1.00000 +DEAL::1.00000 +DEAL::1.00000 +DEAL:: +DEAL::2.00000 +DEAL::-2.00000 +DEAL::2.50000 +DEAL::-2.50000 +DEAL:: +DEAL::4.00000 +DEAL::4.00000 +DEAL::6.25000 +DEAL::6.25000 +DEAL:: +DEAL::8.00000 +DEAL::-8.00000 +DEAL::15.6250 +DEAL::-15.6250 +DEAL:: +DEAL::16.0000 +DEAL::16.0000 +DEAL::39.0625 +DEAL::39.0625 +DEAL:: -- 2.39.5