#ifndef GUARD_22e797a8f3e8c322f33c41e07bd15165
#define GUARD_22e797a8f3e8c322f33c41e07bd15165

#define USING_DUNE_PYTHON 1
#include <config.h>
#include <dune/alugrid/dgf.hh>
#include <dune/alugrid/grid.hh>
#include <dune/fem/gridpart/adaptiveleafgridpart.hh>
#include <dune/fem/gridpart/filter/simple.hh>
#include <dune/fem/gridpart/filteredgridpart.hh>
#include <dune/fempy/py/gridview.hh>
#include <dune/python/grid/gridview.hh>
#include <dune/python/grid/hierarchical.hh>
#include <dune/fem/function/localfunction/bindable.hh>
#include <dune/fem/common/intersectionside.hh>
#include <dune/python/pybind11/pybind11.h>
#include <dune/python/pybind11/extensions.h>
#include <dune/fempy/py/grid/gridpart.hh>
#include <dune/common/exceptions.hh>
#include <dune/fempy/py/ufllocalfunction.hh>

namespace UFLLocalFunctions_22e797a8f3e8c322f33c41e07bd15165
{

  // UFLLocalFunction
// ----------------

template< class GridPart >
struct UFLLocalFunction
  : public Dune::Fem::BindableGridFunctionWithSpace<GridPart,Dune::Dim<2>>
{
  typedef GridPart GridPartType;
  typedef typename GridPartType::GridViewType GridView;
  typedef typename GridView::ctype ctype;
  typedef Dune::Fem::BindableGridFunctionWithSpace<GridPart,Dune::Dim<2>> BaseType;
  typedef Dune::Fem::GridFunctionSpace<GridPartType,Dune::Dim<2>> FunctionSpaceType;
  typedef typename GridPartType::template Codim< 0 >::EntityType EntityType;
  typedef typename GridPartType::IntersectionType IntersectionType;
  typedef typename EntityType::Geometry Geometry;
  typedef typename Geometry::GlobalCoordinate GlobalCoordinateType;
  typedef Dune::Fem::IntersectionSide Side;
  typedef std::tuple<> ConstantTupleType;
  typedef std::tuple<> CoefficientTupleType;
  static constexpr bool gridPartValid = true;
  template< std::size_t i >
  using CoefficientType = std::tuple_element_t< i, CoefficientTupleType >;
  template< std::size_t i >
  using ConstantType = typename std::tuple_element_t< i, ConstantTupleType >::element_type;
  using BaseType::entity;
  using BaseType::geometry;

  UFLLocalFunction ( const GridPartType &gridPart, const std::string &name, int order, const Dune::Fem::ParameterReader &parameter = Dune::Fem::Parameter::container() )
    : BaseType(gridPart,name,order)
  {}

  void bind ( const IntersectionType &intersection, Side side )
  {
    BaseType::bind(intersection, side);
  }

  void bind ( const EntityType &entity )
  {
    BaseType::bind(entity);
  }

  void unbind ()
  {
    BaseType::unbind();
  }

  template< class Point >
  void evaluate ( const Point &x, typename FunctionSpaceType::RangeType &result ) const
  {
    using std::max;
    using std::min;
    using std::sqrt;
    GlobalCoordinateType tmp0 = geometry().global( Dune::Fem::coordinate( x ) );
    const auto tmp1 = -0.4 + tmp0[ 0 ];
    const auto tmp2 = tmp0[ 1 ] * tmp0[ 1 ];
    const auto tmp3 = tmp0[ 0 ] * tmp0[ 0 ];
    const auto tmp4 = tmp3 + tmp2;
    const auto tmp5 = 1e-10 + tmp4;
    const auto tmp6 = std::sqrt( tmp5 );
    const auto tmp7 = -1.4 + tmp6;
    const auto tmp8 = std::min( tmp7, tmp1 );
    const auto tmp9 = -1 * tmp0[ 0 ];
    const auto tmp10 = -0.4 + tmp9;
    const auto tmp11 = std::min( tmp7, tmp10 );
    const auto tmp12 = std::max( tmp11, tmp8 );
    const auto tmp13 = 1 + tmp0[ 0 ];
    const auto tmp14 = tmp13 * tmp13;
    const auto tmp15 = tmp2 + tmp14;
    const auto tmp16 = 1e-10 + tmp15;
    const auto tmp17 = std::sqrt( tmp16 );
    const auto tmp18 = -0.5 + tmp17;
    const auto tmp19 = -1 + tmp0[ 0 ];
    const auto tmp20 = tmp19 * tmp19;
    const auto tmp21 = tmp2 + tmp20;
    const auto tmp22 = 1e-10 + tmp21;
    const auto tmp23 = std::sqrt( tmp22 );
    const auto tmp24 = -0.5 + tmp23;
    const auto tmp25 = 0.8 + tmp0[ 1 ];
    const auto tmp26 = tmp25 * tmp25;
    const auto tmp27 = tmp3 + tmp26;
    const auto tmp28 = 1e-10 + tmp27;
    const auto tmp29 = std::sqrt( tmp28 );
    const auto tmp30 = -0.5 + tmp29;
    const auto tmp31 = -1 * tmp30;
    const auto tmp32 = -0.8 + tmp0[ 1 ];
    const auto tmp33 = tmp32 * tmp32;
    const auto tmp34 = tmp3 + tmp33;
    const auto tmp35 = 1e-10 + tmp34;
    const auto tmp36 = std::sqrt( tmp35 );
    const auto tmp37 = -0.5 + tmp36;
    const auto tmp38 = -1 * tmp37;
    const auto tmp39 = -1 + tmp6;
    const auto tmp40 = std::max( tmp39, tmp38 );
    const auto tmp41 = std::max( tmp40, tmp31 );
    const auto tmp42 = std::min( tmp41, tmp24 );
    const auto tmp43 = std::min( tmp42, tmp18 );
    const auto tmp44 = std::max( tmp43, tmp12 );
    const auto tmp45 = 2 * tmp6;
    const auto tmp46 = tmp0[ 0 ] + tmp0[ 0 ];
    const auto tmp47 = tmp46 / tmp45;
    const auto tmp48 = tmp47 * (tmp39 > tmp38 ? 1 : 0.0);
    const auto tmp49 = 2 * tmp36;
    const auto tmp50 = tmp46 / tmp49;
    const auto tmp51 = -1 * tmp50;
    const auto tmp52 = -1 * (tmp39 > tmp38 ? 1 : 0.0);
    const auto tmp53 = 1.0 + tmp52;
    const auto tmp54 = tmp53 * tmp51;
    const auto tmp55 = tmp54 + tmp48;
    const auto tmp56 = tmp55 * (tmp40 > tmp31 ? 1 : 0.0);
    const auto tmp57 = 2 * tmp29;
    const auto tmp58 = tmp46 / tmp57;
    const auto tmp59 = -1 * tmp58;
    const auto tmp60 = -1 * (tmp40 > tmp31 ? 1 : 0.0);
    const auto tmp61 = 1.0 + tmp60;
    const auto tmp62 = tmp61 * tmp59;
    const auto tmp63 = tmp62 + tmp56;
    const auto tmp64 = tmp63 * (tmp41 < tmp24 ? 1 : 0.0);
    const auto tmp65 = 2 * tmp23;
    const auto tmp66 = tmp19 + tmp19;
    const auto tmp67 = tmp66 / tmp65;
    const auto tmp68 = -1 * (tmp41 < tmp24 ? 1 : 0.0);
    const auto tmp69 = 1.0 + tmp68;
    const auto tmp70 = tmp69 * tmp67;
    const auto tmp71 = tmp70 + tmp64;
    const auto tmp72 = tmp71 * (tmp42 < tmp18 ? 1 : 0.0);
    const auto tmp73 = 2 * tmp17;
    const auto tmp74 = tmp13 + tmp13;
    const auto tmp75 = tmp74 / tmp73;
    const auto tmp76 = -1 * (tmp42 < tmp18 ? 1 : 0.0);
    const auto tmp77 = 1.0 + tmp76;
    const auto tmp78 = tmp77 * tmp75;
    const auto tmp79 = tmp78 + tmp72;
    const auto tmp80 = tmp79 * (tmp43 > tmp12 ? 1 : 0.0);
    const auto tmp81 = -1 * (tmp43 > tmp12 ? 1 : 0.0);
    const auto tmp82 = 1.0 + tmp81;
    const auto tmp83 = tmp47 * (tmp7 < tmp10 ? 1 : 0.0);
    const auto tmp84 = -1 * (tmp7 < tmp10 ? 1 : 0.0);
    const auto tmp85 = 1.0 + tmp84;
    const auto tmp86 = -1 * tmp85;
    const auto tmp87 = tmp86 + tmp83;
    const auto tmp88 = tmp87 * (tmp11 > tmp8 ? 1 : 0.0);
    const auto tmp89 = -1 * (tmp11 > tmp8 ? 1 : 0.0);
    const auto tmp90 = 1.0 + tmp89;
    const auto tmp91 = tmp47 * (tmp7 < tmp1 ? 1 : 0.0);
    const auto tmp92 = -1 * (tmp7 < tmp1 ? 1 : 0.0);
    const auto tmp93 = 1.0 + tmp92;
    const auto tmp94 = tmp93 + tmp91;
    const auto tmp95 = tmp94 * tmp90;
    const auto tmp96 = tmp95 + tmp88;
    const auto tmp97 = tmp96 * tmp82;
    const auto tmp98 = tmp97 + tmp80;
    const auto tmp99 = -1 * tmp98;
    const auto tmp100 = tmp99 * tmp44;
    const auto tmp101 = -1 * (tmp44 <= 0.0 ? 1 : 0.0);
    const auto tmp102 = 1 + tmp101;
    const auto tmp103 = tmp102 * tmp100;
    const auto tmp104 = tmp0[ 0 ] + tmp103;
    const auto tmp105 = tmp0[ 1 ] + tmp0[ 1 ];
    const auto tmp106 = tmp105 / tmp45;
    const auto tmp107 = tmp106 * (tmp39 > tmp38 ? 1 : 0.0);
    const auto tmp108 = tmp32 + tmp32;
    const auto tmp109 = tmp108 / tmp49;
    const auto tmp110 = -1 * tmp109;
    const auto tmp111 = tmp53 * tmp110;
    const auto tmp112 = tmp111 + tmp107;
    const auto tmp113 = tmp112 * (tmp40 > tmp31 ? 1 : 0.0);
    const auto tmp114 = tmp25 + tmp25;
    const auto tmp115 = tmp114 / tmp57;
    const auto tmp116 = -1 * tmp115;
    const auto tmp117 = tmp61 * tmp116;
    const auto tmp118 = tmp117 + tmp113;
    const auto tmp119 = tmp118 * (tmp41 < tmp24 ? 1 : 0.0);
    const auto tmp120 = tmp105 / tmp65;
    const auto tmp121 = tmp69 * tmp120;
    const auto tmp122 = tmp121 + tmp119;
    const auto tmp123 = tmp122 * (tmp42 < tmp18 ? 1 : 0.0);
    const auto tmp124 = tmp105 / tmp73;
    const auto tmp125 = tmp77 * tmp124;
    const auto tmp126 = tmp125 + tmp123;
    const auto tmp127 = tmp126 * (tmp43 > tmp12 ? 1 : 0.0);
    const auto tmp128 = tmp106 * (tmp7 < tmp10 ? 1 : 0.0);
    const auto tmp129 = tmp128 * (tmp11 > tmp8 ? 1 : 0.0);
    const auto tmp130 = tmp106 * (tmp7 < tmp1 ? 1 : 0.0);
    const auto tmp131 = tmp90 * tmp130;
    const auto tmp132 = tmp131 + tmp129;
    const auto tmp133 = tmp132 * tmp82;
    const auto tmp134 = tmp133 + tmp127;
    const auto tmp135 = -1 * tmp134;
    const auto tmp136 = tmp135 * tmp44;
    const auto tmp137 = tmp102 * tmp136;
    const auto tmp138 = tmp0[ 1 ] + tmp137;
    result[ 0 ] = tmp104;
    result[ 1 ] = tmp138;
  }

  template< class Point >
  void jacobian ( const Point &x, typename FunctionSpaceType::JacobianRangeType &result ) const
  {
    using std::max;
    using std::min;
    using std::sqrt;
    GlobalCoordinateType tmp0 = geometry().global( Dune::Fem::coordinate( x ) );
    const auto tmp1 = -0.4 + tmp0[ 0 ];
    const auto tmp2 = tmp0[ 1 ] * tmp0[ 1 ];
    const auto tmp3 = tmp0[ 0 ] * tmp0[ 0 ];
    const auto tmp4 = tmp3 + tmp2;
    const auto tmp5 = 1e-10 + tmp4;
    const auto tmp6 = std::sqrt( tmp5 );
    const auto tmp7 = -1.4 + tmp6;
    const auto tmp8 = std::min( tmp7, tmp1 );
    const auto tmp9 = -1 * tmp0[ 0 ];
    const auto tmp10 = -0.4 + tmp9;
    const auto tmp11 = std::min( tmp7, tmp10 );
    const auto tmp12 = std::max( tmp11, tmp8 );
    const auto tmp13 = 1 + tmp0[ 0 ];
    const auto tmp14 = tmp13 * tmp13;
    const auto tmp15 = tmp2 + tmp14;
    const auto tmp16 = 1e-10 + tmp15;
    const auto tmp17 = std::sqrt( tmp16 );
    const auto tmp18 = -0.5 + tmp17;
    const auto tmp19 = -1 + tmp0[ 0 ];
    const auto tmp20 = tmp19 * tmp19;
    const auto tmp21 = tmp2 + tmp20;
    const auto tmp22 = 1e-10 + tmp21;
    const auto tmp23 = std::sqrt( tmp22 );
    const auto tmp24 = -0.5 + tmp23;
    const auto tmp25 = 0.8 + tmp0[ 1 ];
    const auto tmp26 = tmp25 * tmp25;
    const auto tmp27 = tmp3 + tmp26;
    const auto tmp28 = 1e-10 + tmp27;
    const auto tmp29 = std::sqrt( tmp28 );
    const auto tmp30 = -0.5 + tmp29;
    const auto tmp31 = -1 * tmp30;
    const auto tmp32 = -0.8 + tmp0[ 1 ];
    const auto tmp33 = tmp32 * tmp32;
    const auto tmp34 = tmp3 + tmp33;
    const auto tmp35 = 1e-10 + tmp34;
    const auto tmp36 = std::sqrt( tmp35 );
    const auto tmp37 = -0.5 + tmp36;
    const auto tmp38 = -1 * tmp37;
    const auto tmp39 = -1 + tmp6;
    const auto tmp40 = std::max( tmp39, tmp38 );
    const auto tmp41 = std::max( tmp40, tmp31 );
    const auto tmp42 = std::min( tmp41, tmp24 );
    const auto tmp43 = std::min( tmp42, tmp18 );
    const auto tmp44 = std::max( tmp43, tmp12 );
    const auto tmp45 = 2 * tmp6;
    const auto tmp46 = tmp0[ 0 ] + tmp0[ 0 ];
    const auto tmp47 = tmp46 / tmp45;
    const auto tmp48 = 2 * tmp47;
    const auto tmp49 = tmp48 * tmp47;
    const auto tmp50 = -1 * tmp49;
    const auto tmp51 = 2 + tmp50;
    const auto tmp52 = tmp51 / tmp45;
    const auto tmp53 = tmp52 * (tmp39 > tmp38 ? 1 : 0.0);
    const auto tmp54 = 2 * tmp36;
    const auto tmp55 = tmp46 / tmp54;
    const auto tmp56 = 2 * tmp55;
    const auto tmp57 = tmp56 * tmp55;
    const auto tmp58 = -1 * tmp57;
    const auto tmp59 = 2 + tmp58;
    const auto tmp60 = tmp59 / tmp54;
    const auto tmp61 = -1 * tmp60;
    const auto tmp62 = -1 * (tmp39 > tmp38 ? 1 : 0.0);
    const auto tmp63 = 1.0 + tmp62;
    const auto tmp64 = tmp63 * tmp61;
    const auto tmp65 = tmp64 + tmp53;
    const auto tmp66 = tmp65 * (tmp40 > tmp31 ? 1 : 0.0);
    const auto tmp67 = 2 * tmp29;
    const auto tmp68 = tmp46 / tmp67;
    const auto tmp69 = 2 * tmp68;
    const auto tmp70 = tmp69 * tmp68;
    const auto tmp71 = -1 * tmp70;
    const auto tmp72 = 2 + tmp71;
    const auto tmp73 = tmp72 / tmp67;
    const auto tmp74 = -1 * tmp73;
    const auto tmp75 = -1 * (tmp40 > tmp31 ? 1 : 0.0);
    const auto tmp76 = 1.0 + tmp75;
    const auto tmp77 = tmp76 * tmp74;
    const auto tmp78 = tmp77 + tmp66;
    const auto tmp79 = tmp78 * (tmp41 < tmp24 ? 1 : 0.0);
    const auto tmp80 = 2 * tmp23;
    const auto tmp81 = tmp19 + tmp19;
    const auto tmp82 = tmp81 / tmp80;
    const auto tmp83 = 2 * tmp82;
    const auto tmp84 = tmp83 * tmp82;
    const auto tmp85 = -1 * tmp84;
    const auto tmp86 = 2 + tmp85;
    const auto tmp87 = tmp86 / tmp80;
    const auto tmp88 = -1 * (tmp41 < tmp24 ? 1 : 0.0);
    const auto tmp89 = 1.0 + tmp88;
    const auto tmp90 = tmp89 * tmp87;
    const auto tmp91 = tmp90 + tmp79;
    const auto tmp92 = tmp91 * (tmp42 < tmp18 ? 1 : 0.0);
    const auto tmp93 = 2 * tmp17;
    const auto tmp94 = tmp13 + tmp13;
    const auto tmp95 = tmp94 / tmp93;
    const auto tmp96 = 2 * tmp95;
    const auto tmp97 = tmp96 * tmp95;
    const auto tmp98 = -1 * tmp97;
    const auto tmp99 = 2 + tmp98;
    const auto tmp100 = tmp99 / tmp93;
    const auto tmp101 = -1 * (tmp42 < tmp18 ? 1 : 0.0);
    const auto tmp102 = 1.0 + tmp101;
    const auto tmp103 = tmp102 * tmp100;
    const auto tmp104 = tmp103 + tmp92;
    const auto tmp105 = tmp104 * (tmp43 > tmp12 ? 1 : 0.0);
    const auto tmp106 = -1 * (tmp43 > tmp12 ? 1 : 0.0);
    const auto tmp107 = 1.0 + tmp106;
    const auto tmp108 = tmp52 * (tmp7 < tmp10 ? 1 : 0.0);
    const auto tmp109 = tmp108 * (tmp11 > tmp8 ? 1 : 0.0);
    const auto tmp110 = tmp52 * (tmp7 < tmp1 ? 1 : 0.0);
    const auto tmp111 = -1 * (tmp11 > tmp8 ? 1 : 0.0);
    const auto tmp112 = 1.0 + tmp111;
    const auto tmp113 = tmp112 * tmp110;
    const auto tmp114 = tmp113 + tmp109;
    const auto tmp115 = tmp114 * tmp107;
    const auto tmp116 = tmp115 + tmp105;
    const auto tmp117 = -1 * tmp116;
    const auto tmp118 = tmp117 * tmp44;
    const auto tmp119 = tmp47 * (tmp39 > tmp38 ? 1 : 0.0);
    const auto tmp120 = -1 * tmp55;
    const auto tmp121 = tmp63 * tmp120;
    const auto tmp122 = tmp121 + tmp119;
    const auto tmp123 = tmp122 * (tmp40 > tmp31 ? 1 : 0.0);
    const auto tmp124 = -1 * tmp68;
    const auto tmp125 = tmp76 * tmp124;
    const auto tmp126 = tmp125 + tmp123;
    const auto tmp127 = tmp126 * (tmp41 < tmp24 ? 1 : 0.0);
    const auto tmp128 = tmp89 * tmp82;
    const auto tmp129 = tmp128 + tmp127;
    const auto tmp130 = tmp129 * (tmp42 < tmp18 ? 1 : 0.0);
    const auto tmp131 = tmp102 * tmp95;
    const auto tmp132 = tmp131 + tmp130;
    const auto tmp133 = tmp132 * (tmp43 > tmp12 ? 1 : 0.0);
    const auto tmp134 = tmp47 * (tmp7 < tmp10 ? 1 : 0.0);
    const auto tmp135 = -1 * (tmp7 < tmp10 ? 1 : 0.0);
    const auto tmp136 = 1.0 + tmp135;
    const auto tmp137 = -1 * tmp136;
    const auto tmp138 = tmp137 + tmp134;
    const auto tmp139 = tmp138 * (tmp11 > tmp8 ? 1 : 0.0);
    const auto tmp140 = tmp47 * (tmp7 < tmp1 ? 1 : 0.0);
    const auto tmp141 = -1 * (tmp7 < tmp1 ? 1 : 0.0);
    const auto tmp142 = 1.0 + tmp141;
    const auto tmp143 = tmp142 + tmp140;
    const auto tmp144 = tmp143 * tmp112;
    const auto tmp145 = tmp144 + tmp139;
    const auto tmp146 = tmp145 * tmp107;
    const auto tmp147 = tmp146 + tmp133;
    const auto tmp148 = -1 * tmp147;
    const auto tmp149 = tmp147 * tmp148;
    const auto tmp150 = tmp149 + tmp118;
    const auto tmp151 = -1 * (tmp44 <= 0.0 ? 1 : 0.0);
    const auto tmp152 = 1 + tmp151;
    const auto tmp153 = tmp152 * tmp150;
    const auto tmp154 = 1 + tmp153;
    const auto tmp155 = tmp0[ 1 ] + tmp0[ 1 ];
    const auto tmp156 = tmp155 / tmp45;
    const auto tmp157 = 2 * tmp156;
    const auto tmp158 = tmp157 * tmp47;
    const auto tmp159 = -1 * tmp158;
    const auto tmp160 = tmp159 / tmp45;
    const auto tmp161 = tmp160 * (tmp39 > tmp38 ? 1 : 0.0);
    const auto tmp162 = tmp32 + tmp32;
    const auto tmp163 = tmp162 / tmp54;
    const auto tmp164 = 2 * tmp163;
    const auto tmp165 = tmp164 * tmp55;
    const auto tmp166 = -1 * tmp165;
    const auto tmp167 = tmp166 / tmp54;
    const auto tmp168 = -1 * tmp167;
    const auto tmp169 = tmp63 * tmp168;
    const auto tmp170 = tmp169 + tmp161;
    const auto tmp171 = tmp170 * (tmp40 > tmp31 ? 1 : 0.0);
    const auto tmp172 = tmp25 + tmp25;
    const auto tmp173 = tmp172 / tmp67;
    const auto tmp174 = 2 * tmp173;
    const auto tmp175 = tmp174 * tmp68;
    const auto tmp176 = -1 * tmp175;
    const auto tmp177 = tmp176 / tmp67;
    const auto tmp178 = -1 * tmp177;
    const auto tmp179 = tmp76 * tmp178;
    const auto tmp180 = tmp179 + tmp171;
    const auto tmp181 = tmp180 * (tmp41 < tmp24 ? 1 : 0.0);
    const auto tmp182 = tmp155 / tmp80;
    const auto tmp183 = 2 * tmp182;
    const auto tmp184 = tmp183 * tmp82;
    const auto tmp185 = -1 * tmp184;
    const auto tmp186 = tmp185 / tmp80;
    const auto tmp187 = tmp89 * tmp186;
    const auto tmp188 = tmp187 + tmp181;
    const auto tmp189 = tmp188 * (tmp42 < tmp18 ? 1 : 0.0);
    const auto tmp190 = tmp155 / tmp93;
    const auto tmp191 = 2 * tmp190;
    const auto tmp192 = tmp191 * tmp95;
    const auto tmp193 = -1 * tmp192;
    const auto tmp194 = tmp193 / tmp93;
    const auto tmp195 = tmp102 * tmp194;
    const auto tmp196 = tmp195 + tmp189;
    const auto tmp197 = tmp196 * (tmp43 > tmp12 ? 1 : 0.0);
    const auto tmp198 = tmp160 * (tmp7 < tmp10 ? 1 : 0.0);
    const auto tmp199 = tmp198 * (tmp11 > tmp8 ? 1 : 0.0);
    const auto tmp200 = tmp160 * (tmp7 < tmp1 ? 1 : 0.0);
    const auto tmp201 = tmp112 * tmp200;
    const auto tmp202 = tmp201 + tmp199;
    const auto tmp203 = tmp202 * tmp107;
    const auto tmp204 = tmp203 + tmp197;
    const auto tmp205 = -1 * tmp204;
    const auto tmp206 = tmp205 * tmp44;
    const auto tmp207 = tmp156 * (tmp39 > tmp38 ? 1 : 0.0);
    const auto tmp208 = -1 * tmp163;
    const auto tmp209 = tmp63 * tmp208;
    const auto tmp210 = tmp209 + tmp207;
    const auto tmp211 = tmp210 * (tmp40 > tmp31 ? 1 : 0.0);
    const auto tmp212 = -1 * tmp173;
    const auto tmp213 = tmp76 * tmp212;
    const auto tmp214 = tmp213 + tmp211;
    const auto tmp215 = tmp214 * (tmp41 < tmp24 ? 1 : 0.0);
    const auto tmp216 = tmp89 * tmp182;
    const auto tmp217 = tmp216 + tmp215;
    const auto tmp218 = tmp217 * (tmp42 < tmp18 ? 1 : 0.0);
    const auto tmp219 = tmp102 * tmp190;
    const auto tmp220 = tmp219 + tmp218;
    const auto tmp221 = tmp220 * (tmp43 > tmp12 ? 1 : 0.0);
    const auto tmp222 = tmp156 * (tmp7 < tmp10 ? 1 : 0.0);
    const auto tmp223 = tmp222 * (tmp11 > tmp8 ? 1 : 0.0);
    const auto tmp224 = tmp156 * (tmp7 < tmp1 ? 1 : 0.0);
    const auto tmp225 = tmp112 * tmp224;
    const auto tmp226 = tmp225 + tmp223;
    const auto tmp227 = tmp226 * tmp107;
    const auto tmp228 = tmp227 + tmp221;
    const auto tmp229 = tmp228 * tmp148;
    const auto tmp230 = tmp229 + tmp206;
    const auto tmp231 = tmp152 * tmp230;
    const auto tmp232 = tmp48 * tmp156;
    const auto tmp233 = -1 * tmp232;
    const auto tmp234 = tmp233 / tmp45;
    const auto tmp235 = tmp234 * (tmp39 > tmp38 ? 1 : 0.0);
    const auto tmp236 = tmp56 * tmp163;
    const auto tmp237 = -1 * tmp236;
    const auto tmp238 = tmp237 / tmp54;
    const auto tmp239 = -1 * tmp238;
    const auto tmp240 = tmp63 * tmp239;
    const auto tmp241 = tmp240 + tmp235;
    const auto tmp242 = tmp241 * (tmp40 > tmp31 ? 1 : 0.0);
    const auto tmp243 = tmp69 * tmp173;
    const auto tmp244 = -1 * tmp243;
    const auto tmp245 = tmp244 / tmp67;
    const auto tmp246 = -1 * tmp245;
    const auto tmp247 = tmp76 * tmp246;
    const auto tmp248 = tmp247 + tmp242;
    const auto tmp249 = tmp248 * (tmp41 < tmp24 ? 1 : 0.0);
    const auto tmp250 = tmp83 * tmp182;
    const auto tmp251 = -1 * tmp250;
    const auto tmp252 = tmp251 / tmp80;
    const auto tmp253 = tmp89 * tmp252;
    const auto tmp254 = tmp253 + tmp249;
    const auto tmp255 = tmp254 * (tmp42 < tmp18 ? 1 : 0.0);
    const auto tmp256 = tmp96 * tmp190;
    const auto tmp257 = -1 * tmp256;
    const auto tmp258 = tmp257 / tmp93;
    const auto tmp259 = tmp102 * tmp258;
    const auto tmp260 = tmp259 + tmp255;
    const auto tmp261 = tmp260 * (tmp43 > tmp12 ? 1 : 0.0);
    const auto tmp262 = tmp234 * (tmp7 < tmp10 ? 1 : 0.0);
    const auto tmp263 = tmp262 * (tmp11 > tmp8 ? 1 : 0.0);
    const auto tmp264 = tmp234 * (tmp7 < tmp1 ? 1 : 0.0);
    const auto tmp265 = tmp112 * tmp264;
    const auto tmp266 = tmp265 + tmp263;
    const auto tmp267 = tmp266 * tmp107;
    const auto tmp268 = tmp267 + tmp261;
    const auto tmp269 = -1 * tmp268;
    const auto tmp270 = tmp269 * tmp44;
    const auto tmp271 = -1 * tmp228;
    const auto tmp272 = tmp147 * tmp271;
    const auto tmp273 = tmp272 + tmp270;
    const auto tmp274 = tmp152 * tmp273;
    const auto tmp275 = tmp157 * tmp156;
    const auto tmp276 = -1 * tmp275;
    const auto tmp277 = 2 + tmp276;
    const auto tmp278 = tmp277 / tmp45;
    const auto tmp279 = tmp278 * (tmp39 > tmp38 ? 1 : 0.0);
    const auto tmp280 = tmp164 * tmp163;
    const auto tmp281 = -1 * tmp280;
    const auto tmp282 = 2 + tmp281;
    const auto tmp283 = tmp282 / tmp54;
    const auto tmp284 = -1 * tmp283;
    const auto tmp285 = tmp63 * tmp284;
    const auto tmp286 = tmp285 + tmp279;
    const auto tmp287 = tmp286 * (tmp40 > tmp31 ? 1 : 0.0);
    const auto tmp288 = tmp174 * tmp173;
    const auto tmp289 = -1 * tmp288;
    const auto tmp290 = 2 + tmp289;
    const auto tmp291 = tmp290 / tmp67;
    const auto tmp292 = -1 * tmp291;
    const auto tmp293 = tmp76 * tmp292;
    const auto tmp294 = tmp293 + tmp287;
    const auto tmp295 = tmp294 * (tmp41 < tmp24 ? 1 : 0.0);
    const auto tmp296 = tmp183 * tmp182;
    const auto tmp297 = -1 * tmp296;
    const auto tmp298 = 2 + tmp297;
    const auto tmp299 = tmp298 / tmp80;
    const auto tmp300 = tmp89 * tmp299;
    const auto tmp301 = tmp300 + tmp295;
    const auto tmp302 = tmp301 * (tmp42 < tmp18 ? 1 : 0.0);
    const auto tmp303 = tmp191 * tmp190;
    const auto tmp304 = -1 * tmp303;
    const auto tmp305 = 2 + tmp304;
    const auto tmp306 = tmp305 / tmp93;
    const auto tmp307 = tmp102 * tmp306;
    const auto tmp308 = tmp307 + tmp302;
    const auto tmp309 = tmp308 * (tmp43 > tmp12 ? 1 : 0.0);
    const auto tmp310 = tmp278 * (tmp7 < tmp10 ? 1 : 0.0);
    const auto tmp311 = tmp310 * (tmp11 > tmp8 ? 1 : 0.0);
    const auto tmp312 = tmp278 * (tmp7 < tmp1 ? 1 : 0.0);
    const auto tmp313 = tmp112 * tmp312;
    const auto tmp314 = tmp313 + tmp311;
    const auto tmp315 = tmp314 * tmp107;
    const auto tmp316 = tmp315 + tmp309;
    const auto tmp317 = -1 * tmp316;
    const auto tmp318 = tmp317 * tmp44;
    const auto tmp319 = tmp228 * tmp271;
    const auto tmp320 = tmp319 + tmp318;
    const auto tmp321 = tmp152 * tmp320;
    const auto tmp322 = 1 + tmp321;
    (result[ 0 ])[ 0 ] = tmp154;
    (result[ 0 ])[ 1 ] = tmp231;
    (result[ 1 ])[ 0 ] = tmp274;
    (result[ 1 ])[ 1 ] = tmp322;
  }

  template< class Point >
  void hessian ( const Point &x, typename FunctionSpaceType::HessianRangeType &result ) const
  {
    using std::max;
    using std::min;
    using std::sqrt;
    GlobalCoordinateType tmp0 = geometry().global( Dune::Fem::coordinate( x ) );
    const auto tmp1 = -0.4 + tmp0[ 0 ];
    const auto tmp2 = tmp0[ 1 ] * tmp0[ 1 ];
    const auto tmp3 = tmp0[ 0 ] * tmp0[ 0 ];
    const auto tmp4 = tmp3 + tmp2;
    const auto tmp5 = 1e-10 + tmp4;
    const auto tmp6 = std::sqrt( tmp5 );
    const auto tmp7 = -1.4 + tmp6;
    const auto tmp8 = std::min( tmp7, tmp1 );
    const auto tmp9 = -1 * tmp0[ 0 ];
    const auto tmp10 = -0.4 + tmp9;
    const auto tmp11 = std::min( tmp7, tmp10 );
    const auto tmp12 = std::max( tmp11, tmp8 );
    const auto tmp13 = 1 + tmp0[ 0 ];
    const auto tmp14 = tmp13 * tmp13;
    const auto tmp15 = tmp2 + tmp14;
    const auto tmp16 = 1e-10 + tmp15;
    const auto tmp17 = std::sqrt( tmp16 );
    const auto tmp18 = -0.5 + tmp17;
    const auto tmp19 = -1 + tmp0[ 0 ];
    const auto tmp20 = tmp19 * tmp19;
    const auto tmp21 = tmp2 + tmp20;
    const auto tmp22 = 1e-10 + tmp21;
    const auto tmp23 = std::sqrt( tmp22 );
    const auto tmp24 = -0.5 + tmp23;
    const auto tmp25 = 0.8 + tmp0[ 1 ];
    const auto tmp26 = tmp25 * tmp25;
    const auto tmp27 = tmp3 + tmp26;
    const auto tmp28 = 1e-10 + tmp27;
    const auto tmp29 = std::sqrt( tmp28 );
    const auto tmp30 = -0.5 + tmp29;
    const auto tmp31 = -1 * tmp30;
    const auto tmp32 = -0.8 + tmp0[ 1 ];
    const auto tmp33 = tmp32 * tmp32;
    const auto tmp34 = tmp3 + tmp33;
    const auto tmp35 = 1e-10 + tmp34;
    const auto tmp36 = std::sqrt( tmp35 );
    const auto tmp37 = -0.5 + tmp36;
    const auto tmp38 = -1 * tmp37;
    const auto tmp39 = -1 + tmp6;
    const auto tmp40 = std::max( tmp39, tmp38 );
    const auto tmp41 = std::max( tmp40, tmp31 );
    const auto tmp42 = std::min( tmp41, tmp24 );
    const auto tmp43 = std::min( tmp42, tmp18 );
    const auto tmp44 = std::max( tmp43, tmp12 );
    const auto tmp45 = -1 * (tmp44 <= 0.0 ? 1 : 0.0);
    const auto tmp46 = 1 + tmp45;
    const auto tmp47 = 2 * tmp6;
    const auto tmp48 = tmp0[ 0 ] + tmp0[ 0 ];
    const auto tmp49 = tmp48 / tmp47;
    const auto tmp50 = 2 * tmp49;
    const auto tmp51 = tmp50 * tmp49;
    const auto tmp52 = -1 * tmp51;
    const auto tmp53 = 2 + tmp52;
    const auto tmp54 = tmp53 / tmp47;
    const auto tmp55 = tmp50 * tmp54;
    const auto tmp56 = -1 * tmp55;
    const auto tmp57 = 2 * tmp54;
    const auto tmp58 = tmp57 * tmp49;
    const auto tmp59 = tmp58 + tmp55;
    const auto tmp60 = -1 * tmp59;
    const auto tmp61 = tmp60 + tmp56;
    const auto tmp62 = tmp61 / tmp47;
    const auto tmp63 = tmp62 * (tmp39 > tmp38 ? 1 : 0.0);
    const auto tmp64 = 2 * tmp36;
    const auto tmp65 = tmp48 / tmp64;
    const auto tmp66 = 2 * tmp65;
    const auto tmp67 = tmp66 * tmp65;
    const auto tmp68 = -1 * tmp67;
    const auto tmp69 = 2 + tmp68;
    const auto tmp70 = tmp69 / tmp64;
    const auto tmp71 = tmp66 * tmp70;
    const auto tmp72 = -1 * tmp71;
    const auto tmp73 = 2 * tmp70;
    const auto tmp74 = tmp73 * tmp65;
    const auto tmp75 = tmp74 + tmp71;
    const auto tmp76 = -1 * tmp75;
    const auto tmp77 = tmp76 + tmp72;
    const auto tmp78 = tmp77 / tmp64;
    const auto tmp79 = -1 * tmp78;
    const auto tmp80 = -1 * (tmp39 > tmp38 ? 1 : 0.0);
    const auto tmp81 = 1.0 + tmp80;
    const auto tmp82 = tmp81 * tmp79;
    const auto tmp83 = tmp82 + tmp63;
    const auto tmp84 = tmp83 * (tmp40 > tmp31 ? 1 : 0.0);
    const auto tmp85 = 2 * tmp29;
    const auto tmp86 = tmp48 / tmp85;
    const auto tmp87 = 2 * tmp86;
    const auto tmp88 = tmp87 * tmp86;
    const auto tmp89 = -1 * tmp88;
    const auto tmp90 = 2 + tmp89;
    const auto tmp91 = tmp90 / tmp85;
    const auto tmp92 = tmp87 * tmp91;
    const auto tmp93 = -1 * tmp92;
    const auto tmp94 = 2 * tmp91;
    const auto tmp95 = tmp94 * tmp86;
    const auto tmp96 = tmp95 + tmp92;
    const auto tmp97 = -1 * tmp96;
    const auto tmp98 = tmp97 + tmp93;
    const auto tmp99 = tmp98 / tmp85;
    const auto tmp100 = -1 * tmp99;
    const auto tmp101 = -1 * (tmp40 > tmp31 ? 1 : 0.0);
    const auto tmp102 = 1.0 + tmp101;
    const auto tmp103 = tmp102 * tmp100;
    const auto tmp104 = tmp103 + tmp84;
    const auto tmp105 = tmp104 * (tmp41 < tmp24 ? 1 : 0.0);
    const auto tmp106 = 2 * tmp23;
    const auto tmp107 = tmp19 + tmp19;
    const auto tmp108 = tmp107 / tmp106;
    const auto tmp109 = 2 * tmp108;
    const auto tmp110 = tmp109 * tmp108;
    const auto tmp111 = -1 * tmp110;
    const auto tmp112 = 2 + tmp111;
    const auto tmp113 = tmp112 / tmp106;
    const auto tmp114 = tmp109 * tmp113;
    const auto tmp115 = -1 * tmp114;
    const auto tmp116 = 2 * tmp113;
    const auto tmp117 = tmp116 * tmp108;
    const auto tmp118 = tmp117 + tmp114;
    const auto tmp119 = -1 * tmp118;
    const auto tmp120 = tmp119 + tmp115;
    const auto tmp121 = tmp120 / tmp106;
    const auto tmp122 = -1 * (tmp41 < tmp24 ? 1 : 0.0);
    const auto tmp123 = 1.0 + tmp122;
    const auto tmp124 = tmp123 * tmp121;
    const auto tmp125 = tmp124 + tmp105;
    const auto tmp126 = tmp125 * (tmp42 < tmp18 ? 1 : 0.0);
    const auto tmp127 = 2 * tmp17;
    const auto tmp128 = tmp13 + tmp13;
    const auto tmp129 = tmp128 / tmp127;
    const auto tmp130 = 2 * tmp129;
    const auto tmp131 = tmp130 * tmp129;
    const auto tmp132 = -1 * tmp131;
    const auto tmp133 = 2 + tmp132;
    const auto tmp134 = tmp133 / tmp127;
    const auto tmp135 = tmp130 * tmp134;
    const auto tmp136 = -1 * tmp135;
    const auto tmp137 = 2 * tmp134;
    const auto tmp138 = tmp137 * tmp129;
    const auto tmp139 = tmp138 + tmp135;
    const auto tmp140 = -1 * tmp139;
    const auto tmp141 = tmp140 + tmp136;
    const auto tmp142 = tmp141 / tmp127;
    const auto tmp143 = -1 * (tmp42 < tmp18 ? 1 : 0.0);
    const auto tmp144 = 1.0 + tmp143;
    const auto tmp145 = tmp144 * tmp142;
    const auto tmp146 = tmp145 + tmp126;
    const auto tmp147 = tmp146 * (tmp43 > tmp12 ? 1 : 0.0);
    const auto tmp148 = -1 * (tmp43 > tmp12 ? 1 : 0.0);
    const auto tmp149 = 1.0 + tmp148;
    const auto tmp150 = tmp62 * (tmp7 < tmp10 ? 1 : 0.0);
    const auto tmp151 = tmp150 * (tmp11 > tmp8 ? 1 : 0.0);
    const auto tmp152 = tmp62 * (tmp7 < tmp1 ? 1 : 0.0);
    const auto tmp153 = -1 * (tmp11 > tmp8 ? 1 : 0.0);
    const auto tmp154 = 1.0 + tmp153;
    const auto tmp155 = tmp154 * tmp152;
    const auto tmp156 = tmp155 + tmp151;
    const auto tmp157 = tmp156 * tmp149;
    const auto tmp158 = tmp157 + tmp147;
    const auto tmp159 = -1 * tmp158;
    const auto tmp160 = tmp159 * tmp44;
    const auto tmp161 = tmp54 * (tmp39 > tmp38 ? 1 : 0.0);
    const auto tmp162 = -1 * tmp70;
    const auto tmp163 = tmp81 * tmp162;
    const auto tmp164 = tmp163 + tmp161;
    const auto tmp165 = tmp164 * (tmp40 > tmp31 ? 1 : 0.0);
    const auto tmp166 = -1 * tmp91;
    const auto tmp167 = tmp102 * tmp166;
    const auto tmp168 = tmp167 + tmp165;
    const auto tmp169 = tmp168 * (tmp41 < tmp24 ? 1 : 0.0);
    const auto tmp170 = tmp123 * tmp113;
    const auto tmp171 = tmp170 + tmp169;
    const auto tmp172 = tmp171 * (tmp42 < tmp18 ? 1 : 0.0);
    const auto tmp173 = tmp144 * tmp134;
    const auto tmp174 = tmp173 + tmp172;
    const auto tmp175 = tmp174 * (tmp43 > tmp12 ? 1 : 0.0);
    const auto tmp176 = tmp54 * (tmp7 < tmp10 ? 1 : 0.0);
    const auto tmp177 = tmp176 * (tmp11 > tmp8 ? 1 : 0.0);
    const auto tmp178 = tmp54 * (tmp7 < tmp1 ? 1 : 0.0);
    const auto tmp179 = tmp154 * tmp178;
    const auto tmp180 = tmp179 + tmp177;
    const auto tmp181 = tmp180 * tmp149;
    const auto tmp182 = tmp181 + tmp175;
    const auto tmp183 = -1 * tmp182;
    const auto tmp184 = tmp49 * (tmp39 > tmp38 ? 1 : 0.0);
    const auto tmp185 = -1 * tmp65;
    const auto tmp186 = tmp81 * tmp185;
    const auto tmp187 = tmp186 + tmp184;
    const auto tmp188 = tmp187 * (tmp40 > tmp31 ? 1 : 0.0);
    const auto tmp189 = -1 * tmp86;
    const auto tmp190 = tmp102 * tmp189;
    const auto tmp191 = tmp190 + tmp188;
    const auto tmp192 = tmp191 * (tmp41 < tmp24 ? 1 : 0.0);
    const auto tmp193 = tmp123 * tmp108;
    const auto tmp194 = tmp193 + tmp192;
    const auto tmp195 = tmp194 * (tmp42 < tmp18 ? 1 : 0.0);
    const auto tmp196 = tmp144 * tmp129;
    const auto tmp197 = tmp196 + tmp195;
    const auto tmp198 = tmp197 * (tmp43 > tmp12 ? 1 : 0.0);
    const auto tmp199 = tmp49 * (tmp7 < tmp10 ? 1 : 0.0);
    const auto tmp200 = -1 * (tmp7 < tmp10 ? 1 : 0.0);
    const auto tmp201 = 1.0 + tmp200;
    const auto tmp202 = -1 * tmp201;
    const auto tmp203 = tmp202 + tmp199;
    const auto tmp204 = tmp203 * (tmp11 > tmp8 ? 1 : 0.0);
    const auto tmp205 = tmp49 * (tmp7 < tmp1 ? 1 : 0.0);
    const auto tmp206 = -1 * (tmp7 < tmp1 ? 1 : 0.0);
    const auto tmp207 = 1.0 + tmp206;
    const auto tmp208 = tmp207 + tmp205;
    const auto tmp209 = tmp208 * tmp154;
    const auto tmp210 = tmp209 + tmp204;
    const auto tmp211 = tmp210 * tmp149;
    const auto tmp212 = tmp211 + tmp198;
    const auto tmp213 = tmp212 * tmp183;
    const auto tmp214 = tmp213 + tmp160;
    const auto tmp215 = -1 * tmp212;
    const auto tmp216 = tmp182 * tmp215;
    const auto tmp217 = tmp216 + tmp213;
    const auto tmp218 = tmp217 + tmp214;
    const auto tmp219 = tmp218 * tmp46;
    const auto tmp220 = tmp0[ 1 ] + tmp0[ 1 ];
    const auto tmp221 = tmp220 / tmp47;
    const auto tmp222 = 2 * tmp221;
    const auto tmp223 = tmp222 * tmp54;
    const auto tmp224 = -1 * tmp223;
    const auto tmp225 = tmp222 * tmp49;
    const auto tmp226 = -1 * tmp225;
    const auto tmp227 = tmp226 / tmp47;
    const auto tmp228 = tmp50 * tmp227;
    const auto tmp229 = 2 * tmp227;
    const auto tmp230 = tmp229 * tmp49;
    const auto tmp231 = tmp230 + tmp228;
    const auto tmp232 = -1 * tmp231;
    const auto tmp233 = tmp232 + tmp224;
    const auto tmp234 = tmp233 / tmp47;
    const auto tmp235 = tmp234 * (tmp39 > tmp38 ? 1 : 0.0);
    const auto tmp236 = tmp32 + tmp32;
    const auto tmp237 = tmp236 / tmp64;
    const auto tmp238 = 2 * tmp237;
    const auto tmp239 = tmp238 * tmp70;
    const auto tmp240 = -1 * tmp239;
    const auto tmp241 = tmp238 * tmp65;
    const auto tmp242 = -1 * tmp241;
    const auto tmp243 = tmp242 / tmp64;
    const auto tmp244 = tmp66 * tmp243;
    const auto tmp245 = 2 * tmp243;
    const auto tmp246 = tmp245 * tmp65;
    const auto tmp247 = tmp246 + tmp244;
    const auto tmp248 = -1 * tmp247;
    const auto tmp249 = tmp248 + tmp240;
    const auto tmp250 = tmp249 / tmp64;
    const auto tmp251 = -1 * tmp250;
    const auto tmp252 = tmp81 * tmp251;
    const auto tmp253 = tmp252 + tmp235;
    const auto tmp254 = tmp253 * (tmp40 > tmp31 ? 1 : 0.0);
    const auto tmp255 = tmp25 + tmp25;
    const auto tmp256 = tmp255 / tmp85;
    const auto tmp257 = 2 * tmp256;
    const auto tmp258 = tmp257 * tmp91;
    const auto tmp259 = -1 * tmp258;
    const auto tmp260 = tmp257 * tmp86;
    const auto tmp261 = -1 * tmp260;
    const auto tmp262 = tmp261 / tmp85;
    const auto tmp263 = tmp87 * tmp262;
    const auto tmp264 = 2 * tmp262;
    const auto tmp265 = tmp264 * tmp86;
    const auto tmp266 = tmp265 + tmp263;
    const auto tmp267 = -1 * tmp266;
    const auto tmp268 = tmp267 + tmp259;
    const auto tmp269 = tmp268 / tmp85;
    const auto tmp270 = -1 * tmp269;
    const auto tmp271 = tmp102 * tmp270;
    const auto tmp272 = tmp271 + tmp254;
    const auto tmp273 = tmp272 * (tmp41 < tmp24 ? 1 : 0.0);
    const auto tmp274 = tmp220 / tmp106;
    const auto tmp275 = 2 * tmp274;
    const auto tmp276 = tmp275 * tmp113;
    const auto tmp277 = -1 * tmp276;
    const auto tmp278 = tmp275 * tmp108;
    const auto tmp279 = -1 * tmp278;
    const auto tmp280 = tmp279 / tmp106;
    const auto tmp281 = tmp109 * tmp280;
    const auto tmp282 = 2 * tmp280;
    const auto tmp283 = tmp282 * tmp108;
    const auto tmp284 = tmp283 + tmp281;
    const auto tmp285 = -1 * tmp284;
    const auto tmp286 = tmp285 + tmp277;
    const auto tmp287 = tmp286 / tmp106;
    const auto tmp288 = tmp123 * tmp287;
    const auto tmp289 = tmp288 + tmp273;
    const auto tmp290 = tmp289 * (tmp42 < tmp18 ? 1 : 0.0);
    const auto tmp291 = tmp220 / tmp127;
    const auto tmp292 = 2 * tmp291;
    const auto tmp293 = tmp292 * tmp134;
    const auto tmp294 = -1 * tmp293;
    const auto tmp295 = tmp292 * tmp129;
    const auto tmp296 = -1 * tmp295;
    const auto tmp297 = tmp296 / tmp127;
    const auto tmp298 = tmp130 * tmp297;
    const auto tmp299 = 2 * tmp297;
    const auto tmp300 = tmp299 * tmp129;
    const auto tmp301 = tmp300 + tmp298;
    const auto tmp302 = -1 * tmp301;
    const auto tmp303 = tmp302 + tmp294;
    const auto tmp304 = tmp303 / tmp127;
    const auto tmp305 = tmp144 * tmp304;
    const auto tmp306 = tmp305 + tmp290;
    const auto tmp307 = tmp306 * (tmp43 > tmp12 ? 1 : 0.0);
    const auto tmp308 = tmp234 * (tmp7 < tmp10 ? 1 : 0.0);
    const auto tmp309 = tmp308 * (tmp11 > tmp8 ? 1 : 0.0);
    const auto tmp310 = tmp234 * (tmp7 < tmp1 ? 1 : 0.0);
    const auto tmp311 = tmp154 * tmp310;
    const auto tmp312 = tmp311 + tmp309;
    const auto tmp313 = tmp312 * tmp149;
    const auto tmp314 = tmp313 + tmp307;
    const auto tmp315 = -1 * tmp314;
    const auto tmp316 = tmp315 * tmp44;
    const auto tmp317 = tmp221 * (tmp39 > tmp38 ? 1 : 0.0);
    const auto tmp318 = -1 * tmp237;
    const auto tmp319 = tmp81 * tmp318;
    const auto tmp320 = tmp319 + tmp317;
    const auto tmp321 = tmp320 * (tmp40 > tmp31 ? 1 : 0.0);
    const auto tmp322 = -1 * tmp256;
    const auto tmp323 = tmp102 * tmp322;
    const auto tmp324 = tmp323 + tmp321;
    const auto tmp325 = tmp324 * (tmp41 < tmp24 ? 1 : 0.0);
    const auto tmp326 = tmp123 * tmp274;
    const auto tmp327 = tmp326 + tmp325;
    const auto tmp328 = tmp327 * (tmp42 < tmp18 ? 1 : 0.0);
    const auto tmp329 = tmp144 * tmp291;
    const auto tmp330 = tmp329 + tmp328;
    const auto tmp331 = tmp330 * (tmp43 > tmp12 ? 1 : 0.0);
    const auto tmp332 = tmp221 * (tmp7 < tmp10 ? 1 : 0.0);
    const auto tmp333 = tmp332 * (tmp11 > tmp8 ? 1 : 0.0);
    const auto tmp334 = tmp221 * (tmp7 < tmp1 ? 1 : 0.0);
    const auto tmp335 = tmp154 * tmp334;
    const auto tmp336 = tmp335 + tmp333;
    const auto tmp337 = tmp336 * tmp149;
    const auto tmp338 = tmp337 + tmp331;
    const auto tmp339 = tmp338 * tmp183;
    const auto tmp340 = tmp339 + tmp316;
    const auto tmp341 = tmp227 * (tmp39 > tmp38 ? 1 : 0.0);
    const auto tmp342 = -1 * tmp243;
    const auto tmp343 = tmp81 * tmp342;
    const auto tmp344 = tmp343 + tmp341;
    const auto tmp345 = tmp344 * (tmp40 > tmp31 ? 1 : 0.0);
    const auto tmp346 = -1 * tmp262;
    const auto tmp347 = tmp102 * tmp346;
    const auto tmp348 = tmp347 + tmp345;
    const auto tmp349 = tmp348 * (tmp41 < tmp24 ? 1 : 0.0);
    const auto tmp350 = tmp123 * tmp280;
    const auto tmp351 = tmp350 + tmp349;
    const auto tmp352 = tmp351 * (tmp42 < tmp18 ? 1 : 0.0);
    const auto tmp353 = tmp144 * tmp297;
    const auto tmp354 = tmp353 + tmp352;
    const auto tmp355 = tmp354 * (tmp43 > tmp12 ? 1 : 0.0);
    const auto tmp356 = tmp227 * (tmp7 < tmp10 ? 1 : 0.0);
    const auto tmp357 = tmp356 * (tmp11 > tmp8 ? 1 : 0.0);
    const auto tmp358 = tmp227 * (tmp7 < tmp1 ? 1 : 0.0);
    const auto tmp359 = tmp154 * tmp358;
    const auto tmp360 = tmp359 + tmp357;
    const auto tmp361 = tmp360 * tmp149;
    const auto tmp362 = tmp361 + tmp355;
    const auto tmp363 = -1 * tmp362;
    const auto tmp364 = tmp212 * tmp363;
    const auto tmp365 = tmp362 * tmp215;
    const auto tmp366 = tmp365 + tmp364;
    const auto tmp367 = tmp366 + tmp340;
    const auto tmp368 = tmp367 * tmp46;
    const auto tmp369 = -1 * tmp228;
    const auto tmp370 = tmp50 * tmp221;
    const auto tmp371 = -1 * tmp370;
    const auto tmp372 = tmp371 / tmp47;
    const auto tmp373 = 2 * tmp372;
    const auto tmp374 = tmp373 * tmp49;
    const auto tmp375 = tmp374 + tmp223;
    const auto tmp376 = -1 * tmp375;
    const auto tmp377 = tmp376 + tmp369;
    const auto tmp378 = tmp377 / tmp47;
    const auto tmp379 = tmp378 * (tmp39 > tmp38 ? 1 : 0.0);
    const auto tmp380 = -1 * tmp244;
    const auto tmp381 = tmp66 * tmp237;
    const auto tmp382 = -1 * tmp381;
    const auto tmp383 = tmp382 / tmp64;
    const auto tmp384 = 2 * tmp383;
    const auto tmp385 = tmp384 * tmp65;
    const auto tmp386 = tmp385 + tmp239;
    const auto tmp387 = -1 * tmp386;
    const auto tmp388 = tmp387 + tmp380;
    const auto tmp389 = tmp388 / tmp64;
    const auto tmp390 = -1 * tmp389;
    const auto tmp391 = tmp81 * tmp390;
    const auto tmp392 = tmp391 + tmp379;
    const auto tmp393 = tmp392 * (tmp40 > tmp31 ? 1 : 0.0);
    const auto tmp394 = -1 * tmp263;
    const auto tmp395 = tmp87 * tmp256;
    const auto tmp396 = -1 * tmp395;
    const auto tmp397 = tmp396 / tmp85;
    const auto tmp398 = 2 * tmp397;
    const auto tmp399 = tmp398 * tmp86;
    const auto tmp400 = tmp399 + tmp258;
    const auto tmp401 = -1 * tmp400;
    const auto tmp402 = tmp401 + tmp394;
    const auto tmp403 = tmp402 / tmp85;
    const auto tmp404 = -1 * tmp403;
    const auto tmp405 = tmp102 * tmp404;
    const auto tmp406 = tmp405 + tmp393;
    const auto tmp407 = tmp406 * (tmp41 < tmp24 ? 1 : 0.0);
    const auto tmp408 = -1 * tmp281;
    const auto tmp409 = tmp109 * tmp274;
    const auto tmp410 = -1 * tmp409;
    const auto tmp411 = tmp410 / tmp106;
    const auto tmp412 = 2 * tmp411;
    const auto tmp413 = tmp412 * tmp108;
    const auto tmp414 = tmp413 + tmp276;
    const auto tmp415 = -1 * tmp414;
    const auto tmp416 = tmp415 + tmp408;
    const auto tmp417 = tmp416 / tmp106;
    const auto tmp418 = tmp123 * tmp417;
    const auto tmp419 = tmp418 + tmp407;
    const auto tmp420 = tmp419 * (tmp42 < tmp18 ? 1 : 0.0);
    const auto tmp421 = -1 * tmp298;
    const auto tmp422 = tmp130 * tmp291;
    const auto tmp423 = -1 * tmp422;
    const auto tmp424 = tmp423 / tmp127;
    const auto tmp425 = 2 * tmp424;
    const auto tmp426 = tmp425 * tmp129;
    const auto tmp427 = tmp426 + tmp293;
    const auto tmp428 = -1 * tmp427;
    const auto tmp429 = tmp428 + tmp421;
    const auto tmp430 = tmp429 / tmp127;
    const auto tmp431 = tmp144 * tmp430;
    const auto tmp432 = tmp431 + tmp420;
    const auto tmp433 = tmp432 * (tmp43 > tmp12 ? 1 : 0.0);
    const auto tmp434 = tmp378 * (tmp7 < tmp10 ? 1 : 0.0);
    const auto tmp435 = tmp434 * (tmp11 > tmp8 ? 1 : 0.0);
    const auto tmp436 = tmp378 * (tmp7 < tmp1 ? 1 : 0.0);
    const auto tmp437 = tmp154 * tmp436;
    const auto tmp438 = tmp437 + tmp435;
    const auto tmp439 = tmp438 * tmp149;
    const auto tmp440 = tmp439 + tmp433;
    const auto tmp441 = -1 * tmp440;
    const auto tmp442 = tmp441 * tmp44;
    const auto tmp443 = tmp364 + tmp442;
    const auto tmp444 = tmp372 * (tmp39 > tmp38 ? 1 : 0.0);
    const auto tmp445 = -1 * tmp383;
    const auto tmp446 = tmp81 * tmp445;
    const auto tmp447 = tmp446 + tmp444;
    const auto tmp448 = tmp447 * (tmp40 > tmp31 ? 1 : 0.0);
    const auto tmp449 = -1 * tmp397;
    const auto tmp450 = tmp102 * tmp449;
    const auto tmp451 = tmp450 + tmp448;
    const auto tmp452 = tmp451 * (tmp41 < tmp24 ? 1 : 0.0);
    const auto tmp453 = tmp123 * tmp411;
    const auto tmp454 = tmp453 + tmp452;
    const auto tmp455 = tmp454 * (tmp42 < tmp18 ? 1 : 0.0);
    const auto tmp456 = tmp144 * tmp424;
    const auto tmp457 = tmp456 + tmp455;
    const auto tmp458 = tmp457 * (tmp43 > tmp12 ? 1 : 0.0);
    const auto tmp459 = tmp372 * (tmp7 < tmp10 ? 1 : 0.0);
    const auto tmp460 = tmp459 * (tmp11 > tmp8 ? 1 : 0.0);
    const auto tmp461 = tmp372 * (tmp7 < tmp1 ? 1 : 0.0);
    const auto tmp462 = tmp154 * tmp461;
    const auto tmp463 = tmp462 + tmp460;
    const auto tmp464 = tmp463 * tmp149;
    const auto tmp465 = tmp464 + tmp458;
    const auto tmp466 = tmp465 * tmp215;
    const auto tmp467 = tmp466 + tmp339;
    const auto tmp468 = tmp467 + tmp443;
    const auto tmp469 = tmp468 * tmp46;
    const auto tmp470 = tmp222 * tmp227;
    const auto tmp471 = -1 * tmp470;
    const auto tmp472 = tmp222 * tmp221;
    const auto tmp473 = -1 * tmp472;
    const auto tmp474 = 2 + tmp473;
    const auto tmp475 = tmp474 / tmp47;
    const auto tmp476 = 2 * tmp475;
    const auto tmp477 = tmp476 * tmp49;
    const auto tmp478 = tmp477 + tmp470;
    const auto tmp479 = -1 * tmp478;
    const auto tmp480 = tmp479 + tmp471;
    const auto tmp481 = tmp480 / tmp47;
    const auto tmp482 = tmp481 * (tmp39 > tmp38 ? 1 : 0.0);
    const auto tmp483 = tmp238 * tmp243;
    const auto tmp484 = -1 * tmp483;
    const auto tmp485 = tmp238 * tmp237;
    const auto tmp486 = -1 * tmp485;
    const auto tmp487 = 2 + tmp486;
    const auto tmp488 = tmp487 / tmp64;
    const auto tmp489 = 2 * tmp488;
    const auto tmp490 = tmp489 * tmp65;
    const auto tmp491 = tmp490 + tmp483;
    const auto tmp492 = -1 * tmp491;
    const auto tmp493 = tmp492 + tmp484;
    const auto tmp494 = tmp493 / tmp64;
    const auto tmp495 = -1 * tmp494;
    const auto tmp496 = tmp81 * tmp495;
    const auto tmp497 = tmp496 + tmp482;
    const auto tmp498 = tmp497 * (tmp40 > tmp31 ? 1 : 0.0);
    const auto tmp499 = tmp257 * tmp262;
    const auto tmp500 = -1 * tmp499;
    const auto tmp501 = tmp257 * tmp256;
    const auto tmp502 = -1 * tmp501;
    const auto tmp503 = 2 + tmp502;
    const auto tmp504 = tmp503 / tmp85;
    const auto tmp505 = 2 * tmp504;
    const auto tmp506 = tmp505 * tmp86;
    const auto tmp507 = tmp506 + tmp499;
    const auto tmp508 = -1 * tmp507;
    const auto tmp509 = tmp508 + tmp500;
    const auto tmp510 = tmp509 / tmp85;
    const auto tmp511 = -1 * tmp510;
    const auto tmp512 = tmp102 * tmp511;
    const auto tmp513 = tmp512 + tmp498;
    const auto tmp514 = tmp513 * (tmp41 < tmp24 ? 1 : 0.0);
    const auto tmp515 = tmp275 * tmp280;
    const auto tmp516 = -1 * tmp515;
    const auto tmp517 = tmp275 * tmp274;
    const auto tmp518 = -1 * tmp517;
    const auto tmp519 = 2 + tmp518;
    const auto tmp520 = tmp519 / tmp106;
    const auto tmp521 = 2 * tmp520;
    const auto tmp522 = tmp521 * tmp108;
    const auto tmp523 = tmp522 + tmp515;
    const auto tmp524 = -1 * tmp523;
    const auto tmp525 = tmp524 + tmp516;
    const auto tmp526 = tmp525 / tmp106;
    const auto tmp527 = tmp123 * tmp526;
    const auto tmp528 = tmp527 + tmp514;
    const auto tmp529 = tmp528 * (tmp42 < tmp18 ? 1 : 0.0);
    const auto tmp530 = tmp292 * tmp297;
    const auto tmp531 = -1 * tmp530;
    const auto tmp532 = tmp292 * tmp291;
    const auto tmp533 = -1 * tmp532;
    const auto tmp534 = 2 + tmp533;
    const auto tmp535 = tmp534 / tmp127;
    const auto tmp536 = 2 * tmp535;
    const auto tmp537 = tmp536 * tmp129;
    const auto tmp538 = tmp537 + tmp530;
    const auto tmp539 = -1 * tmp538;
    const auto tmp540 = tmp539 + tmp531;
    const auto tmp541 = tmp540 / tmp127;
    const auto tmp542 = tmp144 * tmp541;
    const auto tmp543 = tmp542 + tmp529;
    const auto tmp544 = tmp543 * (tmp43 > tmp12 ? 1 : 0.0);
    const auto tmp545 = tmp481 * (tmp7 < tmp10 ? 1 : 0.0);
    const auto tmp546 = tmp545 * (tmp11 > tmp8 ? 1 : 0.0);
    const auto tmp547 = tmp481 * (tmp7 < tmp1 ? 1 : 0.0);
    const auto tmp548 = tmp154 * tmp547;
    const auto tmp549 = tmp548 + tmp546;
    const auto tmp550 = tmp549 * tmp149;
    const auto tmp551 = tmp550 + tmp544;
    const auto tmp552 = -1 * tmp551;
    const auto tmp553 = tmp552 * tmp44;
    const auto tmp554 = tmp338 * tmp363;
    const auto tmp555 = tmp554 + tmp553;
    const auto tmp556 = tmp475 * (tmp39 > tmp38 ? 1 : 0.0);
    const auto tmp557 = -1 * tmp488;
    const auto tmp558 = tmp81 * tmp557;
    const auto tmp559 = tmp558 + tmp556;
    const auto tmp560 = tmp559 * (tmp40 > tmp31 ? 1 : 0.0);
    const auto tmp561 = -1 * tmp504;
    const auto tmp562 = tmp102 * tmp561;
    const auto tmp563 = tmp562 + tmp560;
    const auto tmp564 = tmp563 * (tmp41 < tmp24 ? 1 : 0.0);
    const auto tmp565 = tmp123 * tmp520;
    const auto tmp566 = tmp565 + tmp564;
    const auto tmp567 = tmp566 * (tmp42 < tmp18 ? 1 : 0.0);
    const auto tmp568 = tmp144 * tmp535;
    const auto tmp569 = tmp568 + tmp567;
    const auto tmp570 = tmp569 * (tmp43 > tmp12 ? 1 : 0.0);
    const auto tmp571 = tmp475 * (tmp7 < tmp10 ? 1 : 0.0);
    const auto tmp572 = tmp571 * (tmp11 > tmp8 ? 1 : 0.0);
    const auto tmp573 = tmp475 * (tmp7 < tmp1 ? 1 : 0.0);
    const auto tmp574 = tmp154 * tmp573;
    const auto tmp575 = tmp574 + tmp572;
    const auto tmp576 = tmp575 * tmp149;
    const auto tmp577 = tmp576 + tmp570;
    const auto tmp578 = tmp577 * tmp215;
    const auto tmp579 = tmp578 + tmp554;
    const auto tmp580 = tmp579 + tmp555;
    const auto tmp581 = tmp580 * tmp46;
    const auto tmp582 = tmp50 * tmp372;
    const auto tmp583 = -1 * tmp582;
    const auto tmp584 = tmp57 * tmp221;
    const auto tmp585 = tmp584 + tmp582;
    const auto tmp586 = -1 * tmp585;
    const auto tmp587 = tmp586 + tmp583;
    const auto tmp588 = tmp587 / tmp47;
    const auto tmp589 = tmp588 * (tmp39 > tmp38 ? 1 : 0.0);
    const auto tmp590 = tmp66 * tmp383;
    const auto tmp591 = -1 * tmp590;
    const auto tmp592 = tmp73 * tmp237;
    const auto tmp593 = tmp592 + tmp590;
    const auto tmp594 = -1 * tmp593;
    const auto tmp595 = tmp594 + tmp591;
    const auto tmp596 = tmp595 / tmp64;
    const auto tmp597 = -1 * tmp596;
    const auto tmp598 = tmp81 * tmp597;
    const auto tmp599 = tmp598 + tmp589;
    const auto tmp600 = tmp599 * (tmp40 > tmp31 ? 1 : 0.0);
    const auto tmp601 = tmp87 * tmp397;
    const auto tmp602 = -1 * tmp601;
    const auto tmp603 = tmp94 * tmp256;
    const auto tmp604 = tmp603 + tmp601;
    const auto tmp605 = -1 * tmp604;
    const auto tmp606 = tmp605 + tmp602;
    const auto tmp607 = tmp606 / tmp85;
    const auto tmp608 = -1 * tmp607;
    const auto tmp609 = tmp102 * tmp608;
    const auto tmp610 = tmp609 + tmp600;
    const auto tmp611 = tmp610 * (tmp41 < tmp24 ? 1 : 0.0);
    const auto tmp612 = tmp109 * tmp411;
    const auto tmp613 = -1 * tmp612;
    const auto tmp614 = tmp116 * tmp274;
    const auto tmp615 = tmp614 + tmp612;
    const auto tmp616 = -1 * tmp615;
    const auto tmp617 = tmp616 + tmp613;
    const auto tmp618 = tmp617 / tmp106;
    const auto tmp619 = tmp123 * tmp618;
    const auto tmp620 = tmp619 + tmp611;
    const auto tmp621 = tmp620 * (tmp42 < tmp18 ? 1 : 0.0);
    const auto tmp622 = tmp130 * tmp424;
    const auto tmp623 = -1 * tmp622;
    const auto tmp624 = tmp137 * tmp291;
    const auto tmp625 = tmp624 + tmp622;
    const auto tmp626 = -1 * tmp625;
    const auto tmp627 = tmp626 + tmp623;
    const auto tmp628 = tmp627 / tmp127;
    const auto tmp629 = tmp144 * tmp628;
    const auto tmp630 = tmp629 + tmp621;
    const auto tmp631 = tmp630 * (tmp43 > tmp12 ? 1 : 0.0);
    const auto tmp632 = tmp588 * (tmp7 < tmp10 ? 1 : 0.0);
    const auto tmp633 = tmp632 * (tmp11 > tmp8 ? 1 : 0.0);
    const auto tmp634 = tmp588 * (tmp7 < tmp1 ? 1 : 0.0);
    const auto tmp635 = tmp154 * tmp634;
    const auto tmp636 = tmp635 + tmp633;
    const auto tmp637 = tmp636 * tmp149;
    const auto tmp638 = tmp637 + tmp631;
    const auto tmp639 = -1 * tmp638;
    const auto tmp640 = tmp639 * tmp44;
    const auto tmp641 = -1 * tmp465;
    const auto tmp642 = tmp212 * tmp641;
    const auto tmp643 = tmp642 + tmp640;
    const auto tmp644 = -1 * tmp338;
    const auto tmp645 = tmp182 * tmp644;
    const auto tmp646 = tmp645 + tmp642;
    const auto tmp647 = tmp646 + tmp643;
    const auto tmp648 = tmp647 * tmp46;
    const auto tmp649 = tmp222 * tmp372;
    const auto tmp650 = -1 * tmp649;
    const auto tmp651 = tmp50 * tmp475;
    const auto tmp652 = tmp229 * tmp221;
    const auto tmp653 = tmp652 + tmp651;
    const auto tmp654 = -1 * tmp653;
    const auto tmp655 = tmp654 + tmp650;
    const auto tmp656 = tmp655 / tmp47;
    const auto tmp657 = tmp656 * (tmp39 > tmp38 ? 1 : 0.0);
    const auto tmp658 = tmp238 * tmp383;
    const auto tmp659 = -1 * tmp658;
    const auto tmp660 = tmp66 * tmp488;
    const auto tmp661 = tmp245 * tmp237;
    const auto tmp662 = tmp661 + tmp660;
    const auto tmp663 = -1 * tmp662;
    const auto tmp664 = tmp663 + tmp659;
    const auto tmp665 = tmp664 / tmp64;
    const auto tmp666 = -1 * tmp665;
    const auto tmp667 = tmp81 * tmp666;
    const auto tmp668 = tmp667 + tmp657;
    const auto tmp669 = tmp668 * (tmp40 > tmp31 ? 1 : 0.0);
    const auto tmp670 = tmp257 * tmp397;
    const auto tmp671 = -1 * tmp670;
    const auto tmp672 = tmp87 * tmp504;
    const auto tmp673 = tmp264 * tmp256;
    const auto tmp674 = tmp673 + tmp672;
    const auto tmp675 = -1 * tmp674;
    const auto tmp676 = tmp675 + tmp671;
    const auto tmp677 = tmp676 / tmp85;
    const auto tmp678 = -1 * tmp677;
    const auto tmp679 = tmp102 * tmp678;
    const auto tmp680 = tmp679 + tmp669;
    const auto tmp681 = tmp680 * (tmp41 < tmp24 ? 1 : 0.0);
    const auto tmp682 = tmp275 * tmp411;
    const auto tmp683 = -1 * tmp682;
    const auto tmp684 = tmp109 * tmp520;
    const auto tmp685 = tmp282 * tmp274;
    const auto tmp686 = tmp685 + tmp684;
    const auto tmp687 = -1 * tmp686;
    const auto tmp688 = tmp687 + tmp683;
    const auto tmp689 = tmp688 / tmp106;
    const auto tmp690 = tmp123 * tmp689;
    const auto tmp691 = tmp690 + tmp681;
    const auto tmp692 = tmp691 * (tmp42 < tmp18 ? 1 : 0.0);
    const auto tmp693 = tmp292 * tmp424;
    const auto tmp694 = -1 * tmp693;
    const auto tmp695 = tmp130 * tmp535;
    const auto tmp696 = tmp299 * tmp291;
    const auto tmp697 = tmp696 + tmp695;
    const auto tmp698 = -1 * tmp697;
    const auto tmp699 = tmp698 + tmp694;
    const auto tmp700 = tmp699 / tmp127;
    const auto tmp701 = tmp144 * tmp700;
    const auto tmp702 = tmp701 + tmp692;
    const auto tmp703 = tmp702 * (tmp43 > tmp12 ? 1 : 0.0);
    const auto tmp704 = tmp656 * (tmp7 < tmp10 ? 1 : 0.0);
    const auto tmp705 = tmp704 * (tmp11 > tmp8 ? 1 : 0.0);
    const auto tmp706 = tmp656 * (tmp7 < tmp1 ? 1 : 0.0);
    const auto tmp707 = tmp154 * tmp706;
    const auto tmp708 = tmp707 + tmp705;
    const auto tmp709 = tmp708 * tmp149;
    const auto tmp710 = tmp709 + tmp703;
    const auto tmp711 = -1 * tmp710;
    const auto tmp712 = tmp711 * tmp44;
    const auto tmp713 = tmp338 * tmp641;
    const auto tmp714 = tmp713 + tmp712;
    const auto tmp715 = -1 * tmp577;
    const auto tmp716 = tmp212 * tmp715;
    const auto tmp717 = tmp362 * tmp644;
    const auto tmp718 = tmp717 + tmp716;
    const auto tmp719 = tmp718 + tmp714;
    const auto tmp720 = tmp719 * tmp46;
    const auto tmp721 = -1 * tmp651;
    const auto tmp722 = tmp373 * tmp221;
    const auto tmp723 = tmp722 + tmp649;
    const auto tmp724 = -1 * tmp723;
    const auto tmp725 = tmp724 + tmp721;
    const auto tmp726 = tmp725 / tmp47;
    const auto tmp727 = tmp726 * (tmp39 > tmp38 ? 1 : 0.0);
    const auto tmp728 = -1 * tmp660;
    const auto tmp729 = tmp384 * tmp237;
    const auto tmp730 = tmp729 + tmp658;
    const auto tmp731 = -1 * tmp730;
    const auto tmp732 = tmp731 + tmp728;
    const auto tmp733 = tmp732 / tmp64;
    const auto tmp734 = -1 * tmp733;
    const auto tmp735 = tmp81 * tmp734;
    const auto tmp736 = tmp735 + tmp727;
    const auto tmp737 = tmp736 * (tmp40 > tmp31 ? 1 : 0.0);
    const auto tmp738 = -1 * tmp672;
    const auto tmp739 = tmp398 * tmp256;
    const auto tmp740 = tmp739 + tmp670;
    const auto tmp741 = -1 * tmp740;
    const auto tmp742 = tmp741 + tmp738;
    const auto tmp743 = tmp742 / tmp85;
    const auto tmp744 = -1 * tmp743;
    const auto tmp745 = tmp102 * tmp744;
    const auto tmp746 = tmp745 + tmp737;
    const auto tmp747 = tmp746 * (tmp41 < tmp24 ? 1 : 0.0);
    const auto tmp748 = -1 * tmp684;
    const auto tmp749 = tmp412 * tmp274;
    const auto tmp750 = tmp749 + tmp682;
    const auto tmp751 = -1 * tmp750;
    const auto tmp752 = tmp751 + tmp748;
    const auto tmp753 = tmp752 / tmp106;
    const auto tmp754 = tmp123 * tmp753;
    const auto tmp755 = tmp754 + tmp747;
    const auto tmp756 = tmp755 * (tmp42 < tmp18 ? 1 : 0.0);
    const auto tmp757 = -1 * tmp695;
    const auto tmp758 = tmp425 * tmp291;
    const auto tmp759 = tmp758 + tmp693;
    const auto tmp760 = -1 * tmp759;
    const auto tmp761 = tmp760 + tmp757;
    const auto tmp762 = tmp761 / tmp127;
    const auto tmp763 = tmp144 * tmp762;
    const auto tmp764 = tmp763 + tmp756;
    const auto tmp765 = tmp764 * (tmp43 > tmp12 ? 1 : 0.0);
    const auto tmp766 = tmp726 * (tmp7 < tmp10 ? 1 : 0.0);
    const auto tmp767 = tmp766 * (tmp11 > tmp8 ? 1 : 0.0);
    const auto tmp768 = tmp726 * (tmp7 < tmp1 ? 1 : 0.0);
    const auto tmp769 = tmp154 * tmp768;
    const auto tmp770 = tmp769 + tmp767;
    const auto tmp771 = tmp770 * tmp149;
    const auto tmp772 = tmp771 + tmp765;
    const auto tmp773 = -1 * tmp772;
    const auto tmp774 = tmp773 * tmp44;
    const auto tmp775 = tmp716 + tmp774;
    const auto tmp776 = tmp465 * tmp644;
    const auto tmp777 = tmp776 + tmp713;
    const auto tmp778 = tmp777 + tmp775;
    const auto tmp779 = tmp778 * tmp46;
    const auto tmp780 = tmp222 * tmp475;
    const auto tmp781 = -1 * tmp780;
    const auto tmp782 = tmp476 * tmp221;
    const auto tmp783 = tmp782 + tmp780;
    const auto tmp784 = -1 * tmp783;
    const auto tmp785 = tmp784 + tmp781;
    const auto tmp786 = tmp785 / tmp47;
    const auto tmp787 = tmp786 * (tmp39 > tmp38 ? 1 : 0.0);
    const auto tmp788 = tmp238 * tmp488;
    const auto tmp789 = -1 * tmp788;
    const auto tmp790 = tmp489 * tmp237;
    const auto tmp791 = tmp790 + tmp788;
    const auto tmp792 = -1 * tmp791;
    const auto tmp793 = tmp792 + tmp789;
    const auto tmp794 = tmp793 / tmp64;
    const auto tmp795 = -1 * tmp794;
    const auto tmp796 = tmp81 * tmp795;
    const auto tmp797 = tmp796 + tmp787;
    const auto tmp798 = tmp797 * (tmp40 > tmp31 ? 1 : 0.0);
    const auto tmp799 = tmp257 * tmp504;
    const auto tmp800 = -1 * tmp799;
    const auto tmp801 = tmp505 * tmp256;
    const auto tmp802 = tmp801 + tmp799;
    const auto tmp803 = -1 * tmp802;
    const auto tmp804 = tmp803 + tmp800;
    const auto tmp805 = tmp804 / tmp85;
    const auto tmp806 = -1 * tmp805;
    const auto tmp807 = tmp102 * tmp806;
    const auto tmp808 = tmp807 + tmp798;
    const auto tmp809 = tmp808 * (tmp41 < tmp24 ? 1 : 0.0);
    const auto tmp810 = tmp275 * tmp520;
    const auto tmp811 = -1 * tmp810;
    const auto tmp812 = tmp521 * tmp274;
    const auto tmp813 = tmp812 + tmp810;
    const auto tmp814 = -1 * tmp813;
    const auto tmp815 = tmp814 + tmp811;
    const auto tmp816 = tmp815 / tmp106;
    const auto tmp817 = tmp123 * tmp816;
    const auto tmp818 = tmp817 + tmp809;
    const auto tmp819 = tmp818 * (tmp42 < tmp18 ? 1 : 0.0);
    const auto tmp820 = tmp292 * tmp535;
    const auto tmp821 = -1 * tmp820;
    const auto tmp822 = tmp536 * tmp291;
    const auto tmp823 = tmp822 + tmp820;
    const auto tmp824 = -1 * tmp823;
    const auto tmp825 = tmp824 + tmp821;
    const auto tmp826 = tmp825 / tmp127;
    const auto tmp827 = tmp144 * tmp826;
    const auto tmp828 = tmp827 + tmp819;
    const auto tmp829 = tmp828 * (tmp43 > tmp12 ? 1 : 0.0);
    const auto tmp830 = tmp786 * (tmp7 < tmp10 ? 1 : 0.0);
    const auto tmp831 = tmp830 * (tmp11 > tmp8 ? 1 : 0.0);
    const auto tmp832 = tmp786 * (tmp7 < tmp1 ? 1 : 0.0);
    const auto tmp833 = tmp154 * tmp832;
    const auto tmp834 = tmp833 + tmp831;
    const auto tmp835 = tmp834 * tmp149;
    const auto tmp836 = tmp835 + tmp829;
    const auto tmp837 = -1 * tmp836;
    const auto tmp838 = tmp837 * tmp44;
    const auto tmp839 = tmp338 * tmp715;
    const auto tmp840 = tmp839 + tmp838;
    const auto tmp841 = tmp577 * tmp644;
    const auto tmp842 = tmp841 + tmp839;
    const auto tmp843 = tmp842 + tmp840;
    const auto tmp844 = tmp843 * tmp46;
    ((result[ 0 ])[ 0 ])[ 0 ] = tmp219;
    ((result[ 0 ])[ 0 ])[ 1 ] = tmp368;
    ((result[ 0 ])[ 1 ])[ 0 ] = tmp469;
    ((result[ 0 ])[ 1 ])[ 1 ] = tmp581;
    ((result[ 1 ])[ 0 ])[ 0 ] = tmp648;
    ((result[ 1 ])[ 0 ])[ 1 ] = tmp720;
    ((result[ 1 ])[ 1 ])[ 0 ] = tmp779;
    ((result[ 1 ])[ 1 ])[ 1 ] = tmp844;
  }

  template< std::size_t i >
  const ConstantType< i > &constant () const
  {
    return *std::get< i >( constants_ );
  }

  template< std::size_t i >
  ConstantType< i > &constant ()
  {
    return *std::get< i >( constants_ );
  }
  ConstantTupleType constants_;
  std::tuple<  > coefficients_;
};

} // namespace UFLLocalFunctions_22e797a8f3e8c322f33c41e07bd15165

PYBIND11_MODULE( localfunction_22e797a8f3e8c322f33c41e07bd15165_a524c1196983e65de1c06d7d6afdeb44, module )
{
  typedef UFLLocalFunctions_22e797a8f3e8c322f33c41e07bd15165::UFLLocalFunction< typename Dune::FemPy::GridPart< Dune::Fem::FilteredGridPart< Dune::FemPy::GridPart< Dune::Fem::AdaptiveLeafGridPart< Dune::ALUGrid< 2, 2, Dune::simplex > > >, Dune::Fem::SimpleFilter< Dune::FemPy::GridPart< Dune::Fem::AdaptiveLeafGridPart< Dune::ALUGrid< 2, 2, Dune::simplex > > > >, true > > > LocalFunctionType;
  if constexpr( LocalFunctionType::gridPartValid )
  {
      auto cls = Dune::Python::insertClass<LocalFunctionType>(module,"UFLLocalFunction",Dune::Python::GenerateTypeName("UFLLocalFunctions_22e797a8f3e8c322f33c41e07bd15165::UFLLocalFunction< typename Dune::FemPy::GridPart< Dune::Fem::FilteredGridPart< Dune::FemPy::GridPart< Dune::Fem::AdaptiveLeafGridPart< Dune::ALUGrid< 2, 2, Dune::simplex > > >, Dune::Fem::SimpleFilter< Dune::FemPy::GridPart< Dune::Fem::AdaptiveLeafGridPart< Dune::ALUGrid< 2, 2, Dune::simplex > > > >, true > > >"), Dune::Python::IncludeFiles({"python/dune/generated/localfunction_22e797a8f3e8c322f33c41e07bd15165_a524c1196983e65de1c06d7d6afdeb44.cc"})).first;
      Dune::FemPy::registerUFLLocalFunction( module, cls );
      cls.def( pybind11::init( [] ( pybind11::object gridView, const std::string &name, int order ) {return new LocalFunctionType( Dune::FemPy::gridPart<Dune::Fem::FilteredGridPart< Dune::FemPy::GridPart< Dune::Fem::AdaptiveLeafGridPart< Dune::ALUGrid< 2, 2, Dune::simplex > > >, Dune::Fem::SimpleFilter< Dune::FemPy::GridPart< Dune::Fem::AdaptiveLeafGridPart< Dune::ALUGrid< 2, 2, Dune::simplex > > > >, true >>(gridView),name,order); } ), pybind11::keep_alive< 1, 2 >() );
      cls.def_property_readonly( "virtualized", [] ( LocalFunctionType& ) -> bool { return true;});
  }
}

#endif
