From: Timo Heister Date: Mon, 16 Nov 2015 13:32:13 +0000 (-0500) Subject: make Trilinos ML deterministic X-Git-Tag: v8.4.0-rc2~223^2 X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7f3b35820cf030cf49abb8e2936f5534a3a1605d;p=dealii.git make Trilinos ML deterministic Trilinos version 12.2 and older initialize a random seed every time the ML preconditioner is constructed leading to non-deterministic behavior. Reported in 2011, this has been finally fixed in 12.4 with the new "initialize random seed" parameter. Yay! --- diff --git a/doc/news/changes.h b/doc/news/changes.h index fc491286af..8d659a5175 100644 --- a/doc/news/changes.h +++ b/doc/news/changes.h @@ -159,6 +159,12 @@ inconvenience this causes.

General

    +
  1. Fixed: Trilinos ML preconditioner is now deterministic when using + version 12.4 or newer. +
    + (Timo Heister, 2015/11/16) +
  2. +
  3. Changed: The functionality to distribute cells across processes according to a vector of cell weights that was passed in a call to parallel::distributed::Triangulation::repartition() diff --git a/source/lac/trilinos_precondition_ml.cc b/source/lac/trilinos_precondition_ml.cc index df79ff867b..16b0ecfd93 100644 --- a/source/lac/trilinos_precondition_ml.cc +++ b/source/lac/trilinos_precondition_ml.cc @@ -150,6 +150,12 @@ namespace TrilinosWrappers parameter_list.set("smoother: type", additional_data.smoother_type); parameter_list.set("coarse: type", additional_data.coarse_type); + // Force re-initialization of the random seed to make ML deterministic + // (only supported in trilinos >12.2): +#if DEAL_II_TRILINOS_VERSION_GTE(12,4,0) + parameter_list.set("initialize random seed", true); +#endif + parameter_list.set("smoother: sweeps", static_cast(additional_data.smoother_sweeps)); parameter_list.set("cycle applications", diff --git a/tests/trilinos/amg_nondeterministic_01.cc b/tests/trilinos/amg_nondeterministic_01.cc new file mode 100644 index 0000000000..38510d30d7 --- /dev/null +++ b/tests/trilinos/amg_nondeterministic_01.cc @@ -0,0 +1,135 @@ +// --------------------------------------------------------------------- +// +// Copyright (C) 2013 - 2015 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. +// +// --------------------------------------------------------------------- + +// Trilinos ML is non-deterministic up to Trilinos 12.4 and then only when the +// random seed is initialized correctly. This test checks this. + +#include "../tests.h" + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +unsigned int mati[]= {0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 30, 31, 32, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 34, 34, 34, 34, 34, 34, 34, 34, 35, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 38, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 40, 40, 40, 40, 40, 40, 40, 40, 41, 41, 41, 41, 41, 41, 42, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 46, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 49, 49, 49, 49, 49, 49, 49, 49, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 51, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 57, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 60, 60, 60, 60, 60, 60, 60, 60, 60, 61, 61, 61, 61, 61, 61, 61, 61, 61, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 63, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 69, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 72, 72, 72, 72, 72, 72, 72, 72, 72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 75, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 79, 80, 80, 80, 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81, 81, 81, 81, 81, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 83, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 87, 88, 88, 88, 88, 88, 88, 88, 88, 88, 89, 89, 89, 89, 89, 89, 89, 89, 89, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 91, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 97, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 100, 100, 100, 100, 100, 100, 100, 100, 100, 101, 101, 101, 101, 101, 101, 101, 101, 101, 102, 103, 104, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 106, 107, 107, 107, 107, 107, 107, 107, 107, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 109, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 112, 112, 112, 112, 112, 112, 113, 113, 113, 113, 113, 113, 113, 113, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 115, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 119, 120, 120, 120, 120, 120, 120, 120, 120, 120, 121, 121, 121, 121, 121, 121, 121, 121, 121, 122, 123, 124, 125, 125, 125, 125, 125, 125, 125, 125, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 127, 128, 128, 128, 128, 128, 128, 129, 129, 129, 129, 129, 129, 129, 129, 129}; +int matj[] = {0, 1, 2, 3, 4, 6, 7, 8, 10, 11, 13, 14, 15, 16, 17, 19, 20, 21, 22, 23, 25, 26, 27, 28, 29, 3, 4, 6, 8, 10, 13, 14, 16, 33, 34, 36, 39, 40, 5, 3, 4, 6, 8, 10, 13, 14, 16, 19, 20, 22, 25, 26, 28, 33, 34, 36, 39, 40, 43, 44, 47, 48, 3, 7, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 33, 37, 39, 41, 43, 45, 47, 49, 3, 4, 6, 8, 10, 13, 14, 16, 9, 3, 4, 6, 8, 10, 13, 14, 16, 19, 20, 22, 25, 26, 28, 3, 7, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 12, 3, 4, 6, 7, 8, 10, 11, 13, 14, 15, 16, 17, 3, 4, 6, 8, 10, 13, 14, 16, 33, 34, 36, 39, 40, 3, 7, 11, 13, 15, 17, 33, 37, 39, 41, 3, 4, 6, 8, 10, 13, 14, 16, 3, 7, 11, 13, 15, 17, 18, 3, 6, 7, 10, 11, 19, 20, 21, 22, 23, 25, 26, 27, 28, 29, 50, 52, 53, 54, 55, 56, 58, 59, 60, 61, 3, 6, 10, 19, 20, 22, 25, 26, 28, 33, 36, 43, 44, 47, 48, 50, 52, 54, 56, 58, 60, 74, 76, 78, 80, 3, 7, 11, 19, 21, 23, 25, 27, 29, 33, 37, 43, 45, 47, 49, 50, 53, 55, 56, 59, 61, 74, 77, 78, 81, 3, 6, 10, 19, 20, 22, 25, 26, 28, 50, 52, 54, 56, 58, 60, 3, 7, 11, 19, 21, 23, 25, 27, 29, 50, 53, 55, 56, 59, 61, 24, 3, 6, 7, 10, 11, 19, 20, 21, 22, 23, 25, 26, 27, 28, 29, 3, 6, 10, 19, 20, 22, 25, 26, 28, 33, 36, 43, 44, 47, 48, 3, 7, 11, 19, 21, 23, 25, 27, 29, 33, 37, 43, 45, 47, 49, 3, 6, 10, 19, 20, 22, 25, 26, 28, 3, 7, 11, 19, 21, 23, 25, 27, 29, 30, 31, 32, 4, 6, 7, 14, 15, 20, 21, 26, 27, 33, 34, 36, 37, 39, 40, 41, 43, 44, 45, 47, 48, 49, 4, 6, 14, 33, 34, 36, 39, 40, 35, 4, 6, 14, 20, 26, 33, 34, 36, 39, 40, 43, 44, 47, 48, 7, 15, 21, 27, 33, 37, 39, 41, 43, 45, 47, 49, 38, 4, 6, 7, 14, 15, 33, 34, 36, 37, 39, 40, 41, 4, 6, 14, 33, 34, 36, 39, 40, 7, 15, 33, 37, 39, 41, 42, 6, 7, 20, 21, 26, 27, 33, 36, 37, 43, 44, 45, 47, 48, 49, 52, 53, 58, 59, 74, 76, 77, 78, 80, 81, 6, 20, 26, 33, 36, 43, 44, 47, 48, 52, 58, 74, 76, 78, 80, 7, 21, 27, 33, 37, 43, 45, 47, 49, 53, 59, 74, 77, 78, 81, 46, 6, 7, 20, 21, 26, 27, 33, 36, 37, 43, 44, 45, 47, 48, 49, 6, 20, 26, 33, 36, 43, 44, 47, 48, 7, 21, 27, 33, 37, 43, 45, 47, 49, 19, 20, 21, 22, 23, 50, 52, 53, 54, 55, 56, 58, 59, 60, 61, 62, 64, 65, 66, 67, 68, 70, 71, 72, 73, 51, 19, 20, 22, 43, 44, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 19, 21, 23, 43, 45, 50, 53, 55, 56, 59, 61, 62, 65, 67, 68, 71, 73, 74, 77, 78, 81, 82, 85, 86, 89, 19, 20, 22, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 19, 21, 23, 50, 53, 55, 56, 59, 61, 62, 65, 67, 68, 71, 73, 19, 20, 21, 22, 23, 50, 52, 53, 54, 55, 56, 58, 59, 60, 61, 57, 19, 20, 22, 43, 44, 50, 52, 54, 56, 58, 60, 74, 76, 78, 80, 19, 21, 23, 43, 45, 50, 53, 55, 56, 59, 61, 74, 77, 78, 81, 19, 20, 22, 50, 52, 54, 56, 58, 60, 19, 21, 23, 50, 53, 55, 56, 59, 61, 50, 52, 53, 54, 55, 62, 64, 65, 66, 67, 68, 70, 71, 72, 73, 90, 92, 93, 94, 95, 96, 98, 99, 100, 101, 63, 50, 52, 54, 62, 64, 66, 68, 70, 72, 74, 76, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 114, 116, 118, 120, 50, 53, 55, 62, 65, 67, 68, 71, 73, 74, 77, 82, 85, 86, 89, 90, 93, 95, 96, 99, 101, 114, 117, 118, 121, 50, 52, 54, 62, 64, 66, 68, 70, 72, 90, 92, 94, 96, 98, 100, 50, 53, 55, 62, 65, 67, 68, 71, 73, 90, 93, 95, 96, 99, 101, 50, 52, 53, 54, 55, 62, 64, 65, 66, 67, 68, 70, 71, 72, 73, 69, 50, 52, 54, 62, 64, 66, 68, 70, 72, 74, 76, 82, 84, 86, 88, 50, 53, 55, 62, 65, 67, 68, 71, 73, 74, 77, 82, 85, 86, 89, 50, 52, 54, 62, 64, 66, 68, 70, 72, 50, 53, 55, 62, 65, 67, 68, 71, 73, 20, 21, 43, 44, 45, 52, 53, 58, 59, 64, 65, 70, 71, 74, 76, 77, 78, 80, 81, 82, 84, 85, 86, 88, 89, 75, 20, 43, 44, 52, 58, 64, 70, 74, 76, 78, 80, 82, 84, 86, 88, 21, 43, 45, 53, 59, 65, 71, 74, 77, 78, 81, 82, 85, 86, 89, 20, 21, 43, 44, 45, 52, 53, 58, 59, 74, 76, 77, 78, 80, 81, 79, 20, 43, 44, 52, 58, 74, 76, 78, 80, 21, 43, 45, 53, 59, 74, 77, 78, 81, 52, 53, 64, 65, 70, 71, 74, 76, 77, 82, 84, 85, 86, 88, 89, 92, 93, 98, 99, 114, 116, 117, 118, 120, 121, 83, 52, 64, 70, 74, 76, 82, 84, 86, 88, 92, 98, 114, 116, 118, 120, 53, 65, 71, 74, 77, 82, 85, 86, 89, 93, 99, 114, 117, 118, 121, 52, 53, 64, 65, 70, 71, 74, 76, 77, 82, 84, 85, 86, 88, 89, 87, 52, 64, 70, 74, 76, 82, 84, 86, 88, 53, 65, 71, 74, 77, 82, 85, 86, 89, 62, 64, 65, 66, 67, 90, 92, 93, 94, 95, 96, 98, 99, 100, 101, 105, 107, 108, 110, 111, 112, 113, 91, 62, 64, 66, 82, 84, 90, 92, 94, 96, 98, 100, 108, 110, 112, 114, 116, 118, 120, 126, 128, 62, 65, 67, 82, 85, 90, 93, 95, 96, 99, 101, 105, 107, 108, 111, 113, 114, 117, 118, 121, 125, 126, 129, 62, 64, 66, 90, 92, 94, 96, 98, 100, 108, 110, 112, 62, 65, 67, 90, 93, 95, 96, 99, 101, 105, 107, 108, 111, 113, 62, 64, 65, 66, 67, 90, 92, 93, 94, 95, 96, 98, 99, 100, 101, 97, 62, 64, 66, 82, 84, 90, 92, 94, 96, 98, 100, 114, 116, 118, 120, 62, 65, 67, 82, 85, 90, 93, 95, 96, 99, 101, 114, 117, 118, 121, 62, 64, 66, 90, 92, 94, 96, 98, 100, 62, 65, 67, 90, 93, 95, 96, 99, 101, 102, 103, 104, 90, 93, 95, 105, 107, 108, 111, 113, 114, 117, 125, 126, 129, 106, 90, 93, 95, 105, 107, 108, 111, 113, 90, 92, 93, 94, 95, 105, 107, 108, 110, 111, 112, 113, 109, 90, 92, 94, 108, 110, 112, 114, 116, 126, 128, 90, 93, 95, 105, 107, 108, 111, 113, 114, 117, 125, 126, 129, 90, 92, 94, 108, 110, 112, 90, 93, 95, 105, 107, 108, 111, 113, 64, 65, 82, 84, 85, 92, 93, 98, 99, 105, 110, 111, 114, 116, 117, 118, 120, 121, 125, 126, 128, 129, 115, 64, 82, 84, 92, 98, 110, 114, 116, 118, 120, 126, 128, 65, 82, 85, 93, 99, 105, 111, 114, 117, 118, 121, 125, 126, 129, 64, 65, 82, 84, 85, 92, 93, 98, 99, 114, 116, 117, 118, 120, 121, 119, 64, 82, 84, 92, 98, 114, 116, 118, 120, 65, 82, 85, 93, 99, 114, 117, 118, 121, 122, 123, 124, 93, 105, 111, 114, 117, 125, 126, 129, 92, 93, 105, 110, 111, 114, 116, 117, 125, 126, 128, 129, 127, 92, 110, 114, 116, 126, 128, 93, 105, 111, 114, 117, 125, 126, 129, 129}; +double matv[] = {2.15674e+24, 1.72585e+24, 5.01849e+24, 4.94998e+24, 2.31905e+22, -1.25698e+22, -4.7717e+23, -1.43356e+23, 8.3908e+23, -8.50862e+23, -1.03388e+24, -7.26744e+22, 6.63847e+23, 2.90617e+23, -1.98181e+24, -1.11194e+23, 4.27578e+22, -6.73475e+22, -2.19461e+23, 2.94382e+23, -9.85777e+23, -1.50944e+23, 3.71742e+23, 5.95036e+23, -8.45701e+23, 2.31905e+22, 4.54564e+24, -4.24468e+23, -1.24338e+24, 4.92253e+23, -1.11363e+23, -6.80899e+23, -1.66133e+24, 2.1412e+22, -1.01559e+24, 4.24377e+23, -8.38489e+22, -9.28075e+23, 5.07668e+24, -1.25698e+22, -4.24468e+23, 9.17972e+24, 4.82281e+23, -2.46485e+24, -1.08554e+23, -6.76218e+23, -1.62028e+24, 1.05034e+22, -3.91868e+23, 2.12582e+23, -3.79622e+22, -8.06616e+23, -5.4148e+23, 5.65405e+22, 4.34349e+23, -2.00939e+24, -8.63343e+22, -9.66809e+23, 9.0469e+22, 7.20161e+23, -1.65961e+23, -2.11006e+24, -4.7717e+23, 9.64564e+24, -2.25958e+23, 3.06653e+23, -3.09079e+24, -7.05565e+23, -9.70839e+22, 8.54425e+22, 4.07668e+23, 5.70103e+23, -2.9604e+24, -1.78436e+24, -7.97466e+23, 1.92965e+22, 7.97591e+23, -2.06563e+24, -7.74852e+22, 2.56331e+23, 5.00419e+23, -9.22386e+23, -1.43356e+23, -1.24338e+24, 4.82281e+23, 6.73286e+24, -4.41848e+23, 4.45062e+23, -1.04594e+24, -1.78377e+24, 8.19331e+24, 8.3908e+23, 4.92253e+23, -2.46485e+24, -4.41848e+23, 1.36199e+25, 4.34134e+23, -1.08467e+24, -1.77561e+24, -1.46365e+23, 7.78109e+23, -3.85007e+23, 1.4311e+23, -2.22809e+24, -2.00298e+24, -8.50862e+23, -2.25958e+23, 1.55014e+25, -5.53032e+23, -2.13434e+24, -5.71849e+24, 4.13327e+23, 2.88723e+23, 3.13618e+23, -1.63915e+24, -9.90917e+23, -5.49112e+24, 8.74891e+24, -1.03388e+24, -1.11363e+23, -1.08554e+23, 3.06653e+23, 4.45062e+23, 4.34134e+23, -5.53032e+23, 7.69772e+24, -1.20562e+23, -3.7104e+23, 1.84464e+24, -2.71937e+24, -7.26744e+22, -6.80899e+23, -6.76218e+23, -1.04594e+24, -1.08467e+24, -1.20562e+23, 1.51182e+25, -5.73288e+24, -1.22214e+23, -1.54346e+24, -1.50242e+24, -1.60913e+22, -4.8176e+24, 6.63847e+23, -3.09079e+24, -2.13434e+24, -3.7104e+23, 1.39824e+25, -1.76747e+24, 4.40397e+23, -6.36859e+23, -8.05327e+23, -1.26983e+24, 2.90617e+23, -1.66133e+24, -1.62028e+24, -1.78377e+24, -1.77561e+24, 1.84464e+24, -5.73288e+24, 2.15884e+25, -1.98181e+24, -7.05565e+23, -5.71849e+24, -2.71937e+24, -1.76747e+24, 2.1746e+25, 4.09803e+24, -1.11194e+23, 1.05034e+22, -9.70839e+22, -1.46365e+23, 4.13327e+23, 5.03315e+24, 5.24046e+22, -3.85558e+23, 1.47208e+24, -1.35226e+24, -9.7808e+23, -1.55715e+22, 4.84552e+23, 5.47585e+21, -1.31078e+24, 3.00243e+23, 7.13032e+22, 8.22448e+21, -3.49267e+23, 6.18903e+22, 8.92724e+23, -2.83224e+23, 2.09651e+22, 9.79334e+23, 3.75992e+23, 4.27578e+22, -3.91868e+23, 7.78109e+23, 5.24046e+22, 9.3568e+24, -1.89011e+24, -1.97311e+23, -1.07209e+24, -2.86938e+24, 4.10364e+21, 1.54634e+23, 2.11679e+23, -1.48728e+24, -2.50088e+22, 8.66224e+22, -4.04347e+22, -1.85812e+23, 2.4756e+23, 2.69939e+23, -1.59713e+24, -8.7401e+23, -1.25864e+23, 5.34698e+23, 5.71791e+23, -1.66359e+24, -6.73475e+22, 8.54425e+22, 2.88723e+23, -3.85558e+23, 9.88784e+24, -6.96799e+23, 4.45023e+23, -2.90456e+24, -1.29475e+24, -1.07222e+23, 3.75276e+23, -7.04199e+23, -3.99475e+23, 6.1106e+23, -1.38441e+24, 1.86487e+23, -1.20613e+23, 8.19272e+23, -9.11457e+23, -2.37952e+24, -3.29011e+24, -3.32754e+21, -4.78825e+21, -1.32603e+23, 3.65806e+23, -2.19461e+23, 2.12582e+23, -3.85007e+23, 1.47208e+24, -1.89011e+24, 1.4196e+25, 7.62876e+23, -3.1767e+22, -2.46587e+24, 2.72683e+23, 5.79824e+23, -9.25358e+22, -8.1378e+23, -1.75649e+24, -3.24772e+24, 2.94382e+23, 4.07668e+23, 3.13618e+23, -1.35226e+24, -6.96799e+23, 1.56564e+25, -1.15266e+24, -1.45286e+24, -5.39376e+24, -8.40737e+23, 4.04253e+22, 2.11472e+22, 3.18598e+24, 2.71858e+23, -4.61191e+24, 8.95619e+24, -9.85777e+23, -3.79622e+22, 5.70103e+23, 1.4311e+23, -1.63915e+24, -9.7808e+23, -1.97311e+23, 4.45023e+23, 7.62876e+23, -1.15266e+24, 7.50532e+24, -1.05206e+23, -3.13731e+23, 1.81785e+24, -2.81935e+24, -1.50944e+23, -8.06616e+23, -2.22809e+24, -1.55715e+22, -1.07209e+24, -3.1767e+22, -1.05206e+23, 1.56398e+25, -5.60363e+24, -5.29799e+22, -4.23447e+23, -4.6346e+23, -2.75099e+24, 4.69561e+21, -4.68905e+24, 3.71742e+23, -2.9604e+24, -9.90917e+23, 4.84552e+23, -2.90456e+24, -1.45286e+24, -3.13731e+23, 1.34608e+25, -1.89672e+24, 6.98781e+23, -1.71583e+24, 5.7153e+23, -1.22629e+24, -7.27749e+23, -1.39838e+24, 5.95036e+23, -5.4148e+23, -2.00298e+24, 5.47585e+21, -2.86938e+24, -2.46587e+24, 1.81785e+24, -5.60363e+24, 2.24978e+25, -8.45701e+23, -1.78436e+24, -5.49112e+24, -1.31078e+24, -1.29475e+24, -5.39376e+24, -2.81935e+24, -1.89672e+24, 2.08365e+25, 2.51238e+24, 3.59576e+24, 4.41426e+24, 2.1412e+22, 5.65405e+22, -7.97466e+23, -1.22214e+23, 4.40397e+23, 4.10364e+21, -1.07222e+23, -5.29799e+22, 6.98781e+23, 5.8278e+24, -1.05496e+23, 3.14588e+23, 9.47464e+23, -2.3807e+24, 4.27831e+23, -9.66118e+23, 1.71199e+23, -3.41097e+22, 3.9097e+23, -2.29943e+24, 1.42285e+23, -2.03179e+24, -1.01559e+24, 4.34349e+23, -1.54346e+24, -1.05496e+23, 6.89012e+24, -5.32027e+22, 2.74064e+23, -3.48067e+24, 9.82352e+24, 4.24377e+23, -2.00939e+24, -1.50242e+24, 1.54634e+23, -4.23447e+23, 3.14588e+23, -5.32027e+22, 1.39876e+25, 2.84314e+23, -3.46969e+24, -4.00004e+23, 2.32348e+22, 5.94211e+23, -3.77544e+24, 1.92965e+22, -6.36859e+23, 3.75276e+23, -1.71583e+24, 9.47464e+23, 1.84566e+25, -2.39489e+24, -8.28714e+24, 2.72025e+23, 7.20344e+23, -1.23834e+24, -7.98139e+24, 6.65223e+24, -8.38489e+22, -8.63343e+22, 7.97591e+23, -1.60913e+22, -8.05327e+23, -2.3807e+24, 2.74064e+23, 2.84314e+23, -2.39489e+24, 7.93474e+24, 9.31819e+23, 4.49296e+22, -9.28075e+23, -9.66809e+23, -4.8176e+24, 4.27831e+23, -3.48067e+24, -3.46969e+24, 9.31819e+23, 2.03753e+25, -2.06563e+24, -1.26983e+24, -9.66118e+23, -8.28714e+24, 4.49296e+22, 2.44652e+25, 5.56645e+24, 9.0469e+22, -7.74852e+22, 2.11679e+23, -7.04199e+23, -4.6346e+23, 5.7153e+23, 1.71199e+23, -4.00004e+23, 2.72025e+23, 8.50531e+24, 3.59435e+23, 5.42073e+23, -2.37068e+24, 1.66602e+24, -1.53655e+24, 2.47094e+22, -1.91384e+23, -2.02749e+23, 1.02309e+24, -1.14643e+23, -1.11595e+23, 7.71564e+23, 2.75217e+24, 5.5637e+23, -3.45852e+24, 7.20161e+23, -1.48728e+24, -2.75099e+24, -3.41097e+22, 2.32348e+22, 3.59435e+23, 1.52469e+25, 1.28692e+22, -4.39792e+24, 2.02434e+23, -7.81113e+23, 5.25552e+23, 2.95352e+23, -1.84614e+24, -5.20694e+24, 2.56331e+23, -3.99475e+23, -1.22629e+24, 3.9097e+23, 7.20344e+23, 5.42073e+23, 1.81803e+25, -1.69467e+24, -7.85046e+24, 7.74058e+23, -3.19616e+24, 7.283e+21, 4.48227e+23, -1.03443e+23, -7.04144e+24, 7.00245e+24, -1.65961e+23, 5.00419e+23, -2.50088e+22, 6.1106e+23, 4.69561e+21, -7.27749e+23, -2.29943e+24, 5.94211e+23, -1.23834e+24, -2.37068e+24, 1.28692e+22, -1.69467e+24, 7.60967e+24, 8.83117e+23, -1.36831e+23, -2.11006e+24, 8.66224e+22, -4.68905e+24, 1.42285e+23, -3.77544e+24, 1.66602e+24, -4.39792e+24, 8.83117e+23, 2.15983e+25, -9.22386e+23, -1.38441e+24, -1.39838e+24, -2.03179e+24, -7.98139e+24, -1.53655e+24, -7.85046e+24, -1.36831e+23, 2.32422e+25, 3.00243e+23, -4.04347e+22, 1.86487e+23, 2.72683e+23, -8.40737e+23, 9.60816e+24, -2.15129e+23, 2.15129e+23, -1.99117e+24, 1.99117e+24, -9.65305e+23, 1.75431e+23, -7.5964e+23, -3.97096e+23, 2.66931e+24, -3.00243e+23, -1.86487e+23, 4.04347e+22, 8.40737e+23, -2.72683e+23, -9.65305e+23, 7.5964e+23, -1.75431e+23, -2.66931e+24, 3.97096e+23, 4.80408e+24, 7.13032e+22, -1.85812e+23, 5.79824e+23, 2.47094e+22, 2.02434e+23, -2.15129e+23, 9.41268e+24, -1.3454e+24, 6.19341e+23, -1.75311e+24, -2.24172e+24, 8.22448e+21, -1.20613e+23, 4.04253e+22, 9.24394e+22, -2.0139e+24, -8.41236e+22, -5.04239e+23, -9.95045e+23, 2.62725e+23, -3.72973e+23, -1.91384e+23, 7.74058e+23, 8.5707e+23, -2.65947e+24, 8.22448e+21, -1.20613e+23, 4.04253e+22, -1.91384e+23, 7.74058e+23, 2.15129e+23, 9.41268e+24, -1.3454e+24, -9.24394e+22, -2.0139e+24, -8.41236e+22, 7.13032e+22, -1.85812e+23, 5.79824e+23, -6.19341e+23, -1.75311e+24, -2.24172e+24, 5.04239e+23, -9.95045e+23, -8.5707e+23, -2.65947e+24, 2.47094e+22, 2.02434e+23, -2.62725e+23, -3.72973e+23, -3.49267e+23, 2.4756e+23, -9.25358e+22, -1.99117e+24, -1.3454e+24, 1.45606e+25, -2.17274e+24, -4.6608e+23, -3.51968e+24, 6.18903e+22, 8.19272e+23, 2.11472e+22, -5.05634e+20, -2.75293e+24, -3.97441e+24, 6.18903e+22, 8.19272e+23, 2.11472e+22, 1.99117e+24, -1.3454e+24, 1.45606e+25, 5.05634e+20, -2.75293e+24, -3.97441e+24, -3.49267e+23, 2.4756e+23, -9.25358e+22, 2.17274e+24, -4.6608e+23, -3.51968e+24, 8.92724e+23, 2.69939e+23, -9.11457e+23, -8.1378e+23, 3.18598e+24, -9.65305e+23, 6.19341e+23, -9.24394e+22, -2.17274e+24, 5.05634e+20, 1.58185e+25, 9.67609e+22, 1.78565e+22, -4.9018e+24, 4.70184e+24, 8.11652e+24, -2.83224e+23, -1.59713e+24, -1.75649e+24, -2.02749e+23, -7.81113e+23, 1.75431e+23, -1.75311e+24, -4.6608e+23, 9.67609e+22, 1.40287e+25, -3.87943e+24, 7.06635e+23, -2.14861e+24, -2.95058e+23, -3.17227e+24, 2.09651e+22, -2.37952e+24, 2.71858e+23, 1.02309e+24, -3.19616e+24, -7.5964e+23, -2.0139e+24, -2.75293e+24, 1.78565e+22, 1.50719e+25, -3.62092e+24, -1.89869e+23, 9.33359e+21, 4.50214e+23, -2.91516e+24, 9.79334e+23, -8.7401e+23, -3.24772e+24, -3.97096e+23, -2.24172e+24, -3.51968e+24, -4.9018e+24, -3.87943e+24, 2.07577e+25, 3.75992e+23, -3.29011e+24, -4.61191e+24, 2.66931e+24, -8.41236e+22, -3.97441e+24, 4.70184e+24, -3.62092e+24, 2.25766e+25, -3.00243e+23, 8.22448e+21, 7.13032e+22, 6.18903e+22, -3.49267e+23, 5.03315e+24, -3.85558e+23, 5.24046e+22, -1.35226e+24, 1.47208e+24, -8.92724e+23, 2.09651e+22, -2.83224e+23, 3.75992e+23, 9.79334e+23, -1.11194e+23, -9.70839e+22, 1.05034e+22, 4.13327e+23, -1.46365e+23, -9.7808e+23, 4.84552e+23, -1.55715e+22, -1.31078e+24, 5.47585e+21, 4.09803e+24, -1.86487e+23, -1.20613e+23, 8.19272e+23, -3.85558e+23, 9.88784e+24, -6.96799e+23, 9.11457e+23, -2.37952e+24, -3.29011e+24, 3.32754e+21, -4.78825e+21, -7.04199e+23, -3.99475e+23, 1.32603e+23, 3.65806e+23, -6.73475e+22, 8.54425e+22, 2.88723e+23, 4.45023e+23, -2.90456e+24, -1.29475e+24, -1.07222e+23, 3.75276e+23, 6.1106e+23, -1.38441e+24, 4.04347e+22, -1.85812e+23, 2.4756e+23, 5.24046e+22, 9.3568e+24, -1.89011e+24, -2.69939e+23, -1.59713e+24, -8.7401e+23, 1.25864e+23, 5.34698e+23, 2.11679e+23, -1.48728e+24, -5.71791e+23, -1.66359e+24, 4.27578e+22, -3.91868e+23, 7.78109e+23, -1.97311e+23, -1.07209e+24, -2.86938e+24, 4.10364e+21, 1.54634e+23, -2.50088e+22, 8.66224e+22, 8.40737e+23, 4.04253e+22, 2.11472e+22, -1.35226e+24, -6.96799e+23, 1.56564e+25, -3.18598e+24, 2.71858e+23, -4.61191e+24, 2.94382e+23, 4.07668e+23, 3.13618e+23, -1.15266e+24, -1.45286e+24, -5.39376e+24, -2.72683e+23, 5.79824e+23, -9.25358e+22, 1.47208e+24, -1.89011e+24, 1.4196e+25, 8.1378e+23, -1.75649e+24, -3.24772e+24, -2.19461e+23, 2.12582e+23, -3.85007e+23, 7.62876e+23, -3.1767e+22, -2.46587e+24, -9.65305e+23, 9.24394e+22, -6.19341e+23, -5.05634e+20, 2.17274e+24, -8.92724e+23, 9.11457e+23, -2.69939e+23, -3.18598e+24, 8.1378e+23, 1.58185e+25, -1.78565e+22, -9.67609e+22, -4.70184e+24, 4.9018e+24, 7.70196e+24, 7.5964e+23, -2.0139e+24, -2.75293e+24, 2.09651e+22, -2.37952e+24, 2.71858e+23, -1.78565e+22, 1.50719e+25, -3.62092e+24, 1.89869e+23, 9.33359e+21, 1.02309e+24, -3.19616e+24, -4.50214e+23, -2.91516e+24, -1.75431e+23, -1.75311e+24, -4.6608e+23, -2.83224e+23, -1.59713e+24, -1.75649e+24, -9.67609e+22, 1.40287e+25, -3.87943e+24, -7.06635e+23, -2.14861e+24, -2.02749e+23, -7.81113e+23, 2.95058e+23, -3.17227e+24, -2.66931e+24, -8.41236e+22, -3.97441e+24, 3.75992e+23, -3.29011e+24, -4.61191e+24, -4.70184e+24, -3.62092e+24, 2.25766e+25, 3.97096e+23, -2.24172e+24, -3.51968e+24, 9.79334e+23, -8.7401e+23, -3.24772e+24, 4.9018e+24, -3.87943e+24, 2.07577e+25, -1.25864e+23, -3.32754e+21, -1.14643e+23, 5.25552e+23, 7.283e+21, -5.04239e+23, 5.04239e+23, 7.06635e+23, -1.89869e+23, 3.32754e+21, 1.25864e+23, 1.89869e+23, -7.06635e+23, 9.92513e+24, -1.13297e+23, 1.13297e+23, -3.20809e+24, -2.34707e+24, 2.15731e+23, 1.14643e+23, -7.283e+21, -5.25552e+23, -3.20809e+24, -2.15731e+23, 2.34707e+24, 4.96257e+24, 5.34698e+23, -1.11595e+23, 2.95352e+23, -9.95045e+23, -2.14861e+24, -4.78825e+21, 9.33359e+21, -1.13297e+23, 1.62221e+25, -5.71433e+23, -5.57266e+24, 7.71564e+23, 4.48227e+23, -2.88454e+24, -6.18416e+24, -4.78825e+21, 7.71564e+23, 4.48227e+23, -9.95045e+23, 9.33359e+21, 5.34698e+23, -2.14861e+24, 1.13297e+23, 1.62221e+25, 2.88454e+24, -6.18416e+24, -1.11595e+23, 2.95352e+23, 5.71433e+23, -5.57266e+24, 5.71791e+23, -1.32603e+23, 2.75217e+24, -1.84614e+24, -1.03443e+23, 2.62725e+23, -8.5707e+23, -2.95058e+23, 4.50214e+23, -3.20809e+24, -5.71433e+23, 2.88454e+24, 1.41094e+25, -1.89809e+24, 1.53457e+24, 7.4049e+24, -1.66359e+24, 5.5637e+23, -5.20694e+24, -3.72973e+23, -3.17227e+24, -2.34707e+24, -5.57266e+24, -1.89809e+24, 2.11973e+25, 3.65806e+23, -3.45852e+24, -7.04144e+24, -2.65947e+24, -2.91516e+24, 2.15731e+23, -6.18416e+24, 1.53457e+24, 2.36433e+25, -1.91384e+23, 2.47094e+22, -7.04199e+23, 2.11679e+23, 1.02309e+24, -2.02749e+23, 1.14643e+23, 7.71564e+23, -1.11595e+23, 8.50531e+24, 5.42073e+23, 3.59435e+23, -2.75217e+24, -3.45852e+24, 5.5637e+23, -7.74852e+22, 9.0469e+22, 5.7153e+23, -4.6346e+23, 1.71199e+23, 2.72025e+23, -4.00004e+23, -2.37068e+24, -1.53655e+24, 1.66602e+24, 5.56645e+24, 7.74058e+23, -3.99475e+23, -3.19616e+24, -7.283e+21, 4.48227e+23, 5.42073e+23, 1.81803e+25, 1.03443e+23, -7.04144e+24, 2.56331e+23, -1.22629e+24, 3.9097e+23, 7.20344e+23, -1.69467e+24, -7.85046e+24, 2.02434e+23, -1.48728e+24, -7.81113e+23, -5.25552e+23, 2.95352e+23, 3.59435e+23, 1.52469e+25, 1.84614e+24, -5.20694e+24, 7.20161e+23, -2.75099e+24, -3.41097e+22, 2.32348e+22, 1.28692e+22, -4.39792e+24, 8.5707e+23, -2.62725e+23, 1.32603e+23, -5.71791e+23, -4.50214e+23, 2.95058e+23, -3.20809e+24, -2.88454e+24, 5.71433e+23, -2.75217e+24, 1.03443e+23, 1.84614e+24, 1.41094e+25, -1.53457e+24, 1.89809e+24, 6.70446e+24, -2.65947e+24, 3.65806e+23, -2.91516e+24, -2.15731e+23, -6.18416e+24, -3.45852e+24, -7.04144e+24, -1.53457e+24, 2.36433e+25, -3.72973e+23, -1.66359e+24, -3.17227e+24, 2.34707e+24, -5.57266e+24, 5.5637e+23, -5.20694e+24, 1.89809e+24, 2.11973e+25, -1.11194e+23, -6.73475e+22, 4.27578e+22, 2.94382e+23, -2.19461e+23, 4.94998e+24, -4.7717e+23, -1.25698e+22, -8.50862e+23, 8.3908e+23, -9.85777e+23, 3.71742e+23, -1.50944e+23, -8.45701e+23, 5.95036e+23, 2.31905e+22, -1.43356e+23, -1.03388e+24, 6.63847e+23, -7.26744e+22, -1.98181e+24, 2.90617e+23, 5.01849e+24, -9.70839e+22, 8.54425e+22, 4.07668e+23, -7.74852e+22, 2.56331e+23, -4.7717e+23, 9.64564e+24, -2.25958e+23, 5.70103e+23, -2.9604e+24, -1.78436e+24, 3.06653e+23, -3.09079e+24, -7.05565e+23, -7.97466e+23, 1.92965e+22, 5.00419e+23, -9.22386e+23, 7.97591e+23, -2.06563e+24, 1.05034e+22, -3.91868e+23, 2.12582e+23, 9.0469e+22, 7.20161e+23, -1.25698e+22, 9.17972e+24, -2.46485e+24, -3.79622e+22, -8.06616e+23, -5.4148e+23, -4.24468e+23, 4.82281e+23, -1.08554e+23, -6.76218e+23, -1.62028e+24, 5.65405e+22, -2.00939e+24, -1.65961e+23, -2.11006e+24, 4.34349e+23, -8.63343e+22, -9.66809e+23, 4.13327e+23, 2.88723e+23, 3.13618e+23, -8.50862e+23, -2.25958e+23, 1.55014e+25, -1.63915e+24, -9.90917e+23, -5.49112e+24, -5.53032e+23, -2.13434e+24, -5.71849e+24, -1.46365e+23, 7.78109e+23, -3.85007e+23, 8.3908e+23, -2.46485e+24, 1.36199e+25, 1.4311e+23, -2.22809e+24, -2.00298e+24, 4.92253e+23, -4.41848e+23, 4.34134e+23, -1.08467e+24, -1.77561e+24, -9.7808e+23, 4.45023e+23, -1.97311e+23, -1.15266e+24, 7.62876e+23, -9.85777e+23, 5.70103e+23, -3.79622e+22, -1.63915e+24, 1.4311e+23, 7.50532e+24, -3.13731e+23, -1.05206e+23, -2.81935e+24, 1.81785e+24, 8.95619e+24, 4.84552e+23, -2.90456e+24, -1.45286e+24, 5.7153e+23, -1.22629e+24, 3.71742e+23, -2.9604e+24, -9.90917e+23, -3.13731e+23, 1.34608e+25, -1.89672e+24, 6.98781e+23, -1.71583e+24, -7.27749e+23, -1.39838e+24, -1.55715e+22, -1.07209e+24, -3.1767e+22, -4.6346e+23, -2.75099e+24, -1.50944e+23, -8.06616e+23, -2.22809e+24, -1.05206e+23, 1.56398e+25, -5.60363e+24, -5.29799e+22, -4.23447e+23, 4.69561e+21, -4.68905e+24, -1.31078e+24, -1.29475e+24, -5.39376e+24, -8.45701e+23, -1.78436e+24, -5.49112e+24, -2.81935e+24, -1.89672e+24, 2.08365e+25, 5.47585e+21, -2.86938e+24, -2.46587e+24, 5.95036e+23, -5.4148e+23, -2.00298e+24, 1.81785e+24, -5.60363e+24, 2.24978e+25, 1.72585e+24, 2.15674e+24, 5.07668e+24, 2.31905e+22, -4.24468e+23, 4.92253e+23, 4.54564e+24, -1.24338e+24, -1.11363e+23, -6.80899e+23, -1.66133e+24, 2.1412e+22, 4.24377e+23, -1.01559e+24, -8.38489e+22, -9.28075e+23, 8.19331e+24, -1.43356e+23, 4.82281e+23, -4.41848e+23, -1.24338e+24, 6.73286e+24, 4.45062e+23, -1.04594e+24, -1.78377e+24, -1.03388e+24, 3.06653e+23, -1.08554e+23, -5.53032e+23, 4.34134e+23, -1.11363e+23, 4.45062e+23, 7.69772e+24, -3.7104e+23, -1.20562e+23, -2.71937e+24, 1.84464e+24, 8.74891e+24, 6.63847e+23, -3.09079e+24, -2.13434e+24, -3.7104e+23, 1.39824e+25, -1.76747e+24, 4.40397e+23, -6.36859e+23, -8.05327e+23, -1.26983e+24, -7.26744e+22, -6.76218e+23, -1.08467e+24, -6.80899e+23, -1.04594e+24, -1.20562e+23, 1.51182e+25, -5.73288e+24, -1.22214e+23, -1.50242e+24, -1.54346e+24, -1.60913e+22, -4.8176e+24, -1.98181e+24, -7.05565e+23, -5.71849e+24, -2.71937e+24, -1.76747e+24, 2.1746e+25, 2.90617e+23, -1.62028e+24, -1.77561e+24, -1.66133e+24, -1.78377e+24, 1.84464e+24, -5.73288e+24, 2.15884e+25, -1.07222e+23, 4.10364e+21, 1.71199e+23, 3.9097e+23, -3.41097e+22, -7.97466e+23, 5.65405e+22, 6.98781e+23, -5.29799e+22, 2.1412e+22, 4.40397e+23, -1.22214e+23, 5.8278e+24, 9.47464e+23, 3.14588e+23, -2.29943e+24, -2.03179e+24, 1.42285e+23, -1.05496e+23, -2.3807e+24, -9.66118e+23, 4.27831e+23, 4.41426e+24, 3.75276e+23, 2.72025e+23, 7.20344e+23, 1.92965e+22, -1.71583e+24, -6.36859e+23, 9.47464e+23, 1.84566e+25, -1.23834e+24, -7.98139e+24, -2.39489e+24, -8.28714e+24, 1.54634e+23, -4.00004e+23, 2.32348e+22, -2.00939e+24, -4.23447e+23, 4.24377e+23, -1.50242e+24, 3.14588e+23, 1.39876e+25, 5.94211e+23, -3.77544e+24, -5.32027e+22, 2.84314e+23, -3.46969e+24, 6.1106e+23, -2.50088e+22, -2.37068e+24, -1.69467e+24, 1.28692e+22, 5.00419e+23, -1.65961e+23, -7.27749e+23, 4.69561e+21, -2.29943e+24, -1.23834e+24, 5.94211e+23, 7.60967e+24, -1.36831e+23, 8.83117e+23, 7.00245e+24, -1.38441e+24, -1.53655e+24, -7.85046e+24, -9.22386e+23, -1.39838e+24, -2.03179e+24, -7.98139e+24, -1.36831e+23, 2.32422e+25, 8.66224e+22, 1.66602e+24, -4.39792e+24, -2.11006e+24, -4.68905e+24, 1.42285e+23, -3.77544e+24, 8.83117e+23, 2.15983e+25, 3.59576e+24, 2.51238e+24, 9.82352e+24, 4.34349e+23, -1.01559e+24, -1.54346e+24, -1.05496e+23, -5.32027e+22, 6.89012e+24, 2.74064e+23, -3.48067e+24, 7.97591e+23, -8.63343e+22, -8.38489e+22, -8.05327e+23, -1.60913e+22, -2.3807e+24, -2.39489e+24, 2.84314e+23, 2.74064e+23, 7.93474e+24, 4.49296e+22, 9.31819e+23, 6.65223e+24, -2.06563e+24, -1.26983e+24, -9.66118e+23, -8.28714e+24, 4.49296e+22, 2.44652e+25, -9.66809e+23, -9.28075e+23, -4.8176e+24, 4.27831e+23, -3.46969e+24, -3.48067e+24, 9.31819e+23, 2.03753e+25, 2.03753e+25}; + + +void check(Epetra_FECrsMatrix &mat, + Teuchos::ParameterList ¶meter_list, + Epetra_FEVector &x1, + Epetra_FEVector &x2, + Epetra_FEVector &b) +{ + int ierr; + { + ML_Epetra::MultiLevelPreconditioner prec (mat, parameter_list); + x1.PutScalar (0); + ierr = prec.ApplyInverse (b, x1); + assert (ierr == 0); + } + { + ML_Epetra::MultiLevelPreconditioner prec (mat, parameter_list); + x2.PutScalar (0); + ierr = prec.ApplyInverse (b, x2); + assert (ierr == 0); + } + for (unsigned int j=0; j<5; ++j) + { + if (x1[0][j]!=x2[0][j]) + deallog << "FAIL: j=" << j << ": " << x1[0][j] << " != " << x2[0][j] << std::endl; + } + +} + +void run() +{ + int dim = 130; + int ierr; + + Epetra_MpiComm Comm (MPI_COMM_WORLD); + Epetra_Map map (dim, 0, Comm); + Epetra_FECrsMatrix mat (Copy, map, map, 30, false); + + unsigned int n = sizeof(mati)/sizeof(*mati); + + for (unsigned int i = 0; i < n; ++i) + { + ierr = mat.InsertGlobalValues (mati[i], 1, &matv[i], (int *) & matj[i]); + assert (ierr == 0); + } + + ierr = mat.GlobalAssemble (map, map, true); + assert (ierr == 0); + + ierr = mat.OptimizeStorage (); + assert (ierr == 0); + Epetra_FEVector x1 (map); + Epetra_FEVector x2 (map); + Epetra_FEVector b (map); + + b.PutScalar (1); + + { + + deallog << "NSSA:" << std::endl; + Teuchos::ParameterList parameter_list; + ML_Epetra::SetDefaults("NSSA", parameter_list); + parameter_list.set ("smoother: type", "Chebyshev"); + parameter_list.set("initialize random seed", true); + parameter_list.set ("ML output", 0); //or 10 for details + check(mat, parameter_list, x1, x2, b); + } + { + deallog << "SA Gauss-Seidel:" << std::endl; + Teuchos::ParameterList parameter_list; + ML_Epetra::SetDefaults ("SA", parameter_list); + parameter_list.set( "smoother: type","symmetric Gauss-Seidel"); + parameter_list.set("initialize random seed", true); + parameter_list.set ("ML output", 0); //or 10 for details + check(mat, parameter_list, x1, x2, b); + } + { + + deallog << "SA:" << std::endl; + Teuchos::ParameterList parameter_list; + ML_Epetra::SetDefaults ("SA", parameter_list); + parameter_list.set ("smoother: type", "Chebyshev"); + parameter_list.set("initialize random seed", true); + parameter_list.set ("ML output", 0); //or 10 for details + check(mat, parameter_list, x1, x2, b); + } + + +} + + + +int main (int argc, char **argv) +{ + Utilities::MPI::MPI_InitFinalize mpi_initialization (argc, argv, 1); + MPILogInitAll log; + run(); +} diff --git a/tests/trilinos/amg_nondeterministic_01.with_trilinos.geq.12.4.output b/tests/trilinos/amg_nondeterministic_01.with_trilinos.geq.12.4.output new file mode 100644 index 0000000000..8c20987910 --- /dev/null +++ b/tests/trilinos/amg_nondeterministic_01.with_trilinos.geq.12.4.output @@ -0,0 +1,4 @@ + +DEAL:0::NSSA: +DEAL:0::SA Gauss-Seidel: +DEAL:0::SA: diff --git a/tests/trilinos/amg_nondeterministic_02.cc b/tests/trilinos/amg_nondeterministic_02.cc new file mode 100644 index 0000000000..e43b6e7974 --- /dev/null +++ b/tests/trilinos/amg_nondeterministic_02.cc @@ -0,0 +1,145 @@ +// --------------------------------------------------------------------- +// +// Copyright (C) 2013 - 2015 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. +// +// --------------------------------------------------------------------- + +// Trilinos ML is non-deterministic up to Trilinos 12.4 and then only when the +// random seed is initialized correctly. This test checks this. Like _01 but +// using our deal.II data structures. + +// Note that we need to increase the size of the matrix to be >2000 from +// amg_nondeterministic_01, otherwise the default settings will just apply the +// coarse solver due to the default settings. + +#include "../tests.h" +#include +#include +#include + + +#include +#include + +unsigned int mati[]= {0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 30, 31, 32, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 34, 34, 34, 34, 34, 34, 34, 34, 35, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 38, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 40, 40, 40, 40, 40, 40, 40, 40, 41, 41, 41, 41, 41, 41, 42, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 46, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 49, 49, 49, 49, 49, 49, 49, 49, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 51, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 57, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 60, 60, 60, 60, 60, 60, 60, 60, 60, 61, 61, 61, 61, 61, 61, 61, 61, 61, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 63, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 69, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 72, 72, 72, 72, 72, 72, 72, 72, 72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 75, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 79, 80, 80, 80, 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81, 81, 81, 81, 81, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 83, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 87, 88, 88, 88, 88, 88, 88, 88, 88, 88, 89, 89, 89, 89, 89, 89, 89, 89, 89, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 91, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 97, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 100, 100, 100, 100, 100, 100, 100, 100, 100, 101, 101, 101, 101, 101, 101, 101, 101, 101, 102, 103, 104, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 106, 107, 107, 107, 107, 107, 107, 107, 107, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 109, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 112, 112, 112, 112, 112, 112, 113, 113, 113, 113, 113, 113, 113, 113, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 115, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 119, 120, 120, 120, 120, 120, 120, 120, 120, 120, 121, 121, 121, 121, 121, 121, 121, 121, 121, 122, 123, 124, 125, 125, 125, 125, 125, 125, 125, 125, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 127, 128, 128, 128, 128, 128, 128, 129, 129, 129, 129, 129, 129, 129, 129, 129}; +int matj[] = {0, 1, 2, 3, 4, 6, 7, 8, 10, 11, 13, 14, 15, 16, 17, 19, 20, 21, 22, 23, 25, 26, 27, 28, 29, 3, 4, 6, 8, 10, 13, 14, 16, 33, 34, 36, 39, 40, 5, 3, 4, 6, 8, 10, 13, 14, 16, 19, 20, 22, 25, 26, 28, 33, 34, 36, 39, 40, 43, 44, 47, 48, 3, 7, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 33, 37, 39, 41, 43, 45, 47, 49, 3, 4, 6, 8, 10, 13, 14, 16, 9, 3, 4, 6, 8, 10, 13, 14, 16, 19, 20, 22, 25, 26, 28, 3, 7, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 12, 3, 4, 6, 7, 8, 10, 11, 13, 14, 15, 16, 17, 3, 4, 6, 8, 10, 13, 14, 16, 33, 34, 36, 39, 40, 3, 7, 11, 13, 15, 17, 33, 37, 39, 41, 3, 4, 6, 8, 10, 13, 14, 16, 3, 7, 11, 13, 15, 17, 18, 3, 6, 7, 10, 11, 19, 20, 21, 22, 23, 25, 26, 27, 28, 29, 50, 52, 53, 54, 55, 56, 58, 59, 60, 61, 3, 6, 10, 19, 20, 22, 25, 26, 28, 33, 36, 43, 44, 47, 48, 50, 52, 54, 56, 58, 60, 74, 76, 78, 80, 3, 7, 11, 19, 21, 23, 25, 27, 29, 33, 37, 43, 45, 47, 49, 50, 53, 55, 56, 59, 61, 74, 77, 78, 81, 3, 6, 10, 19, 20, 22, 25, 26, 28, 50, 52, 54, 56, 58, 60, 3, 7, 11, 19, 21, 23, 25, 27, 29, 50, 53, 55, 56, 59, 61, 24, 3, 6, 7, 10, 11, 19, 20, 21, 22, 23, 25, 26, 27, 28, 29, 3, 6, 10, 19, 20, 22, 25, 26, 28, 33, 36, 43, 44, 47, 48, 3, 7, 11, 19, 21, 23, 25, 27, 29, 33, 37, 43, 45, 47, 49, 3, 6, 10, 19, 20, 22, 25, 26, 28, 3, 7, 11, 19, 21, 23, 25, 27, 29, 30, 31, 32, 4, 6, 7, 14, 15, 20, 21, 26, 27, 33, 34, 36, 37, 39, 40, 41, 43, 44, 45, 47, 48, 49, 4, 6, 14, 33, 34, 36, 39, 40, 35, 4, 6, 14, 20, 26, 33, 34, 36, 39, 40, 43, 44, 47, 48, 7, 15, 21, 27, 33, 37, 39, 41, 43, 45, 47, 49, 38, 4, 6, 7, 14, 15, 33, 34, 36, 37, 39, 40, 41, 4, 6, 14, 33, 34, 36, 39, 40, 7, 15, 33, 37, 39, 41, 42, 6, 7, 20, 21, 26, 27, 33, 36, 37, 43, 44, 45, 47, 48, 49, 52, 53, 58, 59, 74, 76, 77, 78, 80, 81, 6, 20, 26, 33, 36, 43, 44, 47, 48, 52, 58, 74, 76, 78, 80, 7, 21, 27, 33, 37, 43, 45, 47, 49, 53, 59, 74, 77, 78, 81, 46, 6, 7, 20, 21, 26, 27, 33, 36, 37, 43, 44, 45, 47, 48, 49, 6, 20, 26, 33, 36, 43, 44, 47, 48, 7, 21, 27, 33, 37, 43, 45, 47, 49, 19, 20, 21, 22, 23, 50, 52, 53, 54, 55, 56, 58, 59, 60, 61, 62, 64, 65, 66, 67, 68, 70, 71, 72, 73, 51, 19, 20, 22, 43, 44, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 19, 21, 23, 43, 45, 50, 53, 55, 56, 59, 61, 62, 65, 67, 68, 71, 73, 74, 77, 78, 81, 82, 85, 86, 89, 19, 20, 22, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 19, 21, 23, 50, 53, 55, 56, 59, 61, 62, 65, 67, 68, 71, 73, 19, 20, 21, 22, 23, 50, 52, 53, 54, 55, 56, 58, 59, 60, 61, 57, 19, 20, 22, 43, 44, 50, 52, 54, 56, 58, 60, 74, 76, 78, 80, 19, 21, 23, 43, 45, 50, 53, 55, 56, 59, 61, 74, 77, 78, 81, 19, 20, 22, 50, 52, 54, 56, 58, 60, 19, 21, 23, 50, 53, 55, 56, 59, 61, 50, 52, 53, 54, 55, 62, 64, 65, 66, 67, 68, 70, 71, 72, 73, 90, 92, 93, 94, 95, 96, 98, 99, 100, 101, 63, 50, 52, 54, 62, 64, 66, 68, 70, 72, 74, 76, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 114, 116, 118, 120, 50, 53, 55, 62, 65, 67, 68, 71, 73, 74, 77, 82, 85, 86, 89, 90, 93, 95, 96, 99, 101, 114, 117, 118, 121, 50, 52, 54, 62, 64, 66, 68, 70, 72, 90, 92, 94, 96, 98, 100, 50, 53, 55, 62, 65, 67, 68, 71, 73, 90, 93, 95, 96, 99, 101, 50, 52, 53, 54, 55, 62, 64, 65, 66, 67, 68, 70, 71, 72, 73, 69, 50, 52, 54, 62, 64, 66, 68, 70, 72, 74, 76, 82, 84, 86, 88, 50, 53, 55, 62, 65, 67, 68, 71, 73, 74, 77, 82, 85, 86, 89, 50, 52, 54, 62, 64, 66, 68, 70, 72, 50, 53, 55, 62, 65, 67, 68, 71, 73, 20, 21, 43, 44, 45, 52, 53, 58, 59, 64, 65, 70, 71, 74, 76, 77, 78, 80, 81, 82, 84, 85, 86, 88, 89, 75, 20, 43, 44, 52, 58, 64, 70, 74, 76, 78, 80, 82, 84, 86, 88, 21, 43, 45, 53, 59, 65, 71, 74, 77, 78, 81, 82, 85, 86, 89, 20, 21, 43, 44, 45, 52, 53, 58, 59, 74, 76, 77, 78, 80, 81, 79, 20, 43, 44, 52, 58, 74, 76, 78, 80, 21, 43, 45, 53, 59, 74, 77, 78, 81, 52, 53, 64, 65, 70, 71, 74, 76, 77, 82, 84, 85, 86, 88, 89, 92, 93, 98, 99, 114, 116, 117, 118, 120, 121, 83, 52, 64, 70, 74, 76, 82, 84, 86, 88, 92, 98, 114, 116, 118, 120, 53, 65, 71, 74, 77, 82, 85, 86, 89, 93, 99, 114, 117, 118, 121, 52, 53, 64, 65, 70, 71, 74, 76, 77, 82, 84, 85, 86, 88, 89, 87, 52, 64, 70, 74, 76, 82, 84, 86, 88, 53, 65, 71, 74, 77, 82, 85, 86, 89, 62, 64, 65, 66, 67, 90, 92, 93, 94, 95, 96, 98, 99, 100, 101, 105, 107, 108, 110, 111, 112, 113, 91, 62, 64, 66, 82, 84, 90, 92, 94, 96, 98, 100, 108, 110, 112, 114, 116, 118, 120, 126, 128, 62, 65, 67, 82, 85, 90, 93, 95, 96, 99, 101, 105, 107, 108, 111, 113, 114, 117, 118, 121, 125, 126, 129, 62, 64, 66, 90, 92, 94, 96, 98, 100, 108, 110, 112, 62, 65, 67, 90, 93, 95, 96, 99, 101, 105, 107, 108, 111, 113, 62, 64, 65, 66, 67, 90, 92, 93, 94, 95, 96, 98, 99, 100, 101, 97, 62, 64, 66, 82, 84, 90, 92, 94, 96, 98, 100, 114, 116, 118, 120, 62, 65, 67, 82, 85, 90, 93, 95, 96, 99, 101, 114, 117, 118, 121, 62, 64, 66, 90, 92, 94, 96, 98, 100, 62, 65, 67, 90, 93, 95, 96, 99, 101, 102, 103, 104, 90, 93, 95, 105, 107, 108, 111, 113, 114, 117, 125, 126, 129, 106, 90, 93, 95, 105, 107, 108, 111, 113, 90, 92, 93, 94, 95, 105, 107, 108, 110, 111, 112, 113, 109, 90, 92, 94, 108, 110, 112, 114, 116, 126, 128, 90, 93, 95, 105, 107, 108, 111, 113, 114, 117, 125, 126, 129, 90, 92, 94, 108, 110, 112, 90, 93, 95, 105, 107, 108, 111, 113, 64, 65, 82, 84, 85, 92, 93, 98, 99, 105, 110, 111, 114, 116, 117, 118, 120, 121, 125, 126, 128, 129, 115, 64, 82, 84, 92, 98, 110, 114, 116, 118, 120, 126, 128, 65, 82, 85, 93, 99, 105, 111, 114, 117, 118, 121, 125, 126, 129, 64, 65, 82, 84, 85, 92, 93, 98, 99, 114, 116, 117, 118, 120, 121, 119, 64, 82, 84, 92, 98, 114, 116, 118, 120, 65, 82, 85, 93, 99, 114, 117, 118, 121, 122, 123, 124, 93, 105, 111, 114, 117, 125, 126, 129, 92, 93, 105, 110, 111, 114, 116, 117, 125, 126, 128, 129, 127, 92, 110, 114, 116, 126, 128, 93, 105, 111, 114, 117, 125, 126, 129, 129}; +double matv[] = {2.15674e+24, 1.72585e+24, 5.01849e+24, 4.94998e+24, 2.31905e+22, -1.25698e+22, -4.7717e+23, -1.43356e+23, 8.3908e+23, -8.50862e+23, -1.03388e+24, -7.26744e+22, 6.63847e+23, 2.90617e+23, -1.98181e+24, -1.11194e+23, 4.27578e+22, -6.73475e+22, -2.19461e+23, 2.94382e+23, -9.85777e+23, -1.50944e+23, 3.71742e+23, 5.95036e+23, -8.45701e+23, 2.31905e+22, 4.54564e+24, -4.24468e+23, -1.24338e+24, 4.92253e+23, -1.11363e+23, -6.80899e+23, -1.66133e+24, 2.1412e+22, -1.01559e+24, 4.24377e+23, -8.38489e+22, -9.28075e+23, 5.07668e+24, -1.25698e+22, -4.24468e+23, 9.17972e+24, 4.82281e+23, -2.46485e+24, -1.08554e+23, -6.76218e+23, -1.62028e+24, 1.05034e+22, -3.91868e+23, 2.12582e+23, -3.79622e+22, -8.06616e+23, -5.4148e+23, 5.65405e+22, 4.34349e+23, -2.00939e+24, -8.63343e+22, -9.66809e+23, 9.0469e+22, 7.20161e+23, -1.65961e+23, -2.11006e+24, -4.7717e+23, 9.64564e+24, -2.25958e+23, 3.06653e+23, -3.09079e+24, -7.05565e+23, -9.70839e+22, 8.54425e+22, 4.07668e+23, 5.70103e+23, -2.9604e+24, -1.78436e+24, -7.97466e+23, 1.92965e+22, 7.97591e+23, -2.06563e+24, -7.74852e+22, 2.56331e+23, 5.00419e+23, -9.22386e+23, -1.43356e+23, -1.24338e+24, 4.82281e+23, 6.73286e+24, -4.41848e+23, 4.45062e+23, -1.04594e+24, -1.78377e+24, 8.19331e+24, 8.3908e+23, 4.92253e+23, -2.46485e+24, -4.41848e+23, 1.36199e+25, 4.34134e+23, -1.08467e+24, -1.77561e+24, -1.46365e+23, 7.78109e+23, -3.85007e+23, 1.4311e+23, -2.22809e+24, -2.00298e+24, -8.50862e+23, -2.25958e+23, 1.55014e+25, -5.53032e+23, -2.13434e+24, -5.71849e+24, 4.13327e+23, 2.88723e+23, 3.13618e+23, -1.63915e+24, -9.90917e+23, -5.49112e+24, 8.74891e+24, -1.03388e+24, -1.11363e+23, -1.08554e+23, 3.06653e+23, 4.45062e+23, 4.34134e+23, -5.53032e+23, 7.69772e+24, -1.20562e+23, -3.7104e+23, 1.84464e+24, -2.71937e+24, -7.26744e+22, -6.80899e+23, -6.76218e+23, -1.04594e+24, -1.08467e+24, -1.20562e+23, 1.51182e+25, -5.73288e+24, -1.22214e+23, -1.54346e+24, -1.50242e+24, -1.60913e+22, -4.8176e+24, 6.63847e+23, -3.09079e+24, -2.13434e+24, -3.7104e+23, 1.39824e+25, -1.76747e+24, 4.40397e+23, -6.36859e+23, -8.05327e+23, -1.26983e+24, 2.90617e+23, -1.66133e+24, -1.62028e+24, -1.78377e+24, -1.77561e+24, 1.84464e+24, -5.73288e+24, 2.15884e+25, -1.98181e+24, -7.05565e+23, -5.71849e+24, -2.71937e+24, -1.76747e+24, 2.1746e+25, 4.09803e+24, -1.11194e+23, 1.05034e+22, -9.70839e+22, -1.46365e+23, 4.13327e+23, 5.03315e+24, 5.24046e+22, -3.85558e+23, 1.47208e+24, -1.35226e+24, -9.7808e+23, -1.55715e+22, 4.84552e+23, 5.47585e+21, -1.31078e+24, 3.00243e+23, 7.13032e+22, 8.22448e+21, -3.49267e+23, 6.18903e+22, 8.92724e+23, -2.83224e+23, 2.09651e+22, 9.79334e+23, 3.75992e+23, 4.27578e+22, -3.91868e+23, 7.78109e+23, 5.24046e+22, 9.3568e+24, -1.89011e+24, -1.97311e+23, -1.07209e+24, -2.86938e+24, 4.10364e+21, 1.54634e+23, 2.11679e+23, -1.48728e+24, -2.50088e+22, 8.66224e+22, -4.04347e+22, -1.85812e+23, 2.4756e+23, 2.69939e+23, -1.59713e+24, -8.7401e+23, -1.25864e+23, 5.34698e+23, 5.71791e+23, -1.66359e+24, -6.73475e+22, 8.54425e+22, 2.88723e+23, -3.85558e+23, 9.88784e+24, -6.96799e+23, 4.45023e+23, -2.90456e+24, -1.29475e+24, -1.07222e+23, 3.75276e+23, -7.04199e+23, -3.99475e+23, 6.1106e+23, -1.38441e+24, 1.86487e+23, -1.20613e+23, 8.19272e+23, -9.11457e+23, -2.37952e+24, -3.29011e+24, -3.32754e+21, -4.78825e+21, -1.32603e+23, 3.65806e+23, -2.19461e+23, 2.12582e+23, -3.85007e+23, 1.47208e+24, -1.89011e+24, 1.4196e+25, 7.62876e+23, -3.1767e+22, -2.46587e+24, 2.72683e+23, 5.79824e+23, -9.25358e+22, -8.1378e+23, -1.75649e+24, -3.24772e+24, 2.94382e+23, 4.07668e+23, 3.13618e+23, -1.35226e+24, -6.96799e+23, 1.56564e+25, -1.15266e+24, -1.45286e+24, -5.39376e+24, -8.40737e+23, 4.04253e+22, 2.11472e+22, 3.18598e+24, 2.71858e+23, -4.61191e+24, 8.95619e+24, -9.85777e+23, -3.79622e+22, 5.70103e+23, 1.4311e+23, -1.63915e+24, -9.7808e+23, -1.97311e+23, 4.45023e+23, 7.62876e+23, -1.15266e+24, 7.50532e+24, -1.05206e+23, -3.13731e+23, 1.81785e+24, -2.81935e+24, -1.50944e+23, -8.06616e+23, -2.22809e+24, -1.55715e+22, -1.07209e+24, -3.1767e+22, -1.05206e+23, 1.56398e+25, -5.60363e+24, -5.29799e+22, -4.23447e+23, -4.6346e+23, -2.75099e+24, 4.69561e+21, -4.68905e+24, 3.71742e+23, -2.9604e+24, -9.90917e+23, 4.84552e+23, -2.90456e+24, -1.45286e+24, -3.13731e+23, 1.34608e+25, -1.89672e+24, 6.98781e+23, -1.71583e+24, 5.7153e+23, -1.22629e+24, -7.27749e+23, -1.39838e+24, 5.95036e+23, -5.4148e+23, -2.00298e+24, 5.47585e+21, -2.86938e+24, -2.46587e+24, 1.81785e+24, -5.60363e+24, 2.24978e+25, -8.45701e+23, -1.78436e+24, -5.49112e+24, -1.31078e+24, -1.29475e+24, -5.39376e+24, -2.81935e+24, -1.89672e+24, 2.08365e+25, 2.51238e+24, 3.59576e+24, 4.41426e+24, 2.1412e+22, 5.65405e+22, -7.97466e+23, -1.22214e+23, 4.40397e+23, 4.10364e+21, -1.07222e+23, -5.29799e+22, 6.98781e+23, 5.8278e+24, -1.05496e+23, 3.14588e+23, 9.47464e+23, -2.3807e+24, 4.27831e+23, -9.66118e+23, 1.71199e+23, -3.41097e+22, 3.9097e+23, -2.29943e+24, 1.42285e+23, -2.03179e+24, -1.01559e+24, 4.34349e+23, -1.54346e+24, -1.05496e+23, 6.89012e+24, -5.32027e+22, 2.74064e+23, -3.48067e+24, 9.82352e+24, 4.24377e+23, -2.00939e+24, -1.50242e+24, 1.54634e+23, -4.23447e+23, 3.14588e+23, -5.32027e+22, 1.39876e+25, 2.84314e+23, -3.46969e+24, -4.00004e+23, 2.32348e+22, 5.94211e+23, -3.77544e+24, 1.92965e+22, -6.36859e+23, 3.75276e+23, -1.71583e+24, 9.47464e+23, 1.84566e+25, -2.39489e+24, -8.28714e+24, 2.72025e+23, 7.20344e+23, -1.23834e+24, -7.98139e+24, 6.65223e+24, -8.38489e+22, -8.63343e+22, 7.97591e+23, -1.60913e+22, -8.05327e+23, -2.3807e+24, 2.74064e+23, 2.84314e+23, -2.39489e+24, 7.93474e+24, 9.31819e+23, 4.49296e+22, -9.28075e+23, -9.66809e+23, -4.8176e+24, 4.27831e+23, -3.48067e+24, -3.46969e+24, 9.31819e+23, 2.03753e+25, -2.06563e+24, -1.26983e+24, -9.66118e+23, -8.28714e+24, 4.49296e+22, 2.44652e+25, 5.56645e+24, 9.0469e+22, -7.74852e+22, 2.11679e+23, -7.04199e+23, -4.6346e+23, 5.7153e+23, 1.71199e+23, -4.00004e+23, 2.72025e+23, 8.50531e+24, 3.59435e+23, 5.42073e+23, -2.37068e+24, 1.66602e+24, -1.53655e+24, 2.47094e+22, -1.91384e+23, -2.02749e+23, 1.02309e+24, -1.14643e+23, -1.11595e+23, 7.71564e+23, 2.75217e+24, 5.5637e+23, -3.45852e+24, 7.20161e+23, -1.48728e+24, -2.75099e+24, -3.41097e+22, 2.32348e+22, 3.59435e+23, 1.52469e+25, 1.28692e+22, -4.39792e+24, 2.02434e+23, -7.81113e+23, 5.25552e+23, 2.95352e+23, -1.84614e+24, -5.20694e+24, 2.56331e+23, -3.99475e+23, -1.22629e+24, 3.9097e+23, 7.20344e+23, 5.42073e+23, 1.81803e+25, -1.69467e+24, -7.85046e+24, 7.74058e+23, -3.19616e+24, 7.283e+21, 4.48227e+23, -1.03443e+23, -7.04144e+24, 7.00245e+24, -1.65961e+23, 5.00419e+23, -2.50088e+22, 6.1106e+23, 4.69561e+21, -7.27749e+23, -2.29943e+24, 5.94211e+23, -1.23834e+24, -2.37068e+24, 1.28692e+22, -1.69467e+24, 7.60967e+24, 8.83117e+23, -1.36831e+23, -2.11006e+24, 8.66224e+22, -4.68905e+24, 1.42285e+23, -3.77544e+24, 1.66602e+24, -4.39792e+24, 8.83117e+23, 2.15983e+25, -9.22386e+23, -1.38441e+24, -1.39838e+24, -2.03179e+24, -7.98139e+24, -1.53655e+24, -7.85046e+24, -1.36831e+23, 2.32422e+25, 3.00243e+23, -4.04347e+22, 1.86487e+23, 2.72683e+23, -8.40737e+23, 9.60816e+24, -2.15129e+23, 2.15129e+23, -1.99117e+24, 1.99117e+24, -9.65305e+23, 1.75431e+23, -7.5964e+23, -3.97096e+23, 2.66931e+24, -3.00243e+23, -1.86487e+23, 4.04347e+22, 8.40737e+23, -2.72683e+23, -9.65305e+23, 7.5964e+23, -1.75431e+23, -2.66931e+24, 3.97096e+23, 4.80408e+24, 7.13032e+22, -1.85812e+23, 5.79824e+23, 2.47094e+22, 2.02434e+23, -2.15129e+23, 9.41268e+24, -1.3454e+24, 6.19341e+23, -1.75311e+24, -2.24172e+24, 8.22448e+21, -1.20613e+23, 4.04253e+22, 9.24394e+22, -2.0139e+24, -8.41236e+22, -5.04239e+23, -9.95045e+23, 2.62725e+23, -3.72973e+23, -1.91384e+23, 7.74058e+23, 8.5707e+23, -2.65947e+24, 8.22448e+21, -1.20613e+23, 4.04253e+22, -1.91384e+23, 7.74058e+23, 2.15129e+23, 9.41268e+24, -1.3454e+24, -9.24394e+22, -2.0139e+24, -8.41236e+22, 7.13032e+22, -1.85812e+23, 5.79824e+23, -6.19341e+23, -1.75311e+24, -2.24172e+24, 5.04239e+23, -9.95045e+23, -8.5707e+23, -2.65947e+24, 2.47094e+22, 2.02434e+23, -2.62725e+23, -3.72973e+23, -3.49267e+23, 2.4756e+23, -9.25358e+22, -1.99117e+24, -1.3454e+24, 1.45606e+25, -2.17274e+24, -4.6608e+23, -3.51968e+24, 6.18903e+22, 8.19272e+23, 2.11472e+22, -5.05634e+20, -2.75293e+24, -3.97441e+24, 6.18903e+22, 8.19272e+23, 2.11472e+22, 1.99117e+24, -1.3454e+24, 1.45606e+25, 5.05634e+20, -2.75293e+24, -3.97441e+24, -3.49267e+23, 2.4756e+23, -9.25358e+22, 2.17274e+24, -4.6608e+23, -3.51968e+24, 8.92724e+23, 2.69939e+23, -9.11457e+23, -8.1378e+23, 3.18598e+24, -9.65305e+23, 6.19341e+23, -9.24394e+22, -2.17274e+24, 5.05634e+20, 1.58185e+25, 9.67609e+22, 1.78565e+22, -4.9018e+24, 4.70184e+24, 8.11652e+24, -2.83224e+23, -1.59713e+24, -1.75649e+24, -2.02749e+23, -7.81113e+23, 1.75431e+23, -1.75311e+24, -4.6608e+23, 9.67609e+22, 1.40287e+25, -3.87943e+24, 7.06635e+23, -2.14861e+24, -2.95058e+23, -3.17227e+24, 2.09651e+22, -2.37952e+24, 2.71858e+23, 1.02309e+24, -3.19616e+24, -7.5964e+23, -2.0139e+24, -2.75293e+24, 1.78565e+22, 1.50719e+25, -3.62092e+24, -1.89869e+23, 9.33359e+21, 4.50214e+23, -2.91516e+24, 9.79334e+23, -8.7401e+23, -3.24772e+24, -3.97096e+23, -2.24172e+24, -3.51968e+24, -4.9018e+24, -3.87943e+24, 2.07577e+25, 3.75992e+23, -3.29011e+24, -4.61191e+24, 2.66931e+24, -8.41236e+22, -3.97441e+24, 4.70184e+24, -3.62092e+24, 2.25766e+25, -3.00243e+23, 8.22448e+21, 7.13032e+22, 6.18903e+22, -3.49267e+23, 5.03315e+24, -3.85558e+23, 5.24046e+22, -1.35226e+24, 1.47208e+24, -8.92724e+23, 2.09651e+22, -2.83224e+23, 3.75992e+23, 9.79334e+23, -1.11194e+23, -9.70839e+22, 1.05034e+22, 4.13327e+23, -1.46365e+23, -9.7808e+23, 4.84552e+23, -1.55715e+22, -1.31078e+24, 5.47585e+21, 4.09803e+24, -1.86487e+23, -1.20613e+23, 8.19272e+23, -3.85558e+23, 9.88784e+24, -6.96799e+23, 9.11457e+23, -2.37952e+24, -3.29011e+24, 3.32754e+21, -4.78825e+21, -7.04199e+23, -3.99475e+23, 1.32603e+23, 3.65806e+23, -6.73475e+22, 8.54425e+22, 2.88723e+23, 4.45023e+23, -2.90456e+24, -1.29475e+24, -1.07222e+23, 3.75276e+23, 6.1106e+23, -1.38441e+24, 4.04347e+22, -1.85812e+23, 2.4756e+23, 5.24046e+22, 9.3568e+24, -1.89011e+24, -2.69939e+23, -1.59713e+24, -8.7401e+23, 1.25864e+23, 5.34698e+23, 2.11679e+23, -1.48728e+24, -5.71791e+23, -1.66359e+24, 4.27578e+22, -3.91868e+23, 7.78109e+23, -1.97311e+23, -1.07209e+24, -2.86938e+24, 4.10364e+21, 1.54634e+23, -2.50088e+22, 8.66224e+22, 8.40737e+23, 4.04253e+22, 2.11472e+22, -1.35226e+24, -6.96799e+23, 1.56564e+25, -3.18598e+24, 2.71858e+23, -4.61191e+24, 2.94382e+23, 4.07668e+23, 3.13618e+23, -1.15266e+24, -1.45286e+24, -5.39376e+24, -2.72683e+23, 5.79824e+23, -9.25358e+22, 1.47208e+24, -1.89011e+24, 1.4196e+25, 8.1378e+23, -1.75649e+24, -3.24772e+24, -2.19461e+23, 2.12582e+23, -3.85007e+23, 7.62876e+23, -3.1767e+22, -2.46587e+24, -9.65305e+23, 9.24394e+22, -6.19341e+23, -5.05634e+20, 2.17274e+24, -8.92724e+23, 9.11457e+23, -2.69939e+23, -3.18598e+24, 8.1378e+23, 1.58185e+25, -1.78565e+22, -9.67609e+22, -4.70184e+24, 4.9018e+24, 7.70196e+24, 7.5964e+23, -2.0139e+24, -2.75293e+24, 2.09651e+22, -2.37952e+24, 2.71858e+23, -1.78565e+22, 1.50719e+25, -3.62092e+24, 1.89869e+23, 9.33359e+21, 1.02309e+24, -3.19616e+24, -4.50214e+23, -2.91516e+24, -1.75431e+23, -1.75311e+24, -4.6608e+23, -2.83224e+23, -1.59713e+24, -1.75649e+24, -9.67609e+22, 1.40287e+25, -3.87943e+24, -7.06635e+23, -2.14861e+24, -2.02749e+23, -7.81113e+23, 2.95058e+23, -3.17227e+24, -2.66931e+24, -8.41236e+22, -3.97441e+24, 3.75992e+23, -3.29011e+24, -4.61191e+24, -4.70184e+24, -3.62092e+24, 2.25766e+25, 3.97096e+23, -2.24172e+24, -3.51968e+24, 9.79334e+23, -8.7401e+23, -3.24772e+24, 4.9018e+24, -3.87943e+24, 2.07577e+25, -1.25864e+23, -3.32754e+21, -1.14643e+23, 5.25552e+23, 7.283e+21, -5.04239e+23, 5.04239e+23, 7.06635e+23, -1.89869e+23, 3.32754e+21, 1.25864e+23, 1.89869e+23, -7.06635e+23, 9.92513e+24, -1.13297e+23, 1.13297e+23, -3.20809e+24, -2.34707e+24, 2.15731e+23, 1.14643e+23, -7.283e+21, -5.25552e+23, -3.20809e+24, -2.15731e+23, 2.34707e+24, 4.96257e+24, 5.34698e+23, -1.11595e+23, 2.95352e+23, -9.95045e+23, -2.14861e+24, -4.78825e+21, 9.33359e+21, -1.13297e+23, 1.62221e+25, -5.71433e+23, -5.57266e+24, 7.71564e+23, 4.48227e+23, -2.88454e+24, -6.18416e+24, -4.78825e+21, 7.71564e+23, 4.48227e+23, -9.95045e+23, 9.33359e+21, 5.34698e+23, -2.14861e+24, 1.13297e+23, 1.62221e+25, 2.88454e+24, -6.18416e+24, -1.11595e+23, 2.95352e+23, 5.71433e+23, -5.57266e+24, 5.71791e+23, -1.32603e+23, 2.75217e+24, -1.84614e+24, -1.03443e+23, 2.62725e+23, -8.5707e+23, -2.95058e+23, 4.50214e+23, -3.20809e+24, -5.71433e+23, 2.88454e+24, 1.41094e+25, -1.89809e+24, 1.53457e+24, 7.4049e+24, -1.66359e+24, 5.5637e+23, -5.20694e+24, -3.72973e+23, -3.17227e+24, -2.34707e+24, -5.57266e+24, -1.89809e+24, 2.11973e+25, 3.65806e+23, -3.45852e+24, -7.04144e+24, -2.65947e+24, -2.91516e+24, 2.15731e+23, -6.18416e+24, 1.53457e+24, 2.36433e+25, -1.91384e+23, 2.47094e+22, -7.04199e+23, 2.11679e+23, 1.02309e+24, -2.02749e+23, 1.14643e+23, 7.71564e+23, -1.11595e+23, 8.50531e+24, 5.42073e+23, 3.59435e+23, -2.75217e+24, -3.45852e+24, 5.5637e+23, -7.74852e+22, 9.0469e+22, 5.7153e+23, -4.6346e+23, 1.71199e+23, 2.72025e+23, -4.00004e+23, -2.37068e+24, -1.53655e+24, 1.66602e+24, 5.56645e+24, 7.74058e+23, -3.99475e+23, -3.19616e+24, -7.283e+21, 4.48227e+23, 5.42073e+23, 1.81803e+25, 1.03443e+23, -7.04144e+24, 2.56331e+23, -1.22629e+24, 3.9097e+23, 7.20344e+23, -1.69467e+24, -7.85046e+24, 2.02434e+23, -1.48728e+24, -7.81113e+23, -5.25552e+23, 2.95352e+23, 3.59435e+23, 1.52469e+25, 1.84614e+24, -5.20694e+24, 7.20161e+23, -2.75099e+24, -3.41097e+22, 2.32348e+22, 1.28692e+22, -4.39792e+24, 8.5707e+23, -2.62725e+23, 1.32603e+23, -5.71791e+23, -4.50214e+23, 2.95058e+23, -3.20809e+24, -2.88454e+24, 5.71433e+23, -2.75217e+24, 1.03443e+23, 1.84614e+24, 1.41094e+25, -1.53457e+24, 1.89809e+24, 6.70446e+24, -2.65947e+24, 3.65806e+23, -2.91516e+24, -2.15731e+23, -6.18416e+24, -3.45852e+24, -7.04144e+24, -1.53457e+24, 2.36433e+25, -3.72973e+23, -1.66359e+24, -3.17227e+24, 2.34707e+24, -5.57266e+24, 5.5637e+23, -5.20694e+24, 1.89809e+24, 2.11973e+25, -1.11194e+23, -6.73475e+22, 4.27578e+22, 2.94382e+23, -2.19461e+23, 4.94998e+24, -4.7717e+23, -1.25698e+22, -8.50862e+23, 8.3908e+23, -9.85777e+23, 3.71742e+23, -1.50944e+23, -8.45701e+23, 5.95036e+23, 2.31905e+22, -1.43356e+23, -1.03388e+24, 6.63847e+23, -7.26744e+22, -1.98181e+24, 2.90617e+23, 5.01849e+24, -9.70839e+22, 8.54425e+22, 4.07668e+23, -7.74852e+22, 2.56331e+23, -4.7717e+23, 9.64564e+24, -2.25958e+23, 5.70103e+23, -2.9604e+24, -1.78436e+24, 3.06653e+23, -3.09079e+24, -7.05565e+23, -7.97466e+23, 1.92965e+22, 5.00419e+23, -9.22386e+23, 7.97591e+23, -2.06563e+24, 1.05034e+22, -3.91868e+23, 2.12582e+23, 9.0469e+22, 7.20161e+23, -1.25698e+22, 9.17972e+24, -2.46485e+24, -3.79622e+22, -8.06616e+23, -5.4148e+23, -4.24468e+23, 4.82281e+23, -1.08554e+23, -6.76218e+23, -1.62028e+24, 5.65405e+22, -2.00939e+24, -1.65961e+23, -2.11006e+24, 4.34349e+23, -8.63343e+22, -9.66809e+23, 4.13327e+23, 2.88723e+23, 3.13618e+23, -8.50862e+23, -2.25958e+23, 1.55014e+25, -1.63915e+24, -9.90917e+23, -5.49112e+24, -5.53032e+23, -2.13434e+24, -5.71849e+24, -1.46365e+23, 7.78109e+23, -3.85007e+23, 8.3908e+23, -2.46485e+24, 1.36199e+25, 1.4311e+23, -2.22809e+24, -2.00298e+24, 4.92253e+23, -4.41848e+23, 4.34134e+23, -1.08467e+24, -1.77561e+24, -9.7808e+23, 4.45023e+23, -1.97311e+23, -1.15266e+24, 7.62876e+23, -9.85777e+23, 5.70103e+23, -3.79622e+22, -1.63915e+24, 1.4311e+23, 7.50532e+24, -3.13731e+23, -1.05206e+23, -2.81935e+24, 1.81785e+24, 8.95619e+24, 4.84552e+23, -2.90456e+24, -1.45286e+24, 5.7153e+23, -1.22629e+24, 3.71742e+23, -2.9604e+24, -9.90917e+23, -3.13731e+23, 1.34608e+25, -1.89672e+24, 6.98781e+23, -1.71583e+24, -7.27749e+23, -1.39838e+24, -1.55715e+22, -1.07209e+24, -3.1767e+22, -4.6346e+23, -2.75099e+24, -1.50944e+23, -8.06616e+23, -2.22809e+24, -1.05206e+23, 1.56398e+25, -5.60363e+24, -5.29799e+22, -4.23447e+23, 4.69561e+21, -4.68905e+24, -1.31078e+24, -1.29475e+24, -5.39376e+24, -8.45701e+23, -1.78436e+24, -5.49112e+24, -2.81935e+24, -1.89672e+24, 2.08365e+25, 5.47585e+21, -2.86938e+24, -2.46587e+24, 5.95036e+23, -5.4148e+23, -2.00298e+24, 1.81785e+24, -5.60363e+24, 2.24978e+25, 1.72585e+24, 2.15674e+24, 5.07668e+24, 2.31905e+22, -4.24468e+23, 4.92253e+23, 4.54564e+24, -1.24338e+24, -1.11363e+23, -6.80899e+23, -1.66133e+24, 2.1412e+22, 4.24377e+23, -1.01559e+24, -8.38489e+22, -9.28075e+23, 8.19331e+24, -1.43356e+23, 4.82281e+23, -4.41848e+23, -1.24338e+24, 6.73286e+24, 4.45062e+23, -1.04594e+24, -1.78377e+24, -1.03388e+24, 3.06653e+23, -1.08554e+23, -5.53032e+23, 4.34134e+23, -1.11363e+23, 4.45062e+23, 7.69772e+24, -3.7104e+23, -1.20562e+23, -2.71937e+24, 1.84464e+24, 8.74891e+24, 6.63847e+23, -3.09079e+24, -2.13434e+24, -3.7104e+23, 1.39824e+25, -1.76747e+24, 4.40397e+23, -6.36859e+23, -8.05327e+23, -1.26983e+24, -7.26744e+22, -6.76218e+23, -1.08467e+24, -6.80899e+23, -1.04594e+24, -1.20562e+23, 1.51182e+25, -5.73288e+24, -1.22214e+23, -1.50242e+24, -1.54346e+24, -1.60913e+22, -4.8176e+24, -1.98181e+24, -7.05565e+23, -5.71849e+24, -2.71937e+24, -1.76747e+24, 2.1746e+25, 2.90617e+23, -1.62028e+24, -1.77561e+24, -1.66133e+24, -1.78377e+24, 1.84464e+24, -5.73288e+24, 2.15884e+25, -1.07222e+23, 4.10364e+21, 1.71199e+23, 3.9097e+23, -3.41097e+22, -7.97466e+23, 5.65405e+22, 6.98781e+23, -5.29799e+22, 2.1412e+22, 4.40397e+23, -1.22214e+23, 5.8278e+24, 9.47464e+23, 3.14588e+23, -2.29943e+24, -2.03179e+24, 1.42285e+23, -1.05496e+23, -2.3807e+24, -9.66118e+23, 4.27831e+23, 4.41426e+24, 3.75276e+23, 2.72025e+23, 7.20344e+23, 1.92965e+22, -1.71583e+24, -6.36859e+23, 9.47464e+23, 1.84566e+25, -1.23834e+24, -7.98139e+24, -2.39489e+24, -8.28714e+24, 1.54634e+23, -4.00004e+23, 2.32348e+22, -2.00939e+24, -4.23447e+23, 4.24377e+23, -1.50242e+24, 3.14588e+23, 1.39876e+25, 5.94211e+23, -3.77544e+24, -5.32027e+22, 2.84314e+23, -3.46969e+24, 6.1106e+23, -2.50088e+22, -2.37068e+24, -1.69467e+24, 1.28692e+22, 5.00419e+23, -1.65961e+23, -7.27749e+23, 4.69561e+21, -2.29943e+24, -1.23834e+24, 5.94211e+23, 7.60967e+24, -1.36831e+23, 8.83117e+23, 7.00245e+24, -1.38441e+24, -1.53655e+24, -7.85046e+24, -9.22386e+23, -1.39838e+24, -2.03179e+24, -7.98139e+24, -1.36831e+23, 2.32422e+25, 8.66224e+22, 1.66602e+24, -4.39792e+24, -2.11006e+24, -4.68905e+24, 1.42285e+23, -3.77544e+24, 8.83117e+23, 2.15983e+25, 3.59576e+24, 2.51238e+24, 9.82352e+24, 4.34349e+23, -1.01559e+24, -1.54346e+24, -1.05496e+23, -5.32027e+22, 6.89012e+24, 2.74064e+23, -3.48067e+24, 7.97591e+23, -8.63343e+22, -8.38489e+22, -8.05327e+23, -1.60913e+22, -2.3807e+24, -2.39489e+24, 2.84314e+23, 2.74064e+23, 7.93474e+24, 4.49296e+22, 9.31819e+23, 6.65223e+24, -2.06563e+24, -1.26983e+24, -9.66118e+23, -8.28714e+24, 4.49296e+22, 2.44652e+25, -9.66809e+23, -9.28075e+23, -4.8176e+24, 4.27831e+23, -3.46969e+24, -3.48067e+24, 9.31819e+23, 2.03753e+25, 2.03753e+25}; + + +void run() +{ + int dim = 2300; + int ierr; + const unsigned int myid = Utilities::MPI::this_mpi_process(MPI_COMM_WORLD); + unsigned int numproc = Utilities::MPI::n_mpi_processes (MPI_COMM_WORLD); + + IndexSet owned(dim); + + if (myid==0) + owned.add_range(0,dim/2); + else + owned.add_range(dim/2,dim); + if (numproc==1) + owned.add_range(0,dim); + + + TrilinosWrappers::SparsityPattern sp(owned); + + unsigned int n = sizeof(mati)/sizeof(*mati); + + for (unsigned int i = 0; i < n; ++i) + sp.add(mati[i], matj[i]); + + for (unsigned int i = 0; i < dim; ++i) + sp.add(i,i); + + sp.compress(); + + TrilinosWrappers::SparseMatrix mat(sp); + TrilinosWrappers::MPI::Vector x1(owned, MPI_COMM_WORLD); + TrilinosWrappers::MPI::Vector x2(owned, MPI_COMM_WORLD); + TrilinosWrappers::MPI::Vector b(owned, MPI_COMM_WORLD); + + for (unsigned int i = 0; i < dim; ++i) + mat.set(i,i,1.0); + + + for (unsigned int i = 0; i < n; ++i) + { + mat.set(mati[i], matj[i], matv[i]); + b(mati[i])=1.0; + } + mat.compress(VectorOperation::insert); + b.compress(VectorOperation::insert); + + deallog << "SA:" << std::endl; + + TrilinosWrappers::PreconditionAMG::AdditionalData data; + data.elliptic = true; + + { + TrilinosWrappers::PreconditionAMG prec; + prec.initialize(mat, data); + prec.vmult(x1, b); + } + { + TrilinosWrappers::PreconditionAMG prec; + prec.initialize(mat, data); + prec.vmult(x2, b); + } + + if (myid==0) + { + for (unsigned int j=0; j<10; ++j) + { + if (x1[j]!=x2[j]) + deallog << "FAIL: j=" << j << ": " << x1[j] << " != " << x2[j] << std::endl; + + } + } + + deallog << "NSSA:" << std::endl; + data.elliptic = false; + + { + TrilinosWrappers::PreconditionAMG prec; + // prec.initialize(mat, parameter_list); + prec.initialize(mat, data); + prec.vmult(x1, b); + } + { + TrilinosWrappers::PreconditionAMG prec; + // prec.initialize(mat, parameter_list); + prec.initialize(mat, data); + prec.vmult(x2, b); + } + + if (myid==0) + { + for (unsigned int j=0; j<10; ++j) + { + if (x1[j]!=x2[j]) + deallog << "FAIL: j=" << j << ": " << x1[j] << " != " << x2[j] << std::endl; + + } + } + +} + + + +int main (int argc, char **argv) +{ + Utilities::MPI::MPI_InitFinalize mpi_initialization (argc, argv, 1); + MPILogInitAll log; + run(); +} diff --git a/tests/trilinos/amg_nondeterministic_02.mpirun=2.with_trilinos.geq.12.4.output b/tests/trilinos/amg_nondeterministic_02.mpirun=2.with_trilinos.geq.12.4.output new file mode 100644 index 0000000000..870ec7d95e --- /dev/null +++ b/tests/trilinos/amg_nondeterministic_02.mpirun=2.with_trilinos.geq.12.4.output @@ -0,0 +1,7 @@ + +DEAL:0::SA: +DEAL:0::NSSA: + +DEAL:1::SA: +DEAL:1::NSSA: +