From: guido Date: Tue, 12 Feb 2002 11:34:32 +0000 (+0000) Subject: embedding matrices for dgp X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4013efaa57a586a199b76da3efcb672195acf9d7;p=dealii-svn.git embedding matrices for dgp git-svn-id: https://svn.dealii.org/trunk@5508 0785d39b-7218-0410-832d-ea1e28bc413d --- diff --git a/deal.II/deal.II/include/fe/fe_dgp.h b/deal.II/deal.II/include/fe/fe_dgp.h index 787ea5fb30..42beadd368 100644 --- a/deal.II/deal.II/include/fe/fe_dgp.h +++ b/deal.II/deal.II/include/fe/fe_dgp.h @@ -1,4 +1,4 @@ -//--------------------------------------------------------------- +//---------------------------------------------------------------- // $Id$ // Version: $Name$ // @@ -217,7 +217,7 @@ class FE_DGP : public FiniteElement * polynomial degree starting * from constant elements */ - static const double * const embedding[]; + static const double * const embedding[][GeometryInfo::children_per_cell]; /** * Number of elements (first @@ -234,7 +234,7 @@ class FE_DGP : public FiniteElement * As @p{embedding} but for * projection matrices. */ - static const double * const projection_matrices[]; + static const double * const projection_matrices[][GeometryInfo::children_per_cell]; /** * As @@ -325,37 +325,37 @@ class FE_DGP : public FiniteElement // declaration of explicit specializations template <> -const double * const FE_DGP<1>::Matrices::embedding[]; +const double * const FE_DGP<1>::Matrices::embedding[][GeometryInfo<1>::children_per_cell]; template <> const unsigned int FE_DGP<1>::Matrices::n_embedding_matrices; template <> -const double * const FE_DGP<1>::Matrices::projection_matrices[]; +const double * const FE_DGP<1>::Matrices::projection_matrices[][GeometryInfo<1>::children_per_cell]; template <> const unsigned int FE_DGP<1>::Matrices::n_projection_matrices; template <> -const double * const FE_DGP<2>::Matrices::embedding[]; +const double * const FE_DGP<2>::Matrices::embedding[][GeometryInfo<2>::children_per_cell]; template <> const unsigned int FE_DGP<2>::Matrices::n_embedding_matrices; template <> -const double * const FE_DGP<2>::Matrices::projection_matrices[]; +const double * const FE_DGP<2>::Matrices::projection_matrices[][GeometryInfo<2>::children_per_cell]; template <> const unsigned int FE_DGP<2>::Matrices::n_projection_matrices; template <> -const double * const FE_DGP<3>::Matrices::embedding[]; +const double * const FE_DGP<3>::Matrices::embedding[][GeometryInfo<3>::children_per_cell]; template <> const unsigned int FE_DGP<3>::Matrices::n_embedding_matrices; template <> -const double * const FE_DGP<3>::Matrices::projection_matrices[]; +const double * const FE_DGP<3>::Matrices::projection_matrices[][GeometryInfo<3>::children_per_cell]; template <> const unsigned int FE_DGP<3>::Matrices::n_projection_matrices; diff --git a/deal.II/deal.II/source/fe/fe_dgp.cc b/deal.II/deal.II/source/fe/fe_dgp.cc index 9fa54e9f13..58aa8bf28c 100644 --- a/deal.II/deal.II/source/fe/fe_dgp.cc +++ b/deal.II/deal.II/source/fe/fe_dgp.cc @@ -41,16 +41,13 @@ FE_DGP::FE_DGP (unsigned int degree) // if defined, copy over matrices // from precomputed arrays -// if ((degree < Matrices::n_embedding_matrices) && -// (Matrices::embedding[degree] != 0)) -// { -// prolongation[0].fill (Matrices::embedding[degree]); -// } -// else -// // matrix undefined, set size to zero -// for (unsigned int i=0;i::children_per_cell;++i) -// prolongation[i].reinit(0); - + if ((degree < Matrices::n_embedding_matrices) && + (Matrices::embedding[degree][0] != 0)) + for (unsigned int c=0; c::children_per_cell; ++c) + prolongation[c].fill (Matrices::embedding[degree][c]); + else + for (unsigned int i=0; i::children_per_cell;++i) + prolongation[i].reinit(0,0); // // same as above: copy over matrix // // from predefined values and // // generate all others by rotation diff --git a/deal.II/deal.II/source/fe/fe_dgp_1d.cc b/deal.II/deal.II/source/fe/fe_dgp_1d.cc new file mode 100644 index 0000000000..56253156bf --- /dev/null +++ b/deal.II/deal.II/source/fe/fe_dgp_1d.cc @@ -0,0 +1,175 @@ +//---------------------------------------------------------------- +// $Id$ +// Version: $Name$ +// +// Copyright (C) 1998, 1999, 2000, 2001, 2002 by the deal.II authors +// +// This file is subject to QPL and may not be distributed +// without copyright and license information. Please refer +// to the file deal.II/doc/license.html for the text and +// further information on this license. +// +//---------------------------------------------------------------- + + +// only compile in 1d +#if deal_II_dimension == 1 + +#include + +// Transfer matrices for finite elements + +namespace FE_DGP_1d +{ + static const double dgp0_into_dgp0_refined_0[] = + { + 1., + }; + + static const double dgp0_into_dgp0_refined_1[] = + { + 1., + }; + + static const double dgp1_into_dgp1_refined_0[] = + { + 1., 0., + 0., .5, + }; + + static const double dgp1_into_dgp1_refined_1[] = + { + 1., .5, + 0., .5, + }; + + static const double dgp2_into_dgp2_refined_0[] = + { + 1., 0., -.375, + 0., .5, 0., + 0., 0., .25, + }; + + static const double dgp2_into_dgp2_refined_1[] = + { + 1., .5, 0., + 0., .5, .75, + 0., 0., .25, + }; + + static const double dgp3_into_dgp3_refined_0[] = + { + 1., 0., -.375, 0., + 0., .5, 0., -15.1875/27., + 0., 0., .25, 0., + 0., 0., 0., .125, + }; + + static const double dgp3_into_dgp3_refined_1[] = + { + 1., .5, 0., -.125, + 0., .5, .75, .375, + 0., 0., .25, 16.875/27., + 0., 0., 0., .125, + }; + + static const double dgp4_into_dgp4_refined_0[] = + { + 1., 0., -.375, 0., 3.1640625/27., + 0., .5, 0., -15.1875/27., 0., + 0., 0., .25, 0., -12.65625/27., + 0., 0., 0., .125, 0., + 0., 0., 0., 0., 1.6875/27., + }; + + static const double dgp4_into_dgp4_refined_1[] = + { + 1., .5, 0., -.125, 0., + 0., .5, .75, .375, -.125, + 0., 0., .25, 16.875/27., 16.875/27., + 0., 0., 0., .125, 11.8125/27., + 0., 0., 0., 0., 1.6875/27., + }; + + static const double dgp5_into_dgp5_refined_0[] = + { + 1., 0., -.375, 0., 3.1640625/27., 0., + 0., .5, 0., -15.1875/27., 0., 10.44140625/27., + 0., 0., .25, 0., -12.65625/27., 0., + 0., 0., 0., .125, 0., -8.859375/27., + 0., 0., 0., 0., 1.6875/27., 0., + 0., 0., 0., 0., 0., 0.84375/27., + }; + + static const double dgp5_into_dgp5_refined_1[] = + { + 1., .5, 0., -.125, 0., 1.6875/27., + 0., .5, .75, .375, -.125, -5.0625/27., + 0., 1.943780239e-09/27., 6.750000001/27., 16.875/27., 16.875/27., 4.21875/27., + 0., -1.298171318e-09/27., 0., .125, 11.8125/27., 17.71875/27., + 0., 0., 0., 0., 1.6875/27., 7.59375/27., + 0., 0., 0., 0., 0., 0.84375/27., + }; + + static const double dgp6_into_dgp6_refined_0[] = + { + 1., 0., -10.12499999/27., 7.241569395e-09/27., 3.164062498/27., -5.02411607e-09/27., 0.553710937/27., + 0., .5, -2.01244638e-08/27., -15.18750002/27., 5.331617674e-09/27., 10.44140626/27., 1.305959489e-09/27., + 0., 0., 6.750000023/27., 2.013347609e-08/27., -12.65625001/27., -1.396873349e-08/27., 13.44726562/27., + 0., 0., -1.701242498e-08/27., 3.374999985/27., 4.508076571e-09/27., -8.859374989/27., 1.102114197e-09/27., + 0., 0., 8.95263339e-09/27., 7.969774316e-09/27., 1.687499998/27., -5.529893409e-09/27., -5.695312501/27., + 0., 0., -3.09774831e-09/27., -2.756474137e-09/27., 0., 0.8437500019/27., 0., + 0., 0., 0., 0., 0., 0., 0.421875/27., + }; + + static const double dgp6_into_dgp6_refined_1[] = + { + 1., 13.50000001/27., -6.32567268e-09/27., -3.37500001/27., 9.901835418e-09/27., 1.687500006/27., 6.235854535e-09/27., + 0., 13.49999998/27., 20.25000002/27., 10.12500003/27., -3.375000025/27., -5.062500014/27., 1.265624985/27., + 0., 2.037605333e-08/27., 6.749999982/27., 16.87499997/27., 16.87500003/27., 4.218750016/27., -6.328124983/27., + 0., -1.534920617e-08/27., 1.32272523e-08/27., 3.375000021/27., 11.81249998/27., 17.71874999/27., 11.81249999/27., + 0., 8.088959335e-09/27., -6.95629168e-09/27., -1.122813704e-08/27., 1.687500011/27., 7.593750006/27., 15.18750001/27., + 0., -2.804903374e-09/27., 2.404689106e-09/27., 3.885094046e-09/27., -3.773966236e-09/27., 0.8437499978/27., 4.640624998/27., + 0., 0., 0., 0., 0., 0., 0.4218750004/27., + }; + + +}; + + +template <> +const double * const +FE_DGP<1>::Matrices::embedding[][GeometryInfo<1>::children_per_cell] = +{ + {FE_DGP_1d::dgp1_into_dgp1_refined_0, FE_DGP_1d::dgp1_into_dgp1_refined_1}, + {FE_DGP_1d::dgp2_into_dgp2_refined_0, FE_DGP_1d::dgp2_into_dgp2_refined_1}, + {FE_DGP_1d::dgp3_into_dgp3_refined_0, FE_DGP_1d::dgp3_into_dgp3_refined_1}, + {FE_DGP_1d::dgp4_into_dgp4_refined_0, FE_DGP_1d::dgp4_into_dgp4_refined_1}, + {FE_DGP_1d::dgp5_into_dgp5_refined_0, FE_DGP_1d::dgp5_into_dgp5_refined_1}, + {FE_DGP_1d::dgp6_into_dgp6_refined_0, FE_DGP_1d::dgp6_into_dgp6_refined_1} +}; + +template <> +const unsigned int FE_DGP<1>::Matrices::n_embedding_matrices += sizeof(FE_DGP<1>::Matrices::embedding) / +sizeof(FE_DGP<1>::Matrices::embedding[0]); + + +/* + * These elements are not defined by interpolation, therefore there + * are no interpolation matrices. + */ + +template <> +const double * const FE_DGP<1>::Matrices::projection_matrices[][GeometryInfo<1>::children_per_cell]; + +template <> +const unsigned int FE_DGP<1>::Matrices::n_projection_matrices += 0; + + +#else // #if deal_II_dimension +// On gcc2.95 on Alpha OSF1, the native assembler does not like empty +// files, so provide some dummy code +namespace { void dummy () {}; }; +#endif // #if deal_II_dimension diff --git a/deal.II/deal.II/source/fe/fe_dgp_2d.cc b/deal.II/deal.II/source/fe/fe_dgp_2d.cc new file mode 100644 index 0000000000..3028f1bbef --- /dev/null +++ b/deal.II/deal.II/source/fe/fe_dgp_2d.cc @@ -0,0 +1,526 @@ +//---------------------------------------------------------------- +// $Id$ +// Version: $Name$ +// +// Copyright (C) 1998, 1999, 2000, 2001, 2002 by the deal.II authors +// +// This file is subject to QPL and may not be distributed +// without copyright and license information. Please refer +// to the file deal.II/doc/license.html for the text and +// further information on this license. +// +//---------------------------------------------------------------- + + +// only compile in 2d +#if deal_II_dimension == 2 + +#include + +// Transfer matrices for finite elements + +namespace FE_DGP_2d +{ + static const double dgp0_into_dgp0_refined_0[] = + { + 1., + }; + + static const double dgp0_into_dgp0_refined_1[] = + { + 1., + }; + + static const double dgp0_into_dgp0_refined_2[] = + { + 1., + }; + + static const double dgp0_into_dgp0_refined_3[] = + { + 1., + }; + + static const double dgp1_into_dgp1_refined_0[] = + { + 1., 0., 0., + 0., .5, 0., + 0., 0., .5, + }; + + static const double dgp1_into_dgp1_refined_1[] = + { + 1., .5, 0., + 0., .5, 0., + 0., 0., .5, + }; + + static const double dgp1_into_dgp1_refined_2[] = + { + 1., .5, .5, + 0., .5, 0., + 0., 0., .5, + }; + + static const double dgp1_into_dgp1_refined_3[] = + { + 1., 0., .5, + 0., .5, 0., + 0., 0., .5, + }; + static const double dgp2_into_dgp2_refined_0[] = + { + 1., 0., -.375, 0., 0., -.375, + 0., .5, 0., 0., 0., 0., + 0., 0., .25, 0., 0., 0., + 0., 0., 0., .5, 0., 0., + 0., 0., 0., 0., .25, 0., + 0., 0., 0., 0., 0., .25, + }; + + static const double dgp2_into_dgp2_refined_1[] = + { + 1., .5, 0., 0., 0., -.375, + 0., .5, .75, 0., 0., 0., + 0., 0., .25, 0., 0., 0., + 0., 0., 0., .5, .25, 0., + 0., 0., 0., 0., .25, 0., + 0., 0., 0., 0., 0., .25, + }; + + static const double dgp2_into_dgp2_refined_2[] = + { + 1., .5, 0., .5, .25, 0., + 0., .5, .75, 0., .25, 0., + 0., 0., .25, 0., 0., 0., + 0., 0., 0., .5, .25, .75, + 0., 0., 0., 0., .25, 0., + 0., 0., 0., 0., 0., .25, + }; + + static const double dgp2_into_dgp2_refined_3[] = + { + 1., 0., -.375, .5, 0., 0., + 0., .5, 0., 0., .25, 0., + 0., 0., .25, 0., 0., 0., + 0., 0., 0., .5, 0., .75, + 0., 0., 0., 0., .25, 0., + 0., 0., 0., 0., 0., .25, + }; + + static const double dgp3_into_dgp3_refined_0[] = + { + 1., 0., -.375, 0., 0., 0., 0., -.375, 0., 0., + 0., .5, 0., -15.1875/27., 0., 0., 0., 0., -5.0625/27., 0., + 0., 0., .25, 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., .5, 0., -5.0625/27., 0., 0., -15.1875/27., + 0., 0., 0., 0., 0., .25, 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., .25, 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, + }; + + static const double dgp3_into_dgp3_refined_1[] = + { + 1., .5, 0., -.125, 0., 0., 0., -.375, -5.0625/27., 0., + 0., .5, .75, .375, 0., 0., 0., 0., -5.0625/27., 0., + 0., 0., .25, 16.875/27., 0., 0., 0., 0., 0., 0., + 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., .5, .25, 0., 0., 0., -15.1875/27., + 0., 0., 0., 0., 0., .25, .375, 0., 0., 0., + 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., .25, .125, 0., + 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, + }; + + static const double dgp3_into_dgp3_refined_2[] = + { + 1., .5, 0., -.125, .5, .25, 0., 0., 0., -.125, + 0., .5, .75, .375, 0., .25, .375, 0., 0., 0., + 0., 0., .25, 16.875/27., 0., 0., .125, 0., 0., 0., + 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., .5, .25, 0., .75, .375, .375, + 0., 0., 0., 0., 0., .25, .375, 0., .375, 0., + 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., .25, .125, 16.875/27., + 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, + }; + + static const double dgp3_into_dgp3_refined_3[] = + { + 1., 0., -.375, 0., .5, 0., -5.0625/27., 0., 0., -.125, + 0., .5, 0., -15.1875/27., 0., .25, 0., 0., 0., 0., + 0., 0., .25, 0., 0., 0., .125, 0., 0., 0., + 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., .5, 0., -5.0625/27., .75, 0., .375, + 0., 0., 0., 0., 0., .25, 0., 0., .375, 0., + 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., .25, 0., 16.875/27., + 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, + }; + + static const double dgp4_into_dgp4_refined_0[] = + { + 1., 0., -.375, 0., 3.1640625/27., 0., 0., 0., 0., -.375, 0., 3.796875/27., 0., 0., 3.1640625/27., + 0., .5, 0., -15.1875/27., 0., 0., 0., 0., 0., 0., -5.0625/27., 0., 0., 0., 0., + 0., 0., .25, 0., -12.65625/27., 0., 0., 0., 0., 0., 0., -2.53125/27., 0., 0., 0., + 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., .5, 0., -5.0625/27., 0., 0., 0., 0., -15.1875/27., 0., 0., + 0., 0., 0., 0., 0., 0., .25, 0., -7.59375/27., 0., 0., 0., 0., -7.59375/27., 0., + 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., -2.53125/27., 0., 0., -12.65625/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., + }; + + static const double dgp4_into_dgp4_refined_1[] = + { + 1., .5, 0., -.125, 0., 0., 0., 0., 0., -.375, -5.0625/27., 0., 0., 0., 3.1640625/27., + 0., .5, .75, .375, -.125, 0., 0., 0., 0., 0., -5.0625/27., -7.59375/27., 0., 0., 0., + 0., 0., .25, 16.875/27., 16.875/27., 0., 0., 0., 0., 0., 0., -2.53125/27., 0., 0., 0., + 0., 0., 0., .125, 11.8125/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., .5, .25, 0., -1.6875/27., 0., 0., 0., -15.1875/27., -7.59375/27., 0., + 0., 0., 0., 0., 0., 0., .25, .375, 5.0625/27., 0., 0., 0., 0., -7.59375/27., 0., + 0., 0., 0., 0., 0., 0., 0., .125, 8.4375/27., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .125, 0., 0., 0., -12.65625/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 5.0625/27., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 1.6875/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., + }; + + static const double dgp4_into_dgp4_refined_2[] = + { + 1., .5, 0., -.125, 0., .5, .25, 0., -1.6875/27., 0., 0., 0., -.125, -1.6875/27., 0., + 0., .5, .75, .375, -.125, 0., .25, .375, 5.0625/27., 0., 0., 0., 0., -1.6875/27., 0., + 0., 0., .25, 16.875/27., 16.875/27., 0., 0., .125, 8.4375/27., 0., 0., 0., 0., 0., 0., + 0., 0., 0., .125, 11.8125/27., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., .5, .25, 0., -1.6875/27., .75, .375, 0., .375, 5.0625/27., -.125, + 0., 0., 0., 0., 0., 0., .25, .375, 5.0625/27., 0., .375, 15.1875/27., 0., 5.0625/27., 0., + 0., 0., 0., 0., 0., 0., 0., .125, 8.4375/27., 0., 0., 5.0625/27., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .125, 0., 16.875/27., 8.4375/27., 16.875/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 5.0625/27., 0., 8.4375/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 1.6875/27., 11.8125/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., + }; + + static const double dgp4_into_dgp4_refined_3[] = + { + 1., 0., -.375, 0., 3.1640625/27., .5, 0., -5.0625/27., 0., 0., 0., 0., -.125, 0., 0., + 0., .5, 0., -15.1875/27., 0., 0., .25, 0., -7.59375/27., 0., 0., 0., 0., -1.6875/27., 0., + 0., 0., .25, 0., -12.65625/27., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., .125, 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., .5, 0., -5.0625/27., 0., .75, 0., -7.59375/27., .375, 0., -.125, + 0., 0., 0., 0., 0., 0., .25, 0., -7.59375/27., 0., .375, 0., 0., 5.0625/27., 0., + 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 5.0625/27., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., -2.53125/27., 16.875/27., 0., 16.875/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 8.4375/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 11.8125/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., + }; + + static const double dgp5_into_dgp5_refined_0[] = + { + 1., 0., -.375, 0., 3.1640625/27., 0., 0., 0., 0., 0., 0., -.375, 0., 3.796875/27., 0., 0., 0., 0., 3.1640625/27., 0., 0., + 0., .5, 0., -15.1875/27., 0., 10.44140625/27., 0., 0., 0., 0., 0., 0., -5.0625/27., 0., 5.6953125/27., 0., 0., 0., 0., 1.58203125/27., 0., + 0., 0., .25, 0., -12.65625/27., 0., 0., 0., 0., 0., 0., 0., 0., -2.53125/27., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., .125, 0., -8.859375/27., 0., 0., 0., 0., 0., 0., 0., 0., -1.265625/27., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0.84375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., .5, 0., -5.0625/27., 0., 1.58203125/27., 0., 0., 0., 0., -15.1875/27., 0., 5.6953125/27., 0., 0., 10.44140625/27., + 0., 0., 0., 0., 0., 0., 0., .25, 0., -7.59375/27., 0., 0., 0., 0., 0., 0., -7.59375/27., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., -6.328125/27., 0., 0., 0., 0., 0., 0., -3.796875/27., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.84375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., -2.53125/27., 0., 0., 0., 0., -12.65625/27., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., -3.796875/27., 0., 0., 0., 0., -6.328125/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.84375/27., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., -1.265625/27., 0., 0., -8.859375/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.84375/27., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.84375/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.84375/27., + }; + + static const double dgp5_into_dgp5_refined_1[] = + { + 1., .5, 0., -.125, 0., 1.6875/27., 0., 0., 0., 0., 0., -.375, -5.0625/27., 0., 1.265625/27., 0., 0., 0., 3.1640625/27., 1.58203125/27., 0., + 0., .5, .75, .375, -3.375000001/27., -5.0625/27., 0., 0., 0., 0., 0., 0., -5.0625/27., -7.59375/27., -3.796875/27., 0., 0., 0., 0., 1.58203125/27., 0., + 0., 0., 6.749999999/27., 16.875/27., 16.875/27., 4.21875/27., 0., 0., 0., 0., 0., 0., 0., -2.53125/27., -6.328125/27., 0., 0., 0., 0., 0., 0., + 0., 0., 0., .125, 11.8125/27., 17.71875/27., 0., 0., 0., 0., 0., 0., 0., 0., -1.265625/27., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 1.6875/27., 7.59375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0.84375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., .5, .25, 0., -1.6875/27., 0., 0., 0., 0., 0., -15.1875/27., -7.59375/27., 0., 0., 0., 10.44140625/27., + 0., 0., 0., 0., 0., 0., 0., .25, .375, 5.0625/27., -1.6875/27., 0., 0., 0., 0., 0., -7.59375/27., -11.390625/27., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., .125, 8.4375/27., 8.4375/27., 0., 0., 0., 0., 0., 0., -3.796875/27., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 5.90625/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.84375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .125, 0., -0.8437500002/27., 0., 0., 0., -12.65625/27., -6.328125/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 5.0625/27., 2.53125/27., 0., 0., 0., 0., -6.328125/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 4.21875/27., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.84375/27., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 1.6875/27., 0., 0., 0., -8.859375/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 2.53125/27., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.84375/27., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0.84375/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.84375/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.84375/27., + }; + + static const double dgp5_into_dgp5_refined_2[] = + { + 1., .5, 0., -.125, 0., 1.6875/27., .5, .25, 0., -1.6875/27., 0., 0., 0., 0., 0., -.125, -1.6875/27., 0., 0., 0., 1.6875/27., + 0., .5, .75, .375, -3.375000001/27., -5.0625/27., 0., .25, .375, 5.0625/27., -1.6875/27., 0., 0., 0., 0., 0., -1.6875/27., -2.53125/27., 0., 0., 0., + 0., 0., 6.749999999/27., 16.875/27., 16.875/27., 4.21875/27., 0., 0., .125, 8.4375/27., 8.4375/27., 0., 0., 0., 0., 0., 0., -0.8437500001/27., 0., 0., 0., + 0., 0., 0., .125, 11.8125/27., 17.71875/27., 0., 0., 0., 1.6875/27., 5.90625/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 1.6875/27., 7.59375/27., 0., 0., 0., 0., 0.84375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0.84375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., .5, .25, 0., -1.6875/27., 0., .75, .375, 0., -2.53125/27., .375, 5.0625/27., 0., -3.375000001/27., -1.6875/27., -5.0625/27., + 0., 0., 0., 0., 0., 0., 0., .25, .375, 5.0625/27., -1.6875/27., 0., .375, 15.1875/27., 7.59375/27., 0., 5.0625/27., 7.59375/27., 0., -1.6875/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., .125, 8.4375/27., 8.4375/27., 0., 0., 5.0625/27., 12.65625/27., 0., 0., 2.53125/27., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 5.90625/27., 0., 0., 0., 2.53125/27., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.84375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 6.749999999/27., .125, 0., -0.8437500001/27., 16.875/27., 8.4375/27., 0., 16.875/27., 8.4375/27., 4.21875/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 5.0625/27., 2.53125/27., 0., 8.4375/27., 12.65625/27., 0., 8.4375/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 4.21875/27., 0., 0., 4.21875/27., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.84375/27., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 1.6875/27., 0., 11.8125/27., 5.90625/27., 17.71875/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 2.53125/27., 0., 5.90625/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.84375/27., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0.84375/27., 7.59375/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.84375/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.84375/27., + }; + + static const double dgp5_into_dgp5_refined_3[] = + { + 1., 0., -.375, 0., 3.1640625/27., 0., .5, 0., -5.0625/27., 0., 1.58203125/27., 0., 0., 0., 0., -.125, 0., 1.265625/27., 0., 0., 1.6875/27., + 0., .5, 0., -15.1875/27., 0., 10.44140625/27., 0., .25, 0., -7.59375/27., 0., 0., 0., 0., 0., 0., -1.6875/27., 0., 0., 0., 0., + 0., 0., .25, 0., -12.65625/27., 0., 0., 0., .125, 0., -6.328125/27., 0., 0., 0., 0., 0., 0., -0.8437500002/27., 0., 0., 0., + 0., 0., 0., .125, 0., -8.859375/27., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0.84375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0.84375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., .5, 0., -5.0625/27., 0., 1.58203125/27., .75, 0., -7.59375/27., 0., .375, 0., -3.796875/27., -3.375000001/27., 0., -5.0625/27., + 0., 0., 0., 0., 0., 0., 0., .25, 0., -7.59375/27., 0., 0., .375, 0., -11.390625/27., 0., 5.0625/27., 0., 0., -1.6875/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., -6.328125/27., 0., 0., 5.0625/27., 0., 0., 0., 2.53125/27., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 2.53125/27., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.84375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 6.749999999/27., 0., -2.53125/27., 0., 16.875/27., 0., -6.328125/27., 16.875/27., 0., 4.21875/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., -3.796875/27., 0., 8.4375/27., 0., 0., 8.4375/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 4.21875/27., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.84375/27., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., -1.265625/27., 11.8125/27., 0., 17.71875/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 5.90625/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.84375/27., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 7.59375/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.84375/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.84375/27., + }; + + static const double dgp6_into_dgp6_refined_0[] = + { + 1., 0., -.375, 2.10204759e-09/27., 3.164062499/27., 2.685082188e-09/27., 0.5537109359/27., 0., 0., -1.07930221e-09/27., 0., 0., 0., -.375, -1.07930221e-09/27., 3.796874998/27., 2.813232665e-09/27., -1.186523438/27., 2.10204759e-09/27., 0., 2.813232665e-09/27., 3.86360663e-09/27., 3.164062499/27., 0., -1.186523438/27., 2.685082188e-09/27., 0., 0.5537109359/27., + 0., .5, 3.658215698e-09/27., -15.1875/27., 0., 10.44140624/27., 2.131820768e-09/27., 0., 0., 0., 0., 0., 0., 1.080949017e-09/27., -5.062499998/27., 2.6766119e-09/27., 5.695312495/27., 2.876334522e-09/27., -3.92061665e-09/27., 0., -2.725491735e-09/27., -5.665249489e-09/27., 2.375828888e-09/27., 1.58203125/27., 0., 1.082088734e-09/27., 0., 2.763894428e-09/27., + 0., 0., 6.749999997/27., 0., -12.65625/27., 1.066143282e-08/27., 13.44726562/27., 0., 0., 0., 0., 0., 0., 0., -2.607385005e-09/27., -2.531250003/27., 5.026738297e-09/27., 4.746093747/27., 4.740131327e-09/27., 0., 2.803981188e-09/27., 5.485742865e-09/27., -2.394091461e-09/27., 0., 0.7910156258/27., -2.833538748e-09/27., 0., -2.834398247e-09/27., + 0., 0., 2.045074215e-09/27., 3.374999999/27., 0., -8.859375007/27., 1.039162777e-09/27., 0., 0., 0., 0., 0., 0., 0., 1.907992874e-09/27., 2.206095257e-09/27., -1.265625004/27., 2.140530734e-09/27., -3.800114121e-09/27., 0., -2.053220084e-09/27., -3.764637076e-09/27., 1.817404218e-09/27., 0., 0., 2.774044754e-09/27., 0., 1.897638307e-09/27., + 0., 0., 0., 0., 1.6875/27., 3.632327668e-09/27., -5.6953125/27., 0., 0., 0., 0., 0., 0., 0., 0., -1.158942845e-09/27., 1.930527193e-09/27., -0.6328125011/27., 2.116266852e-09/27., 0., 1.061792685e-09/27., 1.841347767e-09/27., 0., 0., 0., -1.722358007e-09/27., 0., 0., + 0., 0., 0., 0., 0., 0.8437499988/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0.421875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 1.080949017e-09/27., -3.92061665e-09/27., 2.375828888e-09/27., 1.082088734e-09/27., 2.763894428e-09/27., .5, 0., -5.062499998/27., 0., 1.58203125/27., 0., 3.658215698e-09/27., 0., 2.6766119e-09/27., -2.725491735e-09/27., 0., -15.1875/27., 0., 5.695312495/27., -5.665249489e-09/27., 0., 0., 2.876334522e-09/27., 10.44140624/27., 0., 2.131820768e-09/27., + 0., 0., -4.337891854e-09/27., -2.688220646e-09/27., 0., 8.279972232e-09/27., -2.564397253e-09/27., 0., .25, 0., -7.593750002/27., 0., 5.220703125/27., -4.337891854e-09/27., 0., 0., 0., -1.2281902e-09/27., -2.688220646e-09/27., -7.593750002/27., 0., 8.542968754/27., 0., 0., -1.2281902e-09/27., 8.279972232e-09/27., 5.220703125/27., -2.564397253e-09/27., + 0., 0., 2.719944115e-09/27., 1.39102052e-09/27., 0., -5.27208635e-09/27., 1.193951561e-09/27., 0., 0., .125, 0., -6.328124999/27., 0., 3.083736641e-09/27., 0., 0., 0., 0., 2.268918792e-09/27., 1.107964681e-09/27., -3.796875/27., -2.934975478e-09/27., 0., 0., 0., -5.548698339e-09/27., 0., 2.28557188e-09/27., + 0., 0., -1.280019966e-09/27., 0., 0., 2.551306254e-09/27., 0., 0., 0., 0., 1.6875/27., 0., -4.4296875/27., -1.489851421e-09/27., 0., 0., 0., 0., -1.212054971e-09/27., 0., 0., -1.898437499/27., 0., 0., 0., 2.785884723e-09/27., 0., -1.216051235e-09/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.8437500001/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.421875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 4.740131327e-09/27., -2.394091461e-09/27., -2.833538748e-09/27., -2.834398247e-09/27., 0., 0., -2.607385005e-09/27., 0., 0., 0., 6.749999997/27., 0., -2.531250003/27., 2.803981188e-09/27., 0.7910156258/27., 0., 0., 5.026738297e-09/27., 5.485742865e-09/27., -12.65625/27., 0., 4.746093747/27., 1.066143282e-08/27., 0., 13.44726562/27., + 0., 0., 3.083736641e-09/27., 2.268918792e-09/27., 0., -5.548698339e-09/27., 2.28557188e-09/27., 0., 0., 0., 1.107964681e-09/27., 0., 0., 2.719944115e-09/27., .125, 0., -3.796875/27., 0., 1.39102052e-09/27., 0., 0., -2.934975478e-09/27., 0., -6.328124999/27., 0., -5.27208635e-09/27., 0., 1.193951561e-09/27., + 0., 0., -1.391406917e-09/27., 0., 0., 2.370734272e-09/27., 0., 0., 0., 0., 0., 0., 0., -1.391406917e-09/27., 0., 1.6875/27., 0., -3.164062501/27., 0., 0., 0., 1.363828045e-09/27., 0., 0., -3.164062501/27., 2.370734272e-09/27., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.8437499999/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.421875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., -3.800114121e-09/27., 1.817404218e-09/27., 2.774044754e-09/27., 1.897638307e-09/27., 0., 0., 1.907992874e-09/27., 0., 0., 0., 2.045074215e-09/27., 0., 2.206095257e-09/27., -2.053220084e-09/27., 0., 3.374999999/27., 0., -1.265625004/27., -3.764637076e-09/27., 0., 0., 2.140530734e-09/27., -8.859375007/27., 0., 1.039162777e-09/27., + 0., 0., -1.489851421e-09/27., -1.212054971e-09/27., 0., 2.785884723e-09/27., -1.216051235e-09/27., 0., 0., 0., 0., 0., 0., -1.280019966e-09/27., 0., 0., 0., 0., 0., 1.6875/27., 0., -1.898437499/27., 0., 0., 0., 2.551306254e-09/27., -4.4296875/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.8437499999/27., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.4218750001/27., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 2.116266852e-09/27., 0., -1.722358007e-09/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., -1.158942845e-09/27., 1.061792685e-09/27., 0., 0., 0., 1.930527193e-09/27., 1.841347767e-09/27., 1.6875/27., 0., -0.6328125011/27., 3.632327668e-09/27., 0., -5.6953125/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.8437500001/27., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.421875/27., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.8437499988/27., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.421875/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.421875/27., + }; + + static const double dgp6_into_dgp6_refined_1[] = + { + 1., 13.50000002/27., 4.477651047e-09/27., -3.374999997/27., 0., 1.687500007/27., 6.16353408e-09/27., 0., 1.27801857e-09/27., 1.301720728e-09/27., -2.488591681e-09/27., -1.679484885e-09/27., 0., -.375, -5.062500003/27., -3.403137136e-09/27., 1.265625/27., 0., 2.10204759e-09/27., 0., -2.48697705e-09/27., -3.134242688e-09/27., 3.164062499/27., 1.582031252/27., 1.399117932e-09/27., 2.685082188e-09/27., -1.746243791e-09/27., 0.5537109359/27., + 0., 13.49999996/27., .75, 10.12499999/27., -3.375000001/27., -5.062500013/27., 1.265624989/27., 0., 2.662581975e-09/27., 0., 4.93248614e-09/27., 2.486121308e-09/27., 0., 1.080949017e-09/27., -5.062499997/27., -7.593749995/27., -3.796874999/27., 1.265625001/27., -3.92061665e-09/27., 0., 2.786171066e-09/27., 6.218557924e-09/27., 2.375828888e-09/27., 1.582031249/27., 2.373046874/27., 1.082088734e-09/27., 3.013440618e-09/27., 2.763894428e-09/27., + 0., 4.713708628e-08/27., 6.750000005/27., 16.87500001/27., 16.875/27., 4.218750014/27., -6.328124988/27., 0., -2.511138328e-09/27., -1.219869724e-09/27., -5.105185708e-09/27., -2.65324732e-09/27., 0., 0., -2.557980145e-09/27., -2.531250005/27., -6.328125001/27., -6.328125001/27., 4.740131327e-09/27., 0., -2.117545045e-09/27., -6.206630111e-09/27., -2.394091461e-09/27., 1.155419779e-09/27., 0.7910156257/27., -2.833538748e-09/27., -1.910224451e-09/27., -2.834398247e-09/27., + 0., -3.35421592e-08/27., -3.842436459e-09/27., 3.374999994/27., 11.8125/27., 17.71874999/27., 11.81249999/27., 0., 1.650316554e-09/27., 1.215890943e-09/27., 3.677123151e-09/27., 1.913446388e-09/27., 0., 0., 1.915367952e-09/27., 3.350154554e-09/27., -1.265624999/27., -4.4296875/27., -3.800114121e-09/27., 0., 1.134768624e-09/27., 4.347093102e-09/27., 1.817404218e-09/27., 0., 0., 2.774044754e-09/27., 0., 1.897638307e-09/27., + 0., 1.672993628e-08/27., 2.110870102e-09/27., 3.044674203e-09/27., 1.687500001/27., 7.593750005/27., 15.1875/27., 0., 0., 0., -1.884920663e-09/27., 0., 0., 0., -1.037168957e-09/27., -1.685264233e-09/27., 0., -0.6328125002/27., 2.116266852e-09/27., 0., 0., -2.149191101e-09/27., 0., 0., 0., -1.722358007e-09/27., 0., 0., + 0., -5.494802163e-09/27., 0., -1.057399888e-09/27., 0., 0.8437499982/27., 4.640624998/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0.4218750003/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., -5.377342456e-09/27., -6.061004549e-09/27., -1.660185991e-09/27., 1.473665918e-09/27., -5.011931539e-09/27., -5.464675833e-09/27., .5, 6.749999995/27., -4.949828173e-09/27., -1.687499998/27., 2.05126778e-09/27., 0.8437500021/27., 3.658215698e-09/27., 4.015840528e-09/27., 4.798898977e-09/27., 0., 2.073730163e-09/27., -15.1875/27., -7.593749999/27., 5.394797821e-09/27., 1.898437503/27., 0., -3.619460261e-09/27., -2.732185104e-09/27., 10.44140624/27., 5.220703129/27., 2.131820768e-09/27., + 0., 2.269673925e-08/27., -1.472085211e-09/27., 0., -3.579866378e-09/27., 3.309833313e-09/27., 3.069988867e-09/27., 0., 6.749999998/27., .375, 5.062499998/27., -1.687500001/27., -2.53125/27., -4.337891854e-09/27., 0., -2.730785687e-09/27., 0., -1.752529997e-09/27., -2.688220646e-09/27., -7.593750001/27., -11.39062501/27., -5.695312504/27., 0., 1.695512275e-09/27., 0., 8.279972232e-09/27., 5.220703118/27., -2.564397253e-09/27., + 0., -1.859604528e-08/27., 1.915529185e-09/27., 0., 1.242531493e-09/27., -2.760365686e-09/27., -2.585106643e-09/27., 0., 1.098504429e-09/27., 3.374999998/27., 8.437500001/27., 8.437500001/27., 2.109375/27., 3.083736641e-09/27., 0., 1.673396774e-09/27., 0., 1.392243972e-09/27., 2.268918792e-09/27., 1.126891968e-09/27., -3.796874997/27., -9.492187497/27., 0., -1.27300754e-09/27., 0., -5.548698339e-09/27., 4.513045636e-09/27., 2.28557188e-09/27., + 0., 9.864103043e-09/27., -1.081174038e-09/27., 0., 0., 1.696119228e-09/27., 1.295980653e-09/27., 0., 0., 0., 1.6875/27., 5.90625/27., 8.859375/27., -1.489851421e-09/27., 0., 0., 0., 0., -1.212054971e-09/27., 0., -1.526140554e-09/27., -1.898437502/27., 0., 0., 0., 2.785884723e-09/27., -2.020678656e-09/27., -1.216051235e-09/27., + 0., -3.298075133e-09/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.8437500001/27., 3.796875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.421875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 7.43520556e-09/27., 1.890700841e-09/27., -1.677015644e-09/27., 4.574558371e-09/27., 5.387380817e-09/27., 0., 5.849940986e-09/27., 5.050458116e-09/27., -1.929522183e-09/27., -2.073282841e-09/27., -2.226468122e-09/27., 6.749999997/27., 3.374999995/27., -4.838126272e-09/27., -0.8437499999/27., -1.907480826e-09/27., 0., 0., -5.128275461e-09/27., -2.692445267e-09/27., -12.65625/27., -6.328124996/27., 3.118168401e-09/27., 1.066143282e-08/27., -3.392918112e-09/27., 13.44726562/27., + 0., -1.190751798e-08/27., 0., 0., 4.178708486e-09/27., -1.216726338e-09/27., -1.696165826e-09/27., 0., 1.815723436e-09/27., -2.60886173e-09/27., 1.441495174e-09/27., 0., 0., 2.719944115e-09/27., 3.375000001/27., 5.062500002/27., 2.53125/27., -0.843749999/27., 1.39102052e-09/27., 0., 3.558355659e-09/27., 2.570188176e-09/27., 0., -6.328125001/27., -9.492187501/27., -5.27208635e-09/27., 5.080195146e-09/27., 1.193951561e-09/27., + 0., 7.442177611e-09/27., 0., 0., -1.857538388e-09/27., 0., 1.18081649e-09/27., 0., 0., 1.138837786e-09/27., 0., 0., 0., -1.391406917e-09/27., 0., 1.687499999/27., 4.218750001/27., 4.218749999/27., 0., 0., -1.771896967e-09/27., -1.201704392e-09/27., 0., 0., -3.1640625/27., 2.370734272e-09/27., -2.427414581e-09/27., 0., + 0., -2.783008705e-09/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.8437499998/27., 2.953125/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.421875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 1.790033168e-09/27., -5.705420567e-09/27., -1.564849524e-09/27., 0., -3.253350057e-09/27., -3.762320294e-09/27., 0., -4.616572844e-09/27., -3.507754433e-09/27., 1.293541624e-09/27., 1.483587431e-09/27., 1.689530748e-09/27., 2.045074215e-09/27., 3.535189627e-09/27., 3.453914691e-09/27., 0., 1.283290186e-09/27., 3.374999999/27., 1.6875/27., 3.403833474e-09/27., -0.4218749983/27., 0., -2.617280305e-09/27., -2.352788912e-09/27., -8.859375007/27., -4.429687498/27., 1.039162777e-09/27., + 0., 4.584740223e-09/27., 0., 0., -2.198380542e-09/27., 0., 0., 0., 0., 1.329980617e-09/27., 0., 0., 0., -1.280019966e-09/27., 0., 0., 0., 0., 0., 1.6875/27., 2.531249998/27., 1.265624999/27., 0., 0., 0., 2.551306254e-09/27., -4.429687502/27., 0., + 0., -1.935287196e-09/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.8437500006/27., 2.109375/27., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.4218749999/27., 0., 0., 0., 0., 0., 0., + 0., -1.504240658e-09/27., 3.025333442e-09/27., 0., 0., 1.668362077e-09/27., 1.890214411e-09/27., 0., 2.531373966e-09/27., 1.718384884e-09/27., 0., 0., 0., 0., -1.820174975e-09/27., -1.735717804e-09/27., 0., 0., 0., 0., -1.613927342e-09/27., 0., 1.6875/27., 0.8437500013/27., 1.218851466e-09/27., 3.632327668e-09/27., 0., -5.6953125/27., + 0., -1.236762301e-09/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.8437499999/27., 1.265625/27., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.421875/27., 0., 0., 0., + 0., 0., -1.0402305e-09/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.8437499988/27., 0.4218750002/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.4218749999/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.421875/27., + }; + + static const double dgp6_into_dgp6_refined_2[] = + { + 1., 13.50000002/27., 4.477651047e-09/27., -3.374999997/27., 0., 1.687500007/27., 6.16353408e-09/27., 13.50000002/27., 6.750000004/27., 0., -1.687500001/27., 0., 0.8437499966/27., 4.477651047e-09/27., 0., 1.413127472e-09/27., -2.32492851e-09/27., 2.120135436e-09/27., -3.374999997/27., -1.687500001/27., -2.32492851e-09/27., 0.4218749972/27., 0., 0., 2.120135436e-09/27., 1.687500007/27., 0.8437499966/27., 6.16353408e-09/27., + 0., 13.49999996/27., .75, 10.12499999/27., -3.375000001/27., -5.062500013/27., 1.265624989/27., -5.377342456e-09/27., 6.749999995/27., .375, 5.062499999/27., -1.687499997/27., -2.531249997/27., -6.061004549e-09/27., -2.522505923e-09/27., -1.757682607e-09/27., 5.076176607e-09/27., -4.030174159e-09/27., -1.660185991e-09/27., -1.687499997/27., -2.531249998/27., -1.265624997/27., 1.473665918e-09/27., -1.864204236e-09/27., -3.488329512e-09/27., -5.011931539e-09/27., 0.8437500055/27., -5.464675833e-09/27., + 0., 4.713708628e-08/27., 6.750000005/27., 16.87500001/27., 16.875/27., 4.218750014/27., -6.328124988/27., 0., 6.160509612e-09/27., .125, 8.437500002/27., 8.437499996/27., 2.109374997/27., 7.43520556e-09/27., 2.598998648e-09/27., 1.897323875e-09/27., -5.032818415e-09/27., 3.233131787e-09/27., 1.890700841e-09/27., -4.13579958e-09/27., -0.8437500017/27., -2.109375004/27., -1.677015644e-09/27., 2.339299995e-09/27., 3.034834639e-09/27., 4.574558371e-09/27., -6.443287975e-09/27., 5.387380817e-09/27., + 0., -3.35421592e-08/27., -3.842436459e-09/27., 3.374999994/27., 11.8125/27., 17.71874999/27., 11.81249999/27., 1.790033168e-09/27., -4.808537073e-09/27., 0., 1.687499999/27., 5.906250003/27., 8.859375002/27., -5.705420567e-09/27., -1.867281149e-09/27., -1.504811106e-09/27., 3.508114059e-09/27., -1.928411608e-09/27., -1.564849524e-09/27., 3.067502989e-09/27., 0., -0.4218749969/27., 0., -1.887786536e-09/27., -1.756210904e-09/27., -3.253350057e-09/27., 4.848647695e-09/27., -3.762320294e-09/27., + 0., 1.672993628e-08/27., 2.110870102e-09/27., 3.044674203e-09/27., 1.687500001/27., 7.593750005/27., 15.1875/27., -1.504240658e-09/27., 2.597906154e-09/27., 0., 0., 0.8437499987/27., 3.796874999/27., 3.025333442e-09/27., 0., 0., -1.752612067e-09/27., 0., 0., -1.562523827e-09/27., 0., -1.758623983e-09/27., 0., 0., 0., 1.668362077e-09/27., -2.532301121e-09/27., 1.890214411e-09/27., + 0., -5.494802163e-09/27., 0., -1.057399888e-09/27., 0., 0.8437499982/27., 4.640624998/27., 0., 0., 0., 0., 0., 0.4218750005/27., -1.0402305e-09/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0.4218750003/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., -5.377342456e-09/27., -6.061004549e-09/27., -1.660185991e-09/27., 1.473665918e-09/27., -5.011931539e-09/27., -5.464675833e-09/27., 13.49999996/27., 6.749999995/27., -2.522505923e-09/27., -1.687499997/27., -1.864204236e-09/27., 0.8437500055/27., .75, .375, -1.757682607e-09/27., -2.531249998/27., -3.488329512e-09/27., 10.12499999/27., 5.062499999/27., 5.076176607e-09/27., -1.265624997/27., -3.375000001/27., -1.687499997/27., -4.030174159e-09/27., -5.062500013/27., -2.531249997/27., 1.265624989/27., + 0., 2.269673925e-08/27., -1.472085211e-09/27., 0., -3.579866378e-09/27., 3.309833313e-09/27., 3.069988867e-09/27., 2.269673925e-08/27., 6.749999998/27., .375, 5.0625/27., -1.687500001/27., -2.53125/27., -1.472085211e-09/27., .375, 15.1875/27., 7.593749997/27., -2.531249994/27., 0., 5.0625/27., 7.593749997/27., 3.796875003/27., -3.579866378e-09/27., -1.687500001/27., -2.531249994/27., 3.309833313e-09/27., -2.53125/27., 3.069988867e-09/27., + 0., -1.859604528e-08/27., 1.915529185e-09/27., 0., 1.242531493e-09/27., -2.760365686e-09/27., -2.585106643e-09/27., -1.190751798e-08/27., 1.114028846e-09/27., .125, 8.4375/27., 8.437500001/27., 2.109374999/27., 0., -2.510214908e-09/27., 5.0625/27., 12.65625/27., 12.65625/27., 0., 0., 2.531250002/27., 6.328124998/27., 4.178708486e-09/27., 0., -0.8437500044/27., -1.216726338e-09/27., 0., -1.696165826e-09/27., + 0., 9.864103043e-09/27., -1.081174038e-09/27., 0., 0., 1.696119228e-09/27., 1.295980653e-09/27., 4.584740223e-09/27., 0., 0., 1.6875/27., 5.906249999/27., 8.859375/27., 0., 1.718240896e-09/27., 0., 2.531249999/27., 8.859375001/27., 0., 0., -1.151603448e-09/27., 1.265625001/27., -2.198380542e-09/27., 0., 2.155219272e-09/27., 0., 0., 0., + 0., -3.298075133e-09/27., 0., 0., 0., 0., 0., -1.236762301e-09/27., 0., 0., 0., 0.8437500002/27., 3.796875/27., 0., 0., 0., 0., 1.265625/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.421875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 7.43520556e-09/27., 1.890700841e-09/27., -1.677015644e-09/27., 4.574558371e-09/27., 5.387380817e-09/27., 4.713708628e-08/27., 6.160509612e-09/27., 2.598998648e-09/27., -4.13579958e-09/27., 2.339299995e-09/27., -6.443287975e-09/27., 6.750000005/27., .125, 1.897323875e-09/27., -0.8437500017/27., 3.034834639e-09/27., 16.87500001/27., 8.437500002/27., -5.032818415e-09/27., -2.109375004/27., 16.875/27., 8.437499996/27., 3.233131787e-09/27., 4.218750014/27., 2.109374997/27., -6.328124988/27., + 0., -1.190751798e-08/27., 0., 0., 4.178708486e-09/27., -1.216726338e-09/27., -1.696165826e-09/27., -1.859604528e-08/27., 1.114028846e-09/27., -2.510214908e-09/27., 0., 0., 0., 1.915529185e-09/27., .125, 5.0625/27., 2.531250002/27., -0.8437500044/27., 0., 8.4375/27., 12.65625/27., 6.328124998/27., 1.242531493e-09/27., 8.437500001/27., 12.65625/27., -2.760365686e-09/27., 2.109374999/27., -2.585106643e-09/27., + 0., 7.442177611e-09/27., 0., 0., -1.857538388e-09/27., 0., 1.18081649e-09/27., 7.442177611e-09/27., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 4.218749999/27., 4.218750002/27., 0., 0., 4.218749999/27., 10.546875/27., -1.857538388e-09/27., 0., 4.218750002/27., 0., 0., 1.18081649e-09/27., + 0., -2.783008705e-09/27., 0., 0., 0., 0., 0., -1.935287196e-09/27., 0., 0., 0., 0., 0., 0., 0., 0., 0.8437500004/27., 2.953124999/27., 0., 0., 0., 2.109375/27., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.4218750001/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 1.790033168e-09/27., -5.705420567e-09/27., -1.564849524e-09/27., 0., -3.253350057e-09/27., -3.762320294e-09/27., -3.35421592e-08/27., -4.808537073e-09/27., -1.867281149e-09/27., 3.067502989e-09/27., -1.887786536e-09/27., 4.848647695e-09/27., -3.842436459e-09/27., 0., -1.504811106e-09/27., 0., -1.756210904e-09/27., 3.374999994/27., 1.687499999/27., 3.508114059e-09/27., -0.4218749969/27., 11.8125/27., 5.906250003/27., -1.928411608e-09/27., 17.71874999/27., 8.859375002/27., 11.81249999/27., + 0., 4.584740223e-09/27., 0., 0., -2.198380542e-09/27., 0., 0., 9.864103043e-09/27., 0., 1.718240896e-09/27., 0., 0., 0., -1.081174038e-09/27., 0., 0., -1.151603448e-09/27., 2.155219272e-09/27., 0., 1.6875/27., 2.531249999/27., 1.265625001/27., 0., 5.906249999/27., 8.859375001/27., 1.696119228e-09/27., 8.859375/27., 1.295980653e-09/27., + 0., -1.935287196e-09/27., 0., 0., 0., 0., 0., -2.783008705e-09/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.8437500004/27., 2.109375/27., 0., 0., 2.953124999/27., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.4218750001/27., 0., 0., 0., 0., 0., 0., + 0., -1.504240658e-09/27., 3.025333442e-09/27., 0., 0., 1.668362077e-09/27., 1.890214411e-09/27., 1.672993628e-08/27., 2.597906154e-09/27., 0., -1.562523827e-09/27., 0., -2.532301121e-09/27., 2.110870102e-09/27., 0., 0., 0., 0., 3.044674203e-09/27., 0., -1.752612067e-09/27., -1.758623983e-09/27., 1.687500001/27., 0.8437499987/27., 0., 7.593750005/27., 3.796874999/27., 15.1875/27., + 0., -1.236762301e-09/27., 0., 0., 0., 0., 0., -3.298075133e-09/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.8437500002/27., 1.265625/27., 0., 3.796875/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.4218750001/27., 0., 0., 0., + 0., 0., -1.0402305e-09/27., 0., 0., 0., 0., -5.494802163e-09/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -1.057399888e-09/27., 0., 0., 0., 0., 0., 0., 0.8437499982/27., 0.4218750005/27., 4.640624998/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.421875/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.4218750003/27., + }; + + static const double dgp6_into_dgp6_refined_3[] = + { + 1., 0., -.375, 2.10204759e-09/27., 3.164062499/27., 2.685082188e-09/27., 0.5537109359/27., 13.50000002/27., 1.27801857e-09/27., -5.062500003/27., 0., 1.582031252/27., -1.746243791e-09/27., 4.477651047e-09/27., 1.301720728e-09/27., -3.403137136e-09/27., -2.48697705e-09/27., 1.399117932e-09/27., -3.374999997/27., -2.488591681e-09/27., 1.265625/27., -3.134242688e-09/27., 0., -1.679484885e-09/27., 0., 1.687500007/27., 0., 6.16353408e-09/27., + 0., .5, 3.658215698e-09/27., -15.1875/27., 0., 10.44140624/27., 2.131820768e-09/27., -5.377342456e-09/27., 6.749999995/27., 4.015840528e-09/27., -7.593749999/27., -3.619460261e-09/27., 5.220703129/27., -6.061004549e-09/27., -4.949828173e-09/27., 4.798898977e-09/27., 5.394797821e-09/27., -2.732185104e-09/27., -1.660185991e-09/27., -1.687499998/27., 0., 1.898437503/27., 1.473665918e-09/27., 2.05126778e-09/27., 2.073730163e-09/27., -5.011931539e-09/27., 0.8437500021/27., -5.464675833e-09/27., + 0., 0., 6.749999997/27., 0., -12.65625/27., 1.066143282e-08/27., 13.44726562/27., 0., 5.849940986e-09/27., 3.374999995/27., 0., -6.328124996/27., -3.392918112e-09/27., 7.43520556e-09/27., 5.050458116e-09/27., -4.838126272e-09/27., -5.128275461e-09/27., 3.118168401e-09/27., 1.890700841e-09/27., -1.929522183e-09/27., -0.8437499999/27., -2.692445267e-09/27., -1.677015644e-09/27., -2.073282841e-09/27., -1.907480826e-09/27., 4.574558371e-09/27., -2.226468122e-09/27., 5.387380817e-09/27., + 0., 0., 2.045074215e-09/27., 3.374999999/27., 0., -8.859375007/27., 1.039162777e-09/27., 1.790033168e-09/27., -4.616572844e-09/27., 3.535189627e-09/27., 1.6875/27., -2.617280305e-09/27., -4.429687498/27., -5.705420567e-09/27., -3.507754433e-09/27., 3.453914691e-09/27., 3.403833474e-09/27., -2.352788912e-09/27., -1.564849524e-09/27., 1.293541624e-09/27., 0., -0.4218749983/27., 0., 1.483587431e-09/27., 1.283290186e-09/27., -3.253350057e-09/27., 1.689530748e-09/27., -3.762320294e-09/27., + 0., 0., 0., 0., 1.6875/27., 3.632327668e-09/27., -5.6953125/27., -1.504240658e-09/27., 2.531373966e-09/27., -1.820174975e-09/27., 0., 0.8437500013/27., 0., 3.025333442e-09/27., 1.718384884e-09/27., -1.735717804e-09/27., -1.613927342e-09/27., 1.218851466e-09/27., 0., 0., 0., 0., 0., 0., 0., 1.668362077e-09/27., 0., 1.890214411e-09/27., + 0., 0., 0., 0., 0., 0.8437499988/27., 0., 0., 0., 0., 0., 0., 0.4218750002/27., -1.0402305e-09/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0.421875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 1.080949017e-09/27., -3.92061665e-09/27., 2.375828888e-09/27., 1.082088734e-09/27., 2.763894428e-09/27., 13.49999996/27., 2.662581975e-09/27., -5.062499997/27., 0., 1.582031249/27., 3.013440618e-09/27., .75, 0., -7.593749995/27., 2.786171066e-09/27., 2.373046874/27., 10.12499999/27., 4.93248614e-09/27., -3.796874999/27., 6.218557924e-09/27., -3.375000001/27., 2.486121308e-09/27., 1.265625001/27., -5.062500013/27., 0., 1.265624989/27., + 0., 0., -4.337891854e-09/27., -2.688220646e-09/27., 0., 8.279972232e-09/27., -2.564397253e-09/27., 2.269673925e-08/27., 6.749999998/27., 0., -7.593750001/27., 1.695512275e-09/27., 5.220703118/27., -1.472085211e-09/27., .375, -2.730785687e-09/27., -11.39062501/27., 0., 0., 5.062499998/27., 0., -5.695312504/27., -3.579866378e-09/27., -1.687500001/27., -1.752529997e-09/27., 3.309833313e-09/27., -2.53125/27., 3.069988867e-09/27., + 0., 0., 2.719944115e-09/27., 1.39102052e-09/27., 0., -5.27208635e-09/27., 1.193951561e-09/27., -1.190751798e-08/27., 1.815723436e-09/27., 3.375000001/27., 0., -6.328125001/27., 5.080195146e-09/27., 0., -2.60886173e-09/27., 5.062500002/27., 3.558355659e-09/27., -9.492187501/27., 0., 1.441495174e-09/27., 2.53125/27., 2.570188176e-09/27., 4.178708486e-09/27., 0., -0.843749999/27., -1.216726338e-09/27., 0., -1.696165826e-09/27., + 0., 0., -1.280019966e-09/27., 0., 0., 2.551306254e-09/27., 0., 4.584740223e-09/27., 0., 0., 1.6875/27., 0., -4.429687502/27., 0., 1.329980617e-09/27., 0., 2.531249998/27., 0., 0., 0., 0., 1.265624999/27., -2.198380542e-09/27., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., -1.236762301e-09/27., 0., 0., 0., 0.8437499999/27., 0., 0., 0., 0., 0., 1.265625/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.4218749999/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 4.740131327e-09/27., -2.394091461e-09/27., -2.833538748e-09/27., -2.834398247e-09/27., 4.713708628e-08/27., -2.511138328e-09/27., -2.557980145e-09/27., 0., 1.155419779e-09/27., -1.910224451e-09/27., 6.750000005/27., -1.219869724e-09/27., -2.531250005/27., -2.117545045e-09/27., 0.7910156257/27., 16.87500001/27., -5.105185708e-09/27., -6.328125001/27., -6.206630111e-09/27., 16.875/27., -2.65324732e-09/27., -6.328125001/27., 4.218750014/27., 0., -6.328124988/27., + 0., 0., 3.083736641e-09/27., 2.268918792e-09/27., 0., -5.548698339e-09/27., 2.28557188e-09/27., -1.859604528e-08/27., 1.098504429e-09/27., 0., 1.126891968e-09/27., -1.27300754e-09/27., 4.513045636e-09/27., 1.915529185e-09/27., 3.374999998/27., 1.673396774e-09/27., -3.796874997/27., 0., 0., 8.437500001/27., 0., -9.492187497/27., 1.242531493e-09/27., 8.437500001/27., 1.392243972e-09/27., -2.760365686e-09/27., 2.109375/27., -2.585106643e-09/27., + 0., 0., -1.391406917e-09/27., 0., 0., 2.370734272e-09/27., 0., 7.442177611e-09/27., 0., 0., 0., 0., -2.427414581e-09/27., 0., 1.138837786e-09/27., 1.687499999/27., -1.771896967e-09/27., -3.1640625/27., 0., 0., 4.218750001/27., -1.201704392e-09/27., -1.857538388e-09/27., 0., 4.218749999/27., 0., 0., 1.18081649e-09/27., + 0., 0., 0., 0., 0., 0., 0., -1.935287196e-09/27., 0., 0., 0., 0., 0., 0., 0., 0., 0.8437500006/27., 0., 0., 0., 0., 2.109375/27., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.421875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., -3.800114121e-09/27., 1.817404218e-09/27., 2.774044754e-09/27., 1.897638307e-09/27., -3.35421592e-08/27., 1.650316554e-09/27., 1.915367952e-09/27., 0., 0., 0., -3.842436459e-09/27., 1.215890943e-09/27., 3.350154554e-09/27., 1.134768624e-09/27., 0., 3.374999994/27., 3.677123151e-09/27., -1.265624999/27., 4.347093102e-09/27., 11.8125/27., 1.913446388e-09/27., -4.4296875/27., 17.71874999/27., 0., 11.81249999/27., + 0., 0., -1.489851421e-09/27., -1.212054971e-09/27., 0., 2.785884723e-09/27., -1.216051235e-09/27., 9.864103043e-09/27., 0., 0., 0., 0., -2.020678656e-09/27., -1.081174038e-09/27., 0., 0., -1.526140554e-09/27., 0., 0., 1.6875/27., 0., -1.898437502/27., 0., 5.90625/27., 0., 1.696119228e-09/27., 8.859375/27., 1.295980653e-09/27., + 0., 0., 0., 0., 0., 0., 0., -2.783008705e-09/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.8437499998/27., 0., 0., 0., 2.953125/27., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.4218749999/27., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 2.116266852e-09/27., 0., -1.722358007e-09/27., 0., 1.672993628e-08/27., 0., -1.037168957e-09/27., 0., 0., 0., 2.110870102e-09/27., 0., -1.685264233e-09/27., 0., 0., 3.044674203e-09/27., -1.884920663e-09/27., 0., -2.149191101e-09/27., 1.687500001/27., 0., -0.6328125002/27., 7.593750005/27., 0., 15.1875/27., + 0., 0., 0., 0., 0., 0., 0., -3.298075133e-09/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.8437500001/27., 0., 0., 3.796875/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.421875/27., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., -5.494802163e-09/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -1.057399888e-09/27., 0., 0., 0., 0., 0., 0., 0.8437499982/27., 0., 4.640624998/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.421875/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.4218750003/27., + }; +}; + + +template <> +const double * const +FE_DGP<2>::Matrices::embedding[][GeometryInfo<2>::children_per_cell] = +{ + { FE_DGP_2d::dgp1_into_dgp1_refined_0, + FE_DGP_2d::dgp1_into_dgp1_refined_1, + FE_DGP_2d::dgp1_into_dgp1_refined_2, + FE_DGP_2d::dgp1_into_dgp1_refined_3 }, + { FE_DGP_2d::dgp2_into_dgp2_refined_0, + FE_DGP_2d::dgp2_into_dgp2_refined_1, + FE_DGP_2d::dgp2_into_dgp2_refined_2, + FE_DGP_2d::dgp2_into_dgp2_refined_3 }, + { FE_DGP_2d::dgp3_into_dgp3_refined_0, + FE_DGP_2d::dgp3_into_dgp3_refined_1, + FE_DGP_2d::dgp3_into_dgp3_refined_2, + FE_DGP_2d::dgp3_into_dgp3_refined_3 }, + { FE_DGP_2d::dgp4_into_dgp4_refined_0, + FE_DGP_2d::dgp4_into_dgp4_refined_1, + FE_DGP_2d::dgp4_into_dgp4_refined_2, + FE_DGP_2d::dgp4_into_dgp4_refined_3 }, + { FE_DGP_2d::dgp5_into_dgp5_refined_0, + FE_DGP_2d::dgp5_into_dgp5_refined_1, + FE_DGP_2d::dgp5_into_dgp5_refined_2, + FE_DGP_2d::dgp5_into_dgp5_refined_3 }, + { FE_DGP_2d::dgp6_into_dgp6_refined_0, + FE_DGP_2d::dgp6_into_dgp6_refined_1, + FE_DGP_2d::dgp6_into_dgp6_refined_2, + FE_DGP_2d::dgp6_into_dgp6_refined_3 } +}; + +template <> +const unsigned int FE_DGP<2>::Matrices::n_embedding_matrices += sizeof(FE_DGP<2>::Matrices::embedding) / +sizeof(FE_DGP<2>::Matrices::embedding[0]); + + +/* + * These elements are not defined by interpolation, therefore there + * are no interpolation matrices. + */ + +template <> +const double * const FE_DGP<2>::Matrices::projection_matrices[][GeometryInfo<2>::children_per_cell]; + +template <> +const unsigned int FE_DGP<2>::Matrices::n_projection_matrices += 0; + + +#else // #if deal_II_dimension +// On gcc2.95 on Alpha OSF1, the native assembler does not like empty +// files, so provide some dummy code +namespace { void dummy () {}; }; +#endif // #if deal_II_dimension == 2 diff --git a/deal.II/deal.II/source/fe/fe_dgp_3d.cc b/deal.II/deal.II/source/fe/fe_dgp_3d.cc new file mode 100644 index 0000000000..8cedf0e20e --- /dev/null +++ b/deal.II/deal.II/source/fe/fe_dgp_3d.cc @@ -0,0 +1,792 @@ +//---------------------------------------------------------------- +// $Id$ +// Version: $Name$ +// +// Copyright (C) 1998, 1999, 2000, 2001, 2002 by the deal.II authors +// +// This file is subject to QPL and may not be distributed +// without copyright and license information. Please refer +// to the file deal.II/doc/license.html for the text and +// further information on this license. +// +//---------------------------------------------------------------- + + +// only compile in 3d +#if deal_II_dimension == 3 + +#include + +// Transfer matrices for finite elements + +namespace FE_DGP_3d +{ + static const double dgp0_into_dgp0_refined_0[] = + { + 1., + }; + + static const double dgp0_into_dgp0_refined_1[] = + { + 1., + }; + + static const double dgp0_into_dgp0_refined_2[] = + { + 1., + }; + + static const double dgp0_into_dgp0_refined_3[] = + { + 1., + }; + + static const double dgp0_into_dgp0_refined_4[] = + { + 1., + }; + + static const double dgp0_into_dgp0_refined_5[] = + { + 1., + }; + + static const double dgp0_into_dgp0_refined_6[] = + { + 1., + }; + + static const double dgp0_into_dgp0_refined_7[] = + { + 1., + }; + + static const double dgp1_into_dgp1_refined_0[] = + { + 1., 0., 0., 0., + 0., .5, 0., 0., + 0., 0., .5, 0., + 0., 0., 0., .5, + }; + + static const double dgp1_into_dgp1_refined_1[] = + { + 1., .5, 0., 0., + 0., .5, 0., 0., + 0., 0., .5, 0., + 0., 0., 0., .5, + }; + + static const double dgp1_into_dgp1_refined_2[] = + { + 1., .5, 0., .5, + 0., .5, 0., 0., + 0., 0., .5, 0., + 0., 0., 0., .5, + }; + + static const double dgp1_into_dgp1_refined_3[] = + { + 1., 0., 0., .5, + 0., .5, 0., 0., + 0., 0., .5, 0., + 0., 0., 0., .5, + }; + + static const double dgp1_into_dgp1_refined_4[] = + { + 1., 0., .5, 0., + 0., .5, 0., 0., + 0., 0., .5, 0., + 0., 0., 0., .5, + }; + + static const double dgp1_into_dgp1_refined_5[] = + { + 1., .5, .5, 0., + 0., .5, 0., 0., + 0., 0., .5, 0., + 0., 0., 0., .5, + }; + + static const double dgp1_into_dgp1_refined_6[] = + { + 1., .5, .5, .5, + 0., .5, 0., 0., + 0., 0., .5, 0., + 0., 0., 0., .5, + }; + + static const double dgp1_into_dgp1_refined_7[] = + { + 1., 0., .5, .5, + 0., .5, 0., 0., + 0., 0., .5, 0., + 0., 0., 0., .5, + }; + + static const double dgp2_into_dgp2_refined_0[] = + { + 1., 0., -.375, 0., 0., -.375, 0., 0., 0., -.375, + 0., .5, 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., .25, 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., .5, 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., .25, 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., .25, 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., .5, 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., .25, 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, + }; + + static const double dgp2_into_dgp2_refined_1[] = + { + 1., .5, 0., 0., 0., -.375, 0., 0., 0., -.375, + 0., .5, .75, 0., 0., 0., 0., 0., 0., 0., + 0., 0., .25, 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., .5, .25, 0., 0., 0., 0., 0., + 0., 0., 0., 0., .25, 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., .25, 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., .5, .25, 0., 0., + 0., 0., 0., 0., 0., 0., 0., .25, 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, + }; + + static const double dgp2_into_dgp2_refined_2[] = + { + 1., .5, 0., 0., 0., -.375, .5, .25, 0., 0., + 0., .5, .75, 0., 0., 0., 0., .25, 0., 0., + 0., 0., .25, 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., .5, .25, 0., 0., 0., .25, 0., + 0., 0., 0., 0., .25, 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., .25, 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., .5, .25, 0., .75, + 0., 0., 0., 0., 0., 0., 0., .25, 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, + }; + + static const double dgp2_into_dgp2_refined_3[] = + { + 1., 0., -.375, 0., 0., -.375, .5, 0., 0., 0., + 0., .5, 0., 0., 0., 0., 0., .25, 0., 0., + 0., 0., .25, 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., .5, 0., 0., 0., 0., .25, 0., + 0., 0., 0., 0., .25, 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., .25, 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., .5, 0., 0., .75, + 0., 0., 0., 0., 0., 0., 0., .25, 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, + }; + + static const double dgp2_into_dgp2_refined_4[] = + { + 1., 0., -.375, .5, 0., 0., 0., 0., 0., -.375, + 0., .5, 0., 0., .25, 0., 0., 0., 0., 0., + 0., 0., .25, 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., .5, 0., .75, 0., 0., 0., 0., + 0., 0., 0., 0., .25, 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., .25, 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., .5, 0., .25, 0., + 0., 0., 0., 0., 0., 0., 0., .25, 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, + }; + + static const double dgp2_into_dgp2_refined_5[] = + { + 1., .5, 0., .5, .25, 0., 0., 0., 0., -.375, + 0., .5, .75, 0., .25, 0., 0., 0., 0., 0., + 0., 0., .25, 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., .5, .25, .75, 0., 0., 0., 0., + 0., 0., 0., 0., .25, 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., .25, 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., .5, .25, .25, 0., + 0., 0., 0., 0., 0., 0., 0., .25, 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, + }; + + static const double dgp2_into_dgp2_refined_6[] = + { + 1., .5, 0., .5, .25, 0., .5, .25, .25, 0., + 0., .5, .75, 0., .25, 0., 0., .25, 0., 0., + 0., 0., .25, 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., .5, .25, .75, 0., 0., .25, 0., + 0., 0., 0., 0., .25, 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., .25, 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., .5, .25, .25, .75, + 0., 0., 0., 0., 0., 0., 0., .25, 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, + }; + + static const double dgp2_into_dgp2_refined_7[] = + { + 1., 0., -.375, .5, 0., 0., .5, 0., .25, 0., + 0., .5, 0., 0., .25, 0., 0., .25, 0., 0., + 0., 0., .25, 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., .5, 0., .75, 0., 0., .25, 0., + 0., 0., 0., 0., .25, 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., .25, 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., .5, 0., .25, .75, + 0., 0., 0., 0., 0., 0., 0., .25, 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, + }; + + static const double dgp3_into_dgp3_refined_0[] = + { + 1., 0., -.375, 0., 0., 0., 0., -.375, 0., 0., 0., 0., 0., 0., 0., 0., -.375, 0., 0., 0., + 0., .5, 0., -15.1875/27., 0., 0., 0., 0., -5.0625/27., 0., 0., 0., 0., 0., 0., 0., 0., -5.0625/27., 0., 0., + 0., 0., .25, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., .5, 0., -5.0625/27., 0., 0., -15.1875/27., 0., 0., 0., 0., 0., 0., 0., 0., -5.0625/27., 0., + 0., 0., 0., 0., 0., .25, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., .25, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .5, 0., -5.0625/27., 0., 0., -5.0625/27., 0., 0., 0., -15.1875/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, + }; + + static const double dgp3_into_dgp3_refined_1[] = + { + 1., .5, 0., -.125, 0., 0., 0., -.375, -5.0625/27., 0., 0., 0., 0., 0., 0., 0., -.375, -5.0625/27., 0., 0., + 0., .5, .75, .375, 0., 0., 0., 0., -5.0625/27., 0., 0., 0., 0., 0., 0., 0., 0., -5.0625/27., 0., 0., + 0., 0., .25, 16.875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., .5, .25, 0., 0., 0., -15.1875/27., 0., 0., 0., 0., 0., 0., 0., 0., -5.0625/27., 0., + 0., 0., 0., 0., 0., .25, .375, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., .25, .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .5, .25, 0., 0., 0., -5.0625/27., 0., 0., 0., -15.1875/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .375, 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .125, 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .125, 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, + }; + + static const double dgp3_into_dgp3_refined_2[] = + { + 1., .5, 0., -.125, 0., 0., 0., -.375, -5.0625/27., 0., .5, .25, 0., 0., 0., -5.0625/27., 0., 0., 0., -.125, + 0., .5, .75, .375, 0., 0., 0., 0., -5.0625/27., 0., 0., .25, .375, 0., 0., 0., 0., 0., 0., 0., + 0., 0., .25, 16.875/27., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., .5, .25, 0., 0., 0., -15.1875/27., 0., 0., 0., .25, .125, 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., .25, .375, 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., .25, .125, 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .5, .25, 0., 0., 0., -5.0625/27., .75, .375, 0., .375, + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .375, 0., 0., 0., 0., .375, 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .125, 0., 0., 0., .375, 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .125, 0., 16.875/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, + }; + + static const double dgp3_into_dgp3_refined_3[] = + { + 1., 0., -.375, 0., 0., 0., 0., -.375, 0., 0., .5, 0., -5.0625/27., 0., 0., -5.0625/27., 0., 0., 0., -.125, + 0., .5, 0., -15.1875/27., 0., 0., 0., 0., -5.0625/27., 0., 0., .25, 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., .25, 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., .5, 0., -5.0625/27., 0., 0., -15.1875/27., 0., 0., 0., .25, 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., .25, 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., .25, 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .5, 0., -5.0625/27., 0., 0., -5.0625/27., .75, 0., 0., .375, + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., 0., 0., 0., 0., .375, 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., 0., 0., 0., .375, 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., 0., 16.875/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, + }; + + static const double dgp3_into_dgp3_refined_4[] = + { + 1., 0., -.375, 0., .5, 0., -5.0625/27., 0., 0., -.125, 0., 0., 0., 0., 0., 0., -.375, 0., -5.0625/27., 0., + 0., .5, 0., -15.1875/27., 0., .25, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -5.0625/27., 0., 0., + 0., 0., .25, 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., .5, 0., -5.0625/27., .75, 0., .375, 0., 0., 0., 0., 0., 0., 0., 0., -5.0625/27., 0., + 0., 0., 0., 0., 0., .25, 0., 0., .375, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., .25, 0., 16.875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .5, 0., -5.0625/27., .25, 0., 0., 0., 0., 0., -15.1875/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., 0., .125, 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., .375, 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., .125, 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, + }; + + static const double dgp3_into_dgp3_refined_5[] = + { + 1., .5, 0., -.125, .5, .25, 0., 0., 0., -.125, 0., 0., 0., 0., 0., 0., -.375, -5.0625/27., -5.0625/27., 0., + 0., .5, .75, .375, 0., .25, .375, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -5.0625/27., 0., 0., + 0., 0., .25, 16.875/27., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., .5, .25, 0., .75, .375, .375, 0., 0., 0., 0., 0., 0., 0., 0., -5.0625/27., 0., + 0., 0., 0., 0., 0., .25, .375, 0., .375, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., .25, .125, 16.875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .5, .25, 0., .25, .125, 0., 0., 0., 0., -15.1875/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .375, 0., .125, 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .125, .375, 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .125, .125, 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, + }; + + static const double dgp3_into_dgp3_refined_6[] = + { + 1., .5, 0., -.125, .5, .25, 0., 0., 0., -.125, .5, .25, 0., .25, .125, 0., 0., 0., 0., -.125, + 0., .5, .75, .375, 0., .25, .375, 0., 0., 0., 0., .25, .375, 0., .125, 0., 0., 0., 0., 0., + 0., 0., .25, 16.875/27., 0., 0., .125, 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., .5, .25, 0., .75, .375, .375, 0., 0., 0., .25, .125, .375, 0., 0., 0., 0., + 0., 0., 0., 0., 0., .25, .375, 0., .375, 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., .25, .125, 16.875/27., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .5, .25, 0., .25, .125, 0., .75, .375, .375, .375, + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .375, 0., .125, 0., 0., .375, 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .125, .375, 0., 0., .375, 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .125, .125, 16.875/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, + }; + + static const double dgp3_into_dgp3_refined_7[] = + { + 1., 0., -.375, 0., .5, 0., -5.0625/27., 0., 0., -.125, .5, 0., -5.0625/27., .25, 0., 0., 0., 0., 0., -.125, + 0., .5, 0., -15.1875/27., 0., .25, 0., 0., 0., 0., 0., .25, 0., 0., .125, 0., 0., 0., 0., 0., + 0., 0., .25, 0., 0., 0., .125, 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., .5, 0., -5.0625/27., .75, 0., .375, 0., 0., 0., .25, 0., .375, 0., 0., 0., 0., + 0., 0., 0., 0., 0., .25, 0., 0., .375, 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., .25, 0., 16.875/27., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .5, 0., -5.0625/27., .25, 0., 0., .75, 0., .375, .375, + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., 0., .125, 0., 0., .375, 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., .375, 0., 0., .375, 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., .125, 16.875/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, + }; + + static const double dgp4_into_dgp4_refined_0[] = + { + 1., 0., -.375, 0., 3.1640625/27., 0., 0., 0., 0., -.375, 0., 3.796875/27., 0., 0., 3.1640625/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -.375, 0., 3.796875/27., 0., 0., 3.796875/27., 0., 0., 0., 3.1640625/27., + 0., .5, 0., -15.1875/27., 0., 0., 0., 0., 0., 0., -5.0625/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -5.0625/27., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., .25, 0., -12.65625/27., 0., 0., 0., 0., 0., 0., -2.53125/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -2.53125/27., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., .5, 0., -5.0625/27., 0., 0., 0., 0., -15.1875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -5.0625/27., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., .25, 0., -7.59375/27., 0., 0., 0., 0., -7.59375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -2.53125/27., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., -2.53125/27., 0., 0., -12.65625/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -2.53125/27., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .5, 0., -5.0625/27., 0., 0., 0., 0., -5.0625/27., 0., 0., 0., 0., 0., 0., 0., 0., -15.1875/27., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., -7.59375/27., 0., 0., 0., 0., -2.53125/27., 0., 0., 0., 0., 0., 0., 0., 0., -7.59375/27., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., -2.53125/27., 0., 0., -7.59375/27., 0., 0., 0., 0., 0., 0., 0., 0., -7.59375/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., -2.53125/27., 0., 0., -2.53125/27., 0., 0., 0., -12.65625/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., + }; + + static const double dgp4_into_dgp4_refined_1[] = + { + 1., .5, 0., -.125, 0., 0., 0., 0., 0., -.375, -5.0625/27., 0., 0., 0., 3.1640625/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -.375, -5.0625/27., 0., 0., 0., 3.796875/27., 0., 0., 0., 3.1640625/27., + 0., .5, .75, .375, -.125, 0., 0., 0., 0., 0., -5.0625/27., -7.59375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -5.0625/27., -7.59375/27., 0., 0., 0., 0., 0., 0., 0., + 0., 0., .25, 16.875/27., 16.875/27., 0., 0., 0., 0., 0., 0., -2.53125/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -2.53125/27., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., .125, 11.8125/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., .5, .25, 0., -1.6875/27., 0., 0., 0., -15.1875/27., -7.59375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -5.0625/27., -2.53125/27., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., .25, .375, 5.0625/27., 0., 0., 0., 0., -7.59375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -2.53125/27., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., .125, 8.4375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .125, 0., 0., 0., -12.65625/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -2.53125/27., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 5.0625/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .5, .25, 0., -1.6875/27., 0., 0., 0., -5.0625/27., -2.53125/27., 0., 0., 0., 0., 0., 0., 0., -15.1875/27., -7.59375/27., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .375, 5.0625/27., 0., 0., 0., 0., -2.53125/27., 0., 0., 0., 0., 0., 0., 0., 0., -7.59375/27., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 8.4375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .125, 0., 0., 0., -7.59375/27., 0., 0., 0., 0., 0., 0., 0., 0., -7.59375/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 5.0625/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .125, 0., 0., 0., -2.53125/27., 0., 0., 0., -12.65625/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 5.0625/27., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 1.6875/27., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 1.6875/27., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., + }; + + static const double dgp4_into_dgp4_refined_2[] = + { + 1., .5, 0., -.125, 0., 0., 0., 0., 0., -.375, -5.0625/27., 0., 0., 0., 3.1640625/27., .5, .25, 0., -1.6875/27., 0., 0., 0., -5.0625/27., -2.53125/27., 0., 0., 0., 0., 0., 0., 0., -.125, -1.6875/27., 0., 0., + 0., .5, .75, .375, -.125, 0., 0., 0., 0., 0., -5.0625/27., -7.59375/27., 0., 0., 0., 0., .25, .375, 5.0625/27., 0., 0., 0., 0., -2.53125/27., 0., 0., 0., 0., 0., 0., 0., 0., -1.6875/27., 0., 0., + 0., 0., .25, 16.875/27., 16.875/27., 0., 0., 0., 0., 0., 0., -2.53125/27., 0., 0., 0., 0., 0., .125, 8.4375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., .125, 11.8125/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., .5, .25, 0., -1.6875/27., 0., 0., 0., -15.1875/27., -7.59375/27., 0., 0., 0., 0., 0., .25, .125, 0., 0., 0., -7.59375/27., 0., 0., 0., 0., 0., 0., 0., 0., -1.6875/27., 0., + 0., 0., 0., 0., 0., 0., .25, .375, 5.0625/27., 0., 0., 0., 0., -7.59375/27., 0., 0., 0., 0., 0., 0., .125, 5.0625/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., .125, 8.4375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .125, 0., 0., 0., -12.65625/27., 0., 0., 0., 0., 0., 0., 0., .125, 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 5.0625/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .5, .25, 0., -1.6875/27., 0., 0., 0., -5.0625/27., -2.53125/27., 0., .75, .375, 0., 0., 0., -7.59375/27., .375, 5.0625/27., 0., -.125, + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .375, 5.0625/27., 0., 0., 0., 0., -2.53125/27., 0., 0., .375, 15.1875/27., 0., 0., 0., 0., 5.0625/27., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 8.4375/27., 0., 0., 0., 0., 0., 0., 0., 0., 5.0625/27., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .125, 0., 0., 0., -7.59375/27., 0., 0., 0., .375, 5.0625/27., 0., 0., 0., 5.0625/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 5.0625/27., 0., 0., 0., 0., 0., 0., 0., 5.0625/27., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 1.6875/27., 0., 0., 0., 0., 0., 0., 5.0625/27., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .125, 0., 0., 0., -2.53125/27., 16.875/27., 8.4375/27., 0., 16.875/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 5.0625/27., 0., 0., 0., 0., 8.4375/27., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 1.6875/27., 0., 0., 0., 8.4375/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 1.6875/27., 0., 11.8125/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., + }; + + static const double dgp4_into_dgp4_refined_3[] = + { + 1., 0., -.375, 0., 3.1640625/27., 0., 0., 0., 0., -.375, 0., 3.796875/27., 0., 0., 3.1640625/27., .5, 0., -5.0625/27., 0., 0., 0., 0., -5.0625/27., 0., 0., 0., 0., 0., 0., 0., 0., -.125, 0., 0., 0., + 0., .5, 0., -15.1875/27., 0., 0., 0., 0., 0., 0., -5.0625/27., 0., 0., 0., 0., 0., .25, 0., -7.59375/27., 0., 0., 0., 0., -2.53125/27., 0., 0., 0., 0., 0., 0., 0., 0., -1.6875/27., 0., 0., + 0., 0., .25, 0., -12.65625/27., 0., 0., 0., 0., 0., 0., -2.53125/27., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., .5, 0., -5.0625/27., 0., 0., 0., 0., -15.1875/27., 0., 0., 0., 0., 0., 0., .25, 0., -2.53125/27., 0., 0., -7.59375/27., 0., 0., 0., 0., 0., 0., 0., 0., -1.6875/27., 0., + 0., 0., 0., 0., 0., 0., .25, 0., -7.59375/27., 0., 0., 0., 0., -7.59375/27., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., -2.53125/27., 0., 0., -12.65625/27., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .5, 0., -5.0625/27., 0., 0., 0., 0., -5.0625/27., 0., 0., .75, 0., -7.59375/27., 0., 0., -7.59375/27., .375, 0., 0., -.125, + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., -7.59375/27., 0., 0., 0., 0., -2.53125/27., 0., 0., .375, 0., 0., 0., 0., 0., 5.0625/27., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 5.0625/27., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., -2.53125/27., 0., 0., -7.59375/27., 0., 0., 0., .375, 0., 0., 0., 0., 5.0625/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 5.0625/27., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 5.0625/27., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., -2.53125/27., 0., 0., -2.53125/27., 16.875/27., 0., 0., 16.875/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 8.4375/27., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 8.4375/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 11.8125/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., + }; + + static const double dgp4_into_dgp4_refined_4[] = + { + 1., 0., -.375, 0., 3.1640625/27., .5, 0., -5.0625/27., 0., 0., 0., 0., -.125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -.375, 0., 3.796875/27., -5.0625/27., 0., 0., 0., 0., 0., 3.1640625/27., + 0., .5, 0., -15.1875/27., 0., 0., .25, 0., -7.59375/27., 0., 0., 0., 0., -1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -5.0625/27., 0., 0., -2.53125/27., 0., 0., 0., 0., 0., + 0., 0., .25, 0., -12.65625/27., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -2.53125/27., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., .125, 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., .5, 0., -5.0625/27., 0., .75, 0., -7.59375/27., .375, 0., -.125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -5.0625/27., 0., -7.59375/27., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., .25, 0., -7.59375/27., 0., .375, 0., 0., 5.0625/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -2.53125/27., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 5.0625/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., -2.53125/27., 16.875/27., 0., 16.875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -2.53125/27., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 8.4375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 11.8125/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .5, 0., -5.0625/27., 0., .25, 0., -2.53125/27., 0., 0., -1.6875/27., 0., 0., 0., 0., 0., 0., -15.1875/27., 0., -7.59375/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., -7.59375/27., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -7.59375/27., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., -2.53125/27., .375, 0., 5.0625/27., 0., 0., 0., 0., 0., 0., 0., 0., -7.59375/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 5.0625/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 8.4375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., -2.53125/27., .125, 0., 0., 0., 0., 0., -12.65625/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 1.6875/27., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 5.0625/27., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 1.6875/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., + }; + + static const double dgp4_into_dgp4_refined_5[] = + { + 1., .5, 0., -.125, 0., .5, .25, 0., -1.6875/27., 0., 0., 0., -.125, -1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -.375, -5.0625/27., 0., -5.0625/27., -2.53125/27., 0., 0., 0., 0., 3.1640625/27., + 0., .5, .75, .375, -.125, 0., .25, .375, 5.0625/27., 0., 0., 0., 0., -1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -5.0625/27., -7.59375/27., 0., -2.53125/27., 0., 0., 0., 0., 0., + 0., 0., .25, 16.875/27., 16.875/27., 0., 0., .125, 8.4375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -2.53125/27., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., .125, 11.8125/27., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., .5, .25, 0., -1.6875/27., .75, .375, 0., .375, 5.0625/27., -.125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -5.0625/27., -2.53125/27., -7.59375/27., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., .25, .375, 5.0625/27., 0., .375, 15.1875/27., 0., 5.0625/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -2.53125/27., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., .125, 8.4375/27., 0., 0., 5.0625/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .125, 0., 16.875/27., 8.4375/27., 16.875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -2.53125/27., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 5.0625/27., 0., 8.4375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 1.6875/27., 11.8125/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .5, .25, 0., -1.6875/27., .25, .125, 0., 0., 0., -1.6875/27., 0., 0., 0., 0., 0., 0., -15.1875/27., -7.59375/27., -7.59375/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .375, 5.0625/27., 0., .125, 5.0625/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -7.59375/27., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 8.4375/27., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .125, 0., .375, 5.0625/27., 5.0625/27., 0., 0., 0., 0., 0., 0., 0., 0., -7.59375/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 5.0625/27., 0., 5.0625/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 1.6875/27., 8.4375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .125, 0., .125, 1.6875/27., 0., 0., 0., 0., -12.65625/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 5.0625/27., 0., 1.6875/27., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 1.6875/27., 5.0625/27., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 1.6875/27., 1.6875/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., + }; + + static const double dgp4_into_dgp4_refined_6[] = + { + 1., .5, 0., -.125, 0., .5, .25, 0., -1.6875/27., 0., 0., 0., -.125, -1.6875/27., 0., .5, .25, 0., -1.6875/27., .25, .125, 0., 0., 0., -1.6875/27., 0., 0., 0., 0., 0., 0., -.125, -1.6875/27., -1.6875/27., 0., + 0., .5, .75, .375, -.125, 0., .25, .375, 5.0625/27., 0., 0., 0., 0., -1.6875/27., 0., 0., .25, .375, 5.0625/27., 0., .125, 5.0625/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -1.6875/27., 0., 0., + 0., 0., .25, 16.875/27., 16.875/27., 0., 0., .125, 8.4375/27., 0., 0., 0., 0., 0., 0., 0., 0., .125, 8.4375/27., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., .125, 11.8125/27., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., .5, .25, 0., -1.6875/27., .75, .375, 0., .375, 5.0625/27., -.125, 0., 0., 0., 0., .25, .125, 0., .375, 5.0625/27., 5.0625/27., 0., 0., 0., 0., 0., 0., 0., 0., -1.6875/27., 0., + 0., 0., 0., 0., 0., 0., .25, .375, 5.0625/27., 0., .375, 15.1875/27., 0., 5.0625/27., 0., 0., 0., 0., 0., 0., .125, 5.0625/27., 0., 5.0625/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., .125, 8.4375/27., 0., 0., 5.0625/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .125, 0., 16.875/27., 8.4375/27., 16.875/27., 0., 0., 0., 0., 0., 0., 0., .125, 1.6875/27., 8.4375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 5.0625/27., 0., 8.4375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 1.6875/27., 11.8125/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .5, .25, 0., -1.6875/27., .25, .125, 0., 0., 0., -1.6875/27., .75, .375, 0., .375, 5.0625/27., 0., .375, 5.0625/27., 5.0625/27., -.125, + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .375, 5.0625/27., 0., .125, 5.0625/27., 0., 0., 0., 0., .375, 15.1875/27., 0., 5.0625/27., 0., 0., 5.0625/27., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 8.4375/27., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 5.0625/27., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .125, 0., .375, 5.0625/27., 5.0625/27., 0., 0., 0., .375, 5.0625/27., 15.1875/27., 0., 0., 5.0625/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 5.0625/27., 0., 5.0625/27., 0., 0., 0., 0., 0., 5.0625/27., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 1.6875/27., 8.4375/27., 0., 0., 0., 0., 0., 5.0625/27., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .125, 0., .125, 1.6875/27., 0., 16.875/27., 8.4375/27., 8.4375/27., 16.875/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 5.0625/27., 0., 1.6875/27., 0., 0., 8.4375/27., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 1.6875/27., 5.0625/27., 0., 0., 8.4375/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 1.6875/27., 1.6875/27., 11.8125/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., + }; + + static const double dgp4_into_dgp4_refined_7[] = + { + 1., 0., -.375, 0., 3.1640625/27., .5, 0., -5.0625/27., 0., 0., 0., 0., -.125, 0., 0., .5, 0., -5.0625/27., 0., .25, 0., -2.53125/27., 0., 0., -1.6875/27., 0., 0., 0., 0., 0., 0., -.125, 0., -1.6875/27., 0., + 0., .5, 0., -15.1875/27., 0., 0., .25, 0., -7.59375/27., 0., 0., 0., 0., -1.6875/27., 0., 0., .25, 0., -7.59375/27., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -1.6875/27., 0., 0., + 0., 0., .25, 0., -12.65625/27., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., .125, 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., .5, 0., -5.0625/27., 0., .75, 0., -7.59375/27., .375, 0., -.125, 0., 0., 0., 0., .25, 0., -2.53125/27., .375, 0., 5.0625/27., 0., 0., 0., 0., 0., 0., 0., 0., -1.6875/27., 0., + 0., 0., 0., 0., 0., 0., .25, 0., -7.59375/27., 0., .375, 0., 0., 5.0625/27., 0., 0., 0., 0., 0., 0., .125, 0., 0., 5.0625/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 5.0625/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., -2.53125/27., 16.875/27., 0., 16.875/27., 0., 0., 0., 0., 0., 0., 0., .125, 0., 8.4375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 8.4375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 11.8125/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .5, 0., -5.0625/27., 0., .25, 0., -2.53125/27., 0., 0., -1.6875/27., .75, 0., -7.59375/27., .375, 0., 0., .375, 0., 5.0625/27., -.125, + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., -7.59375/27., 0., .125, 0., 0., 0., 0., 0., .375, 0., 0., 5.0625/27., 0., 0., 5.0625/27., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 5.0625/27., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., -2.53125/27., .375, 0., 5.0625/27., 0., 0., 0., .375, 0., 15.1875/27., 0., 0., 5.0625/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 5.0625/27., 0., 0., 0., 0., 0., 5.0625/27., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 8.4375/27., 0., 0., 0., 0., 0., 5.0625/27., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., -2.53125/27., .125, 0., 0., 16.875/27., 0., 8.4375/27., 16.875/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 1.6875/27., 0., 0., 8.4375/27., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 5.0625/27., 0., 0., 8.4375/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 1.6875/27., 11.8125/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., + }; + +}; + + +template <> +const double * const +FE_DGP<3>::Matrices::embedding[][GeometryInfo<3>::children_per_cell] = +{ + { FE_DGP_3d::dgp1_into_dgp1_refined_0, FE_DGP_3d::dgp1_into_dgp1_refined_1, + FE_DGP_3d::dgp1_into_dgp1_refined_2, FE_DGP_3d::dgp1_into_dgp1_refined_3, + FE_DGP_3d::dgp1_into_dgp1_refined_4, FE_DGP_3d::dgp1_into_dgp1_refined_5, + FE_DGP_3d::dgp1_into_dgp1_refined_6, FE_DGP_3d::dgp1_into_dgp1_refined_7 }, + { FE_DGP_3d::dgp2_into_dgp2_refined_0, FE_DGP_3d::dgp2_into_dgp2_refined_1, + FE_DGP_3d::dgp2_into_dgp2_refined_2, FE_DGP_3d::dgp2_into_dgp2_refined_3, + FE_DGP_3d::dgp2_into_dgp2_refined_4, FE_DGP_3d::dgp2_into_dgp2_refined_5, + FE_DGP_3d::dgp2_into_dgp2_refined_6, FE_DGP_3d::dgp2_into_dgp2_refined_7 }, + { FE_DGP_3d::dgp3_into_dgp3_refined_0, FE_DGP_3d::dgp3_into_dgp3_refined_1, + FE_DGP_3d::dgp3_into_dgp3_refined_2, FE_DGP_3d::dgp3_into_dgp3_refined_3, + FE_DGP_3d::dgp3_into_dgp3_refined_4, FE_DGP_3d::dgp3_into_dgp3_refined_5, + FE_DGP_3d::dgp3_into_dgp3_refined_6, FE_DGP_3d::dgp3_into_dgp3_refined_7 }, + { FE_DGP_3d::dgp4_into_dgp4_refined_0, FE_DGP_3d::dgp4_into_dgp4_refined_1, + FE_DGP_3d::dgp4_into_dgp4_refined_2, FE_DGP_3d::dgp4_into_dgp4_refined_3, + FE_DGP_3d::dgp4_into_dgp4_refined_4, FE_DGP_3d::dgp4_into_dgp4_refined_5, + FE_DGP_3d::dgp4_into_dgp4_refined_6, FE_DGP_3d::dgp4_into_dgp4_refined_7 } +}; + +template <> +const unsigned int FE_DGP<3>::Matrices::n_embedding_matrices += sizeof(FE_DGP<3>::Matrices::embedding) / +sizeof(FE_DGP<3>::Matrices::embedding[0]); + + +/* + * These elements are not defined by interpolation, therefore there + * are no interpolation matrices. + */ + +template <> +const double * const FE_DGP<3>::Matrices::projection_matrices[][GeometryInfo<3>::children_per_cell]; + +template <> +const unsigned int FE_DGP<3>::Matrices::n_projection_matrices += 0; + + +#else // #if deal_II_dimension +// On gcc2.95 on Alpha OSF1, the native assembler does not like empty +// files, so provide some dummy code +namespace { void dummy () {}; }; +#endif // #if deal_II_dimension