// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
// vi: set et ts=4 sw=2 sts=2:
// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file LICENSE.md in module root
// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
//
// WARNING
// This file is automatically generated by gaussradau.mac! Don't edit by hand!
#ifndef DUNE_GEOMETRY_QUADRATURE_GaussRadauRight_HH
#define DUNE_GEOMETRY_QUADRATURE_GaussRadauRight_HH

#ifndef DUNE_INCLUDING_IMPLEMENTATION
#error This is a private header that should not be included directly.
#error Use #include <dune/geometry/quadraturerules.hh> instead.
#endif

#include "numberfromstring.hh"

namespace Dune {

  /************************************************
   * Quadraturerule for 1d line
   *************************************************/

  template<typename ct, int dim>
  class GaussRadauRightQuadratureRule;

  template<typename ct>
  using GaussRadauRightQuadratureRule1D = GaussRadauRightQuadratureRule<ct,1>;

  template<typename ct>
  class GaussRadauRightQuadratureRule<ct,1> : public QuadratureRule<ct,1>
  {
  public:
    /** brief The highest quadrature order available */
    constexpr static int highest_order = 30;

  private:
    friend class QuadratureRuleFactory<ct,1>;
    GaussRadauRightQuadratureRule (int p);
    ~GaussRadauRightQuadratureRule(){}
  };

  //! internal Helper template for the initialization of the quadrature rules
  template<typename ct>
  struct GaussRadauRightQuadratureInitHelper {
    static void init(int p,
                     std::vector< FieldVector<ct, 1> > & _points,
                     std::vector< ct > & _weight,
                     int & delivered_order);
  };

  template<typename ct>
  void GaussRadauRightQuadratureInitHelper<ct>::init(int p,
         std::vector< FieldVector<ct, 1> > & _points,
         std::vector< ct > & _weight,
         int & delivered_order)
  {
    switch(p)
    {
    case 0 :
      delivered_order = 0;
      _points.resize(1);
      _weight.resize(1);
      _points[0] = DUNE_NUMBER_FROM_STRING(ct, 1.0);
      _weight[0] = DUNE_NUMBER_FROM_STRING(ct, 1.0);
      break;

    // order 1,2
    case 1 :
    case 2 :
      delivered_order = 2;
      _points.resize(2);
      _weight.resize(2);
      _points[0] = DUNE_NUMBER_FROM_STRING(ct, 1.0);
      _weight[0] = DUNE_NUMBER_FROM_STRING(ct, 0.25);
      _points[1] = DUNE_NUMBER_FROM_STRING(ct, 0.3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333);
      _weight[1] = DUNE_NUMBER_FROM_STRING(ct, 0.75);
      break;

    // order 3,4
    case 3 :
    case 4 :
      delivered_order = 4;
      _points.resize(3);
      _weight.resize(3);
      _points[0] = DUNE_NUMBER_FROM_STRING(ct, 1.0);
      _weight[0] = DUNE_NUMBER_FROM_STRING(ct, 0.1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111);
      _points[1] = DUNE_NUMBER_FROM_STRING(ct, 0.1550510257216821901802715925294108608034052519343329871567307432749039622542684973460140566895359765);
      _weight[1] = DUNE_NUMBER_FROM_STRING(ct, 0.3764030627004672750500754423692807946676125699817591630990918731319177672928523603738927935248711045);
      _points[2] = DUNE_NUMBER_FROM_STRING(ct, 0.6449489742783178098197284074705891391965947480656670128432692567250960377457315026539859433104640234);
      _weight[2] = DUNE_NUMBER_FROM_STRING(ct, 0.5124858261884216138388134465196080942212763189071297257897970157569711215960365285149960953640177843);
      break;

    // order 5,6
    case 5 :
    case 6 :
      delivered_order = 6;
      _points.resize(4);
      _weight.resize(4);
      _points[0] = DUNE_NUMBER_FROM_STRING(ct, 1.0);
      _weight[0] = DUNE_NUMBER_FROM_STRING(ct, 0.0625);
      _points[1] = DUNE_NUMBER_FROM_STRING(ct, 0.08858795951270394739554614376945619688572933192274956543116369516997648742681009672521930761610157857);
      _weight[1] = DUNE_NUMBER_FROM_STRING(ct, 0.2204622111767683752754784720371859890529167281230873116876396332191458306523173431813869747371986422);
      _points[2] = DUNE_NUMBER_FROM_STRING(ct, 0.7876594617608470560252418898759996233480800585109738408854524491392307168918253691359860554930833447);
      _weight[2] = DUNE_NUMBER_FROM_STRING(ct, 0.3288443199800597439442892210727968317490234075874455536546030877312606057631737874914764364720579267);
      _points[3] = DUNE_NUMBER_FROM_STRING(ct, 0.4094668644407347108649262520688298940519048952805623079690981414050785099670788198530803511765293624);
      _weight[3] = DUNE_NUMBER_FROM_STRING(ct, 0.388193468843171880780232306890017179198059864289467134657757279049593563584508869327136588790743431);
      break;

    // order 7,8
    case 7 :
    case 8 :
      delivered_order = 8;
      _points.resize(5);
      _weight.resize(5);
      _points[0] = DUNE_NUMBER_FROM_STRING(ct, 1.0);
      _weight[0] = DUNE_NUMBER_FROM_STRING(ct, 0.03999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999);
      _points[1] = DUNE_NUMBER_FROM_STRING(ct, 0.05710419611451768219312119255411562123507794559875016432780829293093467820207316458611381681984273686);
      _weight[1] = DUNE_NUMBER_FROM_STRING(ct, 0.1437135607912259413234122198541102271589229617318809184244815352000477933742653045394234927685913557);
      _points[2] = DUNE_NUMBER_FROM_STRING(ct, 0.8602401356562194478479129188751197667383780225872255049242335941839742579301655644134901549264276106);
      _weight[2] = DUNE_NUMBER_FROM_STRING(ct, 0.2231039010835707444025602182285893596530132769666542171491954357318447595238752822393854332837929434);
      _points[3] = DUNE_NUMBER_FROM_STRING(ct, 0.2768430136381238276800459976856251411108891696950304683494420488311213396837080367725415285640511308);
      _weight[3] = DUNE_NUMBER_FROM_STRING(ct, 0.28135601514946206019217265034065989120000299266737412219813168211940937087419012854107836846850562);
      _points[4] = DUNE_NUMBER_FROM_STRING(ct, 0.5835904323689168200566976686629172486934326398967716401762938418317475019618310120056322774674562993);
      _weight[4] = DUNE_NUMBER_FROM_STRING(ct, 0.3118265229757412540818549115766405219880607686340907422281913469486980762276692846801127054791100807);
      break;

    // order 9,10
    case 9 :
    case 10 :
      delivered_order = 10;
      _points.resize(6);
      _weight.resize(6);
      _points[0] = DUNE_NUMBER_FROM_STRING(ct, 0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999);
      _weight[0] = DUNE_NUMBER_FROM_STRING(ct, 0.02777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777);
      _points[1] = DUNE_NUMBER_FROM_STRING(ct, 0.03980985705146874234080669009333316770426265422838516194640774820496474562617430685450225908318456723);
      _weight[1] = DUNE_NUMBER_FROM_STRING(ct, 0.1007941926267404201046003778745677818586739544978990469020905175031896616185019326523859081070179564);
      _points[2] = DUNE_NUMBER_FROM_STRING(ct, 0.9014649142011735738765011021122473096194864304517102005637358130565651259599860618861752355046079331);
      _weight[2] = DUNE_NUMBER_FROM_STRING(ct, 0.15982037661025548327288999189811797479611146812876839180378402272111432088446591677960283187954084);
      _points[3] = DUNE_NUMBER_FROM_STRING(ct, 0.1980134178736081725357921367952962360381863588337888792083291768272087117286465026597729214141553943);
      _weight[3] = DUNE_NUMBER_FROM_STRING(ct, 0.2084506671559538694797031913713231216677075046880940122344846434185750632010718140854202072910519794);
      _points[4] = DUNE_NUMBER_FROM_STRING(ct, 0.6954642733536360945146148237211671613940015549986483590851972611325288138368238668739250465460035524);
      _weight[4] = DUNE_NUMBER_FROM_STRING(ct, 0.2426935942344849580799139577934448339939675840621020934694189186061539713876707499244320986309746931);
      _points[5] = DUNE_NUMBER_FROM_STRING(ct, 0.4379748102473861440050125200052288525167902742147401264690572735060053301210965344528972647247758255);
      _weight[5] = DUNE_NUMBER_FROM_STRING(ct, 0.2604633915947874912851147032847685099057617108453586778124441199731892051305118087803811763136367531);
      break;

    // order 11,12
    case 11 :
    case 12 :
      delivered_order = 12;
      _points.resize(7);
      _weight.resize(7);
      _points[0] = DUNE_NUMBER_FROM_STRING(ct, 1.0);
      _weight[0] = DUNE_NUMBER_FROM_STRING(ct, 0.02040816326530612244897959183673469387755102040816326530612244897959183673469387755102040816326530612);
      _points[1] = DUNE_NUMBER_FROM_STRING(ct, 0.0293164271597848919720502769131649103737303925637149277869106839449360382416657787486309483651843695);
      _weight[1] = DUNE_NUMBER_FROM_STRING(ct, 0.07449423555601031793324878020916692097532644942393942434007237049841313043955906688474729498373429045);
      _points[2] = DUNE_NUMBER_FROM_STRING(ct, 0.9269456713197411148518739658196820110561724195422832527244670796566452024525282438143394800135873915);
      _weight[2] = DUNE_NUMBER_FROM_STRING(ct, 0.1196137446126562028935387403847763008302627238892853476612432820588170328039983753965707678098696572);
      _points[3] = DUNE_NUMBER_FROM_STRING(ct, 0.148078599668484291849976852495979212230248774808594461412594641801598386090878321806369397661747576);
      _weight[3] = DUNE_NUMBER_FROM_STRING(ct, 0.1591021157336507408724352172349341821081630163278709547082536480846529383453687327524900611444633129);
      _points[4] = DUNE_NUMBER_FROM_STRING(ct, 0.7692338620300545009168833601156454518371421433222954161669481696365481305739532856852002115427743676);
      _weight[4] = DUNE_NUMBER_FROM_STRING(ct, 0.1904749368221155769029691739380627618671473914712524715596097410083045379273763891870770560020639449);
      _points[5] = DUNE_NUMBER_FROM_STRING(ct, 0.3369846902811542990970529720807757051975687500284733471225629680736913505127840608524091411736544825);
      _weight[5] = DUNE_NUMBER_FROM_STRING(ct, 0.2123518895029778041991540195751041223560385606946763943251267338610614147090378494828338349159860945);
      _points[6] = DUNE_NUMBER_FROM_STRING(ct, 0.5586715187715501320813933418055219400743682889654078255557472261173501228974210783238200520122825819);
      _weight[6] = DUNE_NUMBER_FROM_STRING(ct, 0.2235549145072832347496744768212210179855108377848121420995717755091591090399657087452605769806173937);
      break;

    // order 13,14
    case 13 :
    case 14 :
      delivered_order = 14;
      _points.resize(8);
      _weight.resize(8);
      _points[0] = DUNE_NUMBER_FROM_STRING(ct, 1.0);
      _weight[0] = DUNE_NUMBER_FROM_STRING(ct, 0.015625);
      _points[1] = DUNE_NUMBER_FROM_STRING(ct, 0.02247938643871249810882549957084505992217390723560038985928427605875857575812188014380655937699869041);
      _weight[1] = DUNE_NUMBER_FROM_STRING(ct, 0.05725440737212859967117686425977936825057099397716932914168114853242340872092305631760230041130854427);
      _points[2] = DUNE_NUMBER_FROM_STRING(ct, 0.9437374394630778535343478089676888242202344852553769164275572083026057856516616966519018212670469614);
      _weight[2] = DUNE_NUMBER_FROM_STRING(ct, 0.092679077401489639270364486349647736830932563674935858313467408965379128989721699937903158856790959);
      _points[3] = DUNE_NUMBER_FROM_STRING(ct, 0.1146790531609042319096402370675146270777298245319719453889897349515683398313771981082383887487264663);
      _weight[3] = DUNE_NUMBER_FROM_STRING(ct, 0.1248239506649324816289346467565124312159878101369501620465085111501266363843363392424861677155123433);
      _points[4] = DUNE_NUMBER_FROM_STRING(ct, 0.819759308263107635012420057190818215457939379194529844677374444720182011832042478974289957052318717);
      _weight[4] = DUNE_NUMBER_FROM_STRING(ct, 0.1520653103233925644878716457001354421902137069080648805811724927448463625325070164171434664138434795);
      _points[5] = DUNE_NUMBER_FROM_STRING(ct, 0.2657898227845894684767893916933899974369968814056098940206796867530550186172425454664726006420981075);
      _weight[5] = DUNE_NUMBER_FROM_STRING(ct, 0.1735073978172506401143379592110741293229628009936786196599092457283690261775051724258224098007456587);
      _points[6] = DUNE_NUMBER_FROM_STRING(ct, 0.6473752828868303626260922298287587971919781169427252176007906613661670650910811632587999055012469012);
      _weight[6] = DUNE_NUMBER_FROM_STRING(ct, 0.188258772694559278286064630720786335118640532533949995543333201250716465965606978691283022057567494);
      _points[7] = DUNE_NUMBER_FROM_STRING(ct, 0.4528463736694446169985514423476511453596140721008524586919906545143298698851397040631574340782308226);
      _weight[7] = DUNE_NUMBER_FROM_STRING(ct, 0.1957860837262467965412497670020645570706915917752511547139279916281389712293997369677594747442315208);
      break;

    // order 15,16
    case 15 :
    case 16 :
      delivered_order = 16;
      _points.resize(9);
      _weight.resize(9);
      _points[0] = DUNE_NUMBER_FROM_STRING(ct, 1.0);
      _weight[0] = DUNE_NUMBER_FROM_STRING(ct, 0.01234567901234567901234567901234567901234567901234567901234567901234567901234567901234567901234567901);
      _points[1] = DUNE_NUMBER_FROM_STRING(ct, 0.01777991514736345181320510103767906126648839823850043366560783167875924757578300659726427675032243894);
      _weight[1] = DUNE_NUMBER_FROM_STRING(ct, 0.04535725246164145850644674920795090340044910382256608423236014041761080705247011291369808019791001464);
      _points[2] = DUNE_NUMBER_FROM_STRING(ct, 0.9553660447100301492668789781416922384764228669900323904483832488568928548867910582521230305572279596);
      _weight[2] = DUNE_NUMBER_FROM_STRING(ct, 0.07382700952315769290979424990076684192644119748373204166495034257132170235826067178423603914263698819);
      _points[3] = DUNE_NUMBER_FROM_STRING(ct, 0.09132360789979395600374145807454135310704047574456766876687017263479530047915987523538037892138190674);
      _weight[3] = DUNE_NUMBER_FROM_STRING(ct, 0.1002766490122759787105825452084585374837100645139951717640162083073491273282749948425325106489951269);
      _points[4] = DUNE_NUMBER_FROM_STRING(ct, 0.8556337429578544285147814797717850302864781605395751604095670933496281754845563783672978210969088188);
      _weight[4] = DUNE_NUMBER_FROM_STRING(ct, 0.1235946891022965261806198974844998620884284109101835335540040960997860637405727093530324964819711671);
      _points[5] = DUNE_NUMBER_FROM_STRING(ct, 0.2143084793956307583575412675816703226744297175224765908137326191408580982640893227912904964441607054);
      _weight[5] = DUNE_NUMBER_FROM_STRING(ct, 0.1431933481786155855733528188760054645853142508187793084336149756313973598558725153845647136386781611);
      _points[6] = DUNE_NUMBER_FROM_STRING(ct, 0.7131752428555694810513137602509073414468837909454265589730704929652137959347225387189767846054023754);
      _weight[6] = DUNE_NUMBER_FROM_STRING(ct, 0.1584218878352189891690004248211828904282803901135082813370203191442722409397377362074389726296125592);
      _points[7] = DUNE_NUMBER_FROM_STRING(ct, 0.371932164583272302430853960482629244668100063377480677867638541249730350859486812775129485772654593);
      _weight[7] = DUNE_NUMBER_FROM_STRING(ct, 0.1688469834879647929018621198957803825501226794932222463313217885924663693432674422816562201729896321);
      _points[8] = DUNE_NUMBER_FROM_STRING(ct, 0.5451866848034266490322722299532130551329800560537052249374829413005927647507051249095965493813529665);
      _weight[8] = DUNE_NUMBER_FROM_STRING(ct, 0.1741365013864832970359955155930094385249082238316676536703664502234506503691981382204952880748606714);
      break;

    // order 17,18
    case 17 :
    case 18 :
      delivered_order = 18;
      _points.resize(10);
      _weight.resize(10);
      _points[0] = DUNE_NUMBER_FROM_STRING(ct, 1.0);
      _weight[0] = DUNE_NUMBER_FROM_STRING(ct, 0.01);
      _points[1] = DUNE_NUMBER_FROM_STRING(ct, 0.01441240964887654863282674081081323941174473105657808607075067912813887583460044894395069303727210116);
      _weight[1] = DUNE_NUMBER_FROM_STRING(ct, 0.03680850274337924946552564703952257250633407560110190885784111690017778477215458793270183849421941181);
      _points[2] = DUNE_NUMBER_FROM_STRING(ct, 0.9637421871167905390588356992319185479241288771581362138479503914355973155457527404910756919669630462);
      _weight[2] = DUNE_NUMBER_FROM_STRING(ct, 0.06014833527874081575865526135099759590938724369183571272716692583091329962913008482323531114050148899);
      _points[3] = DUNE_NUMBER_FROM_STRING(ct, 0.07438738970919604463591818595599858508097691328473519842679960274501992379023428096791242945498303363);
      _weight[3] = DUNE_NUMBER_FROM_STRING(ct, 0.08218800636846073785084083445387855020451656194507156599834064798783462171005161946359655246906025996);
      _points[4] = DUNE_NUMBER_FROM_STRING(ct, 0.8819210212100012998077148880052647763071205854487038619129766513283089105657085985563097864503385464);
      _weight[4] = DUNE_NUMBER_FROM_STRING(ct, 0.1021350659395003377778943361115165106736257210286962005068043553499340322306121690246726114965883931);
      _points[5] = DUNE_NUMBER_FROM_STRING(ct, 0.1761166561629952818631757460725685864113860479693058739346483371718478923148052033071589166216033503);
      _weight[5] = DUNE_NUMBER_FROM_STRING(ct, 0.1195967158571898566882859830801363758258364741540254585528364764210946139183141897137094066862003184);
      _points[6] = DUNE_NUMBER_FROM_STRING(ct, 0.7628230151850396146826933071467255329235111827037380779911005908346167214808478679770430364298828452);
      _weight[6] = DUNE_NUMBER_FROM_STRING(ct, 0.1340974189205893480292772376310295553451252092166458466844053839661648602000224960759896073212453487);
      _points[7] = DUNE_NUMBER_FROM_STRING(ct, 0.3096675799276378170596204672294840488163890844971259245735924385417910631238453492458723772259274575);
      _weight[7] = DUNE_NUMBER_FROM_STRING(ct, 0.1453050824164591555734315389815310253381621189272259396591735666935382783811527201352568817760678677);
      _points[8] = DUNE_NUMBER_FROM_STRING(ct, 0.6181172346952940246392297516035044802806674046397913475060393055585778777428482116865746364861237203);
      _weight[8] = DUNE_NUMBER_FROM_STRING(ct, 0.1529296438622113105081377377003979801780786241826203904279240012042738305695686747214466554361694378);
      _points[9] = DUNE_NUMBER_FROM_STRING(ct, 0.4619704010810109348831431086805643081072330679787275209992998979929435248645151935609445375900637938);
      _weight[9] = DUNE_NUMBER_FROM_STRING(ct, 0.1567912286134691883479514236509898340189339712527769765855075256460686785889934581093911351799474732);
      break;

    // order 19,20
    case 19 :
    case 20 :
      delivered_order = 20;
      _points.resize(11);
      _weight.resize(11);
      _points[0] = DUNE_NUMBER_FROM_STRING(ct, 0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999);
      _weight[0] = DUNE_NUMBER_FROM_STRING(ct, 0.008264462809917355371900826446280991735537190082644628099173553719008264462809917355371900826446280991);
      _points[1] = DUNE_NUMBER_FROM_STRING(ct, 0.01191761343241559690974558695898597603002784725837485802027599304441351971793953552093495537698887495);
      _weight[1] = DUNE_NUMBER_FROM_STRING(ct, 0.03046254890606556735360916344416515441920593612889634378768602325986918684909318284948512089071412454);
      _points[2] = DUNE_NUMBER_FROM_STRING(ct, 0.9699709678385135029569356423655920593053451564625792084689040051698797214284804451045965026202723376);
      _weight[2] = DUNE_NUMBER_FROM_STRING(ct, 0.04992304095398403194787673479012341784951435295822716798886200345394064771188529448902933415752225152);
      _points[3] = DUNE_NUMBER_FROM_STRING(ct, 0.06173207187714812552262936719425014145287208036190213218470079750300542267782554988602355308971116546);
      _weight[3] = DUNE_NUMBER_FROM_STRING(ct, 0.06851684106660112815507694029022108631584560319435756477685101885640953683767976717173664864587875312);
      _points[4] = DUNE_NUMBER_FROM_STRING(ct, 0.9017109877901467703487989784097679814681176760729360475326567373055975858521386207932416878958506861);
      _weight[4] = DUNE_NUMBER_FROM_STRING(ct, 0.08565880960332991824335632452114911543009060544673768448218195768393830581589904069386788764433631681);
      _points[5] = DUNE_NUMBER_FROM_STRING(ct, 0.1471114496430702404275994355798195021337713619059297805712867093259790600660861446700545255054338431);
      _weight[5] = DUNE_NUMBER_FROM_STRING(ct, 0.1010815542700122091749658771329642516494277755940245416341823725777740925226297436637027602819852004);
      _points[6] = DUNE_NUMBER_FROM_STRING(ct, 0.8009789210368988451379463016172425246730022622599153383117418553952368566445573598703594633591531735);
      _weight[6] = DUNE_NUMBER_FROM_STRING(ct, 0.1144330619244883122008416155631972831221456389832920628771016872588315039886167750369068708206089062);
      _points[7] = DUNE_NUMBER_FROM_STRING(ct, 0.2611596760084562402660516580548457231986357161379567253035521310935009972624582003737324443405623491);
      _weight[7] = DUNE_NUMBER_FROM_STRING(ct, 0.12546268884856419732457013381672775718613069695897309262354779249129469297632546407602624370590123);
      _points[8] = DUNE_NUMBER_FROM_STRING(ct, 0.6759444616766651073571505089347614715039952762295357455139412301626256578790308622295455518800017057);
      _weight[8] = DUNE_NUMBER_FROM_STRING(ct, 0.1339335430948420889033190816775717752086008360038592987740894422858598943031122752005614670488956897);
      _points[9] = DUNE_NUMBER_FROM_STRING(ct, 0.3946398468857868429619521050776075022149391536489841976946611563878829320916183985232456263028812026);
      _weight[9] = DUNE_NUMBER_FROM_STRING(ct, 0.1396806665516915225944810978601028731857924475265701484072617959266351875863206717620061077170286754);
      _points[10] = DUNE_NUMBER_FROM_STRING(ct, 0.5367387657156606328730951777118890227811982315666478711601841465166401511417696449330275943910494234);
      _weight[10] = DUNE_NUMBER_FROM_STRING(ct, 0.142582781970503668730002204457496293897708917122417466549062352486438686945627867701305658260682571);
      break;

    // order 21,22
    case 21 :
    case 22 :
      delivered_order = 22;
      _points.resize(12);
      _weight.resize(12);
      _points[0] = DUNE_NUMBER_FROM_STRING(ct, 0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999);
      _weight[0] = DUNE_NUMBER_FROM_STRING(ct, 0.006944444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444);
      _points[1] = DUNE_NUMBER_FROM_STRING(ct, 0.01001828046168040584302472986780478481479194051621623866216912370277685746144514894811474690557217898);
      _weight[1] = DUNE_NUMBER_FROM_STRING(ct, 0.02562404960363464873401147256755191359698912179586886783614733167396359699140406477146628165245745726);
      _points[2] = DUNE_NUMBER_FROM_STRING(ct, 0.9747263796024796502466688135383708980845368176554858005326201789921787651358684645855413515511531779);
      _weight[2] = DUNE_NUMBER_FROM_STRING(ct, 0.04208606746934048812078982684064078598356207668454606077811004135971778814182424352552804186759516359);
      _points[3] = DUNE_NUMBER_FROM_STRING(ct, 0.05203545112718055258354269577296432244718592505838183555552881934330327851280895562528383296766154587);
      _weight[3] = DUNE_NUMBER_FROM_STRING(ct, 0.05795374014586919637517095413584668388777153128408424542984574266464927148200496692165819750039770507);
      _points[4] = DUNE_NUMBER_FROM_STRING(ct, 0.9169583865525948532931346270180274177520051095629925713521035439862432832098136415299370694612456097);
      _weight[4] = DUNE_NUMBER_FROM_STRING(ct, 0.07278183442699756426127382735286559431255511311081887313664967558148928208419907103707790861347367931);
      _points[5] = DUNE_NUMBER_FROM_STRING(ct, 0.1246192251444430737352995872639092292474441300880058562471871920162296059349519090766521215975420845);
      _weight[5] = DUNE_NUMBER_FROM_STRING(ct, 0.08638531965665428215303288348279335482371411193381952188479961232975350369852446186555482138789619392);
      _points[6] = DUNE_NUMBER_FROM_STRING(ct, 0.8308248996228185740305665439056567039439893043182143500186679333872078183180614211671796544755957774);
      _weight[6] = DUNE_NUMBER_FROM_STRING(ct, 0.09849926741304481732802481898451691715880480601630014213517520121230333584098958189070626683477635742);
      _points[7] = DUNE_NUMBER_FROM_STRING(ct, 0.2228406070438378555078314534573627644117252503274297081643638173616062308369832016150585853516004853);
      _weight[7] = DUNE_NUMBER_FROM_STRING(ct, 0.1089344395130962194243737410114312720559919702231833101252380994924976153392527006073200151967269551);
      _points[8] = DUNE_NUMBER_FROM_STRING(ct, 0.7222032848909679255633213078046109071372364455125913944559779818780897684066745302575181714890353344);
      _weight[8] = DUNE_NUMBER_FROM_STRING(ct, 0.1175015575724929196743169929697715883009119236048689568907922000277105361992896721300643435454773039);
      _points[9] = DUNE_NUMBER_FROM_STRING(ct, 0.3400081579146651882336052338970175277313293398208505803470934737382842096120712309333935896431331419);
      _weight[9] = DUNE_NUMBER_FROM_STRING(ct, 0.1240607804020049797015365535394355200719995254498010043949067360502230324581192591300795635289312217);
      _points[10] = DUNE_NUMBER_FROM_STRING(ct, 0.5984972797671391832277207136730435902749187521976111511339511314695356530954712310305911412553938959);
      _weight[10] = DUNE_NUMBER_FROM_STRING(ct, 0.1284956690763538880639871267992001336436691476013189170108039583312533699461672093381787487185684594);
      _points[11] = DUNE_NUMBER_FROM_STRING(ct, 0.4681376130895840420831103807577535932852717675509161657042498476028053990410676565350775613890232895);
      _weight[11] = DUNE_NUMBER_FROM_STRING(ct, 0.1307328302760665517190373578715017917195862278509456559330869568319942233737803243379213667092550587);
      break;

    // order 23,24
    case 23 :
    case 24 :
      delivered_order = 24;
      _points.resize(13);
      _weight.resize(13);
      _points[0] = DUNE_NUMBER_FROM_STRING(ct, 0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999);
      _weight[0] = DUNE_NUMBER_FROM_STRING(ct, 0.005917159763313609467455621301775147928994082840236686390532544378698224852071005917159763313609467455);
      _points[1] = DUNE_NUMBER_FROM_STRING(ct, 0.008539054988427419368664460877839802806090414566577746496257927301230364575762166797509842961307629102);
      _weight[1] = DUNE_NUMBER_FROM_STRING(ct, 0.02185145163395103741442669230253126228354537862132045649291743515926153592140670516392700801272894985);
      _points[2] = DUNE_NUMBER_FROM_STRING(ct, 0.9784379368341496390919069169169960383680691296676253661798930654904321350621424594217105164689234998);
      _weight[2] = DUNE_NUMBER_FROM_STRING(ct, 0.03595120814624776446987687028207407841501895536660169592463294449355425288370779064245312669926985388);
      _points[3] = DUNE_NUMBER_FROM_STRING(ct, 0.04444646315540772302546679878555276624130930378899710999139642043436028639661647795803987919635307505);
      _weight[3] = DUNE_NUMBER_FROM_STRING(ct, 0.04963390344092354299236819387388759872276531452267544246797332700574719345537345645571951255905295405);
      _points[4] = DUNE_NUMBER_FROM_STRING(ct, 0.9289421012644110178488101551343152998504932414769823471037599293899243740926428914029706095801991064);
      _weight[4] = DUNE_NUMBER_FROM_STRING(ct, 0.06255191716557617906688464398784008656184274649282227400711808747510050471677954744690856656060123432);
      _points[5] = DUNE_NUMBER_FROM_STRING(ct, 0.1068544908834766576341067704324992625897998143695000275580631125622836143405186814627639697793505873);
      _weight[5] = DUNE_NUMBER_FROM_STRING(ct, 0.07457547504500010257574593212085472848830959655207242548776306668431488289996654073064815660600252619);
      _points[6] = DUNE_NUMBER_FROM_STRING(ct, 0.8545525437649358807902119164056171284859595037395583869615217146999851616473022152580139867380827058);
      _weight[6] = DUNE_NUMBER_FROM_STRING(ct, 0.08550173023530832123187933725608529010988327742650916870829611194441770373681670809118932944409747882);
      _points[7] = DUNE_NUMBER_FROM_STRING(ct, 0.1921510545298540409910572562286133303827013670215218660373964882963368867384002033277468512639620346);
      _weight[7] = DUNE_NUMBER_FROM_STRING(ct, 0.09518685777981586612737991037293691958788184471208789194562638680044365745312132402614513871070282189);
      _points[8] = DUNE_NUMBER_FROM_STRING(ct, 0.7595988895252270537426025740434203419422064350885379264310222786423119973912528922496277727549814325);
      _weight[8] = DUNE_NUMBER_FROM_STRING(ct, 0.1034803057279385373155662804144384374750427276214146948478010879630533907564801063538733440312738658);
      _points[9] = DUNE_NUMBER_FROM_STRING(ct, 0.2953808842625802216229168343760149059398907133108521080514580880514097551832904806231230987696368169);
      _weight[9] = DUNE_NUMBER_FROM_STRING(ct, 0.1102671146442257323455385820995765357020738630479430106311100293991178535583726917255962453649948882);
      _points[10] = DUNE_NUMBER_FROM_STRING(ct, 0.64960065027725499276629172334298057222565311827730373485571958964856442485986620008885607294565333);
      _weight[10] = DUNE_NUMBER_FROM_STRING(ct, 0.1154444314434977170061018793339061362073895171982322864758099735381130891596922281273366371689249657);
      _points[11] = DUNE_NUMBER_FROM_STRING(ct, 0.4105450812014576824890343505593324118433186951909181754985565958109519682767226149737373217217664214);
      _weight[11] = DUNE_NUMBER_FROM_STRING(ct, 0.1189392738303560156713425945898368420344422709752939545408915255899383006020911343567290538236643372);
      _points[12] = DUNE_NUMBER_FROM_STRING(ct, 0.5309508493128176706289302428968181393245082635016252048349547896722090314354827164359000778197833607);
      _weight[12] = DUNE_NUMBER_FROM_STRING(ct, 0.1206991711438455743154334620642569364828104246227900120795274795682394100041207609623141177050766563);
      break;

    // order 25,26
    case 25 :
    case 26 :
      delivered_order = 26;
      _points.resize(14);
      _weight.resize(14);
      _points[0] = DUNE_NUMBER_FROM_STRING(ct, 0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999);
      _weight[0] = DUNE_NUMBER_FROM_STRING(ct, 0.00510204081632653061224489795918367346938775510204081632653061224489795918367346938775510204081632653);
      _points[1] = DUNE_NUMBER_FROM_STRING(ct, 0.007364651026089321650691498413822343611205715616446000420689416452269750033894550997416319128445293682);
      _weight[1] = DUNE_NUMBER_FROM_STRING(ct, 0.01885358163494845713873136414594165020975759392510590592315060034299193800069304020789391250755439251);
      _points[2] = DUNE_NUMBER_FROM_STRING(ct, 0.9813896349890121485602806221597123115526801027908002379955097186555535838880620308147789489545503323);
      _weight[2] = DUNE_NUMBER_FROM_STRING(ct, 0.03106100845388573008306645823341460455969559499141094108084012625707654955896377969536296135374710094);
      _points[3] = DUNE_NUMBER_FROM_STRING(ct, 0.0383981387396783503768325248641416859178298341363546876124160117982427806914025897403499913466209422);
      _weight[3] = DUNE_NUMBER_FROM_STRING(ct, 0.04297026772149020154465386554328283974483688526109607883477417143735728532178658495401673766981052349);
      _points[4] = DUNE_NUMBER_FROM_STRING(ct, 0.9385244591007310123976333867652993517339853062062887126354508873721247374248021832126814047065480952);
      _weight[4] = DUNE_NUMBER_FROM_STRING(ct, 0.05430386137218141341336046761449170556749717283973110242510925951515177257930583451532790775304492282);
      _points[5] = DUNE_NUMBER_FROM_STRING(ct, 0.09259522469900263528289137543861635588927985865429292632366593235281921073136849542406090039759718099);
      _weight[5] = DUNE_NUMBER_FROM_STRING(ct, 0.06496983436867117390371286857296886542757042851651763549881540867872262529279047866030734246306485196);
      _points[6] = DUNE_NUMBER_FROM_STRING(ct, 0.8736948213066894193677145671317438911733815349203347594446961615475144054728685418531116734022398623);
      _weight[6] = DUNE_NUMBER_FROM_STRING(ct, 0.07481026967656067797526041847298687382328381103405386550842777879482025911405057274802766818691774256);
      _points[7] = DUNE_NUMBER_FROM_STRING(ct, 0.1672510113915577314955224787593571163747337087390977895834969262324481399932617359780977489832830798);
      _weight[7] = DUNE_NUMBER_FROM_STRING(ct, 0.08371486394554313949505113851903285254546037528256798216114894580640831517395702564992236389997285344);
      _points[8] = DUNE_NUMBER_FROM_STRING(ct, 0.7901570282734374855528633324993759322704266136136999317134349971780526905331558640579365443870029771);
      _weight[8] = DUNE_NUMBER_FROM_STRING(ct, 0.0915635010628648270619336510514316864439809227594628152951066579840052366089190074610930288816591208);
      _points[9] = DUNE_NUMBER_FROM_STRING(ct, 0.2586235407057625165897907328226910025245301373917701116571591768242959721348720274973743055115115388);
      _weight[9] = DUNE_NUMBER_FROM_STRING(ct, 0.09826275922649121516230654596477485524374871885835884725402164208061259270491076568978920429932178543);
      _points[10] = DUNE_NUMBER_FROM_STRING(ct, 0.6921010017196016568970419516876697301808911008718652877381506074556730863418738419796277914411356902);
      _weight[10] = DUNE_NUMBER_FROM_STRING(ct, 0.1037248816675878363340414432447055349260953854618612465467764711248264947647953780386198366283149413);
      _points[11] = DUNE_NUMBER_FROM_STRING(ct, 0.3621313972822388004086812982273215588635004488227823666951627890767765685364866146107646481156613177);
      _weight[11] = DUNE_NUMBER_FROM_STRING(ct, 0.1078835503023094256905937230574369840724121681977091473649374022846524089107794784879188404811405312);
      _points[12] = DUNE_NUMBER_FROM_STRING(ct, 0.5844439640213404555042208478109107062952661618107888083023659837678484044838564429563713070829009515);
      _weight[12] = DUNE_NUMBER_FROM_STRING(ct, 0.1106849057497854744658358415102718135678259837364580620549598005910175475300839492981459854834952701);
      _points[13] = DUNE_NUMBER_FROM_STRING(ct, 0.472584386004117725175094642678597272871548735684737639137060650545639928993354340136687675801761997);
      _weight[13] = DUNE_NUMBER_FROM_STRING(ct, 0.1120946740013538971192073161100760603984472040336255537254011228574590152552906352058191083511396366);
      break;

    // order 27,28
    case 27 :
    case 28 :
      delivered_order = 28;
      _points.resize(15);
      _weight.resize(15);
      _points[0] = DUNE_NUMBER_FROM_STRING(ct, 0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999);
      _weight[0] = DUNE_NUMBER_FROM_STRING(ct, 0.004444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444);
      _points[1] = DUNE_NUMBER_FROM_STRING(ct, 0.006416760792818456810820464094507178865719839912244884307238769932733545613705239155655121904187696819);
      _weight[1] = DUNE_NUMBER_FROM_STRING(ct, 0.01643219579229676612652142641153073057741290693423739200638154484999854248273452294729310561302604524);
      _points[2] = DUNE_NUMBER_FROM_STRING(ct, 0.9837752340986002382812280091410008568029060918346814026541382401229231239358663224051124039381821714);
      _weight[2] = DUNE_NUMBER_FROM_STRING(ct, 0.02710139002432224716910711840089438470564976679454870725896584731580262535409379031752562837870266878);
      _points[3] = DUNE_NUMBER_FROM_STRING(ct, 0.03350140453201314003596392857057248161039076925284236707232192332100661384915949406912586179668631268);
      _weight[3] = DUNE_NUMBER_FROM_STRING(ct, 0.03755419638025321986648583269569141758805153698961255144076732637991919601646605173770385110166578307);
      _points[4] = DUNE_NUMBER_FROM_STRING(ct, 0.9463027000602753835334059434247240449122575138455164975479188348405641933767500076215855613747667663);
      _weight[4] = DUNE_NUMBER_FROM_STRING(ct, 0.04756479973024044960192386331729517468694216465472046057613808264784485886335468527107776368357517029);
      _points[5] = DUNE_NUMBER_FROM_STRING(ct, 0.08098549968195518439245130773998218722766514758665499507829939127797017196531825081787486655370779525);
      _weight[5] = DUNE_NUMBER_FROM_STRING(ct, 0.0570676017448763765065377912843275486532773680936293313767427911822960640342192529908062097810219568);
      _points[6] = DUNE_NUMBER_FROM_STRING(ct, 0.8893428088195155396908716609464895647037628629053267599145054482375380565684526275834413083786664628);
      _weight[6] = DUNE_NUMBER_FROM_STRING(ct, 0.0659377312524758160931310789717671834328714396438875129556617113002714624562014461183427180565642943);
      _points[7] = DUNE_NUMBER_FROM_STRING(ct, 0.1468048676812137299236601652607991515599694654279756227180485513313137055587256285457460550167373564);
      _weight[7] = DUNE_NUMBER_FROM_STRING(ct, 0.07408976350173362696234102937128255487413805694748258883130522716337536508449919660779818071285032187);
      _points[8] = DUNE_NUMBER_FROM_STRING(ct, 0.8153897394434746419730742186120575147090134055115116514499564217599632405912766985454621567772925719);
      _weight[8] = DUNE_NUMBER_FROM_STRING(ct, 0.08142723865191631472436612291392116582120502240478308220490604700601857925394464346640601462002559893);
      _points[9] = DUNE_NUMBER_FROM_STRING(ct, 0.2280842706492579915346440986199429719415777248320505178336090146170398503780540680375636284189205414);
      _weight[9] = DUNE_NUMBER_FROM_STRING(ct, 0.08787443632122384283515522023795954919820258839409278348995177107324231289791167390445951868050365719);
      _points[10] = DUNE_NUMBER_FROM_STRING(ct, 0.727676452889264685436026727990331696616560168524648660087480949596545653110467939930929401900062142);
      _weight[10] = DUNE_NUMBER_FROM_STRING(ct, 0.0933575729197254540418975518996095015505528049870462214693890052089200962043726360505074761465047243);
      _points[11] = DUNE_NUMBER_FROM_STRING(ct, 0.3212717439889361744023403974130354496573046310098509725155244153528428571119004042632189220394104757);
      _weight[11] = DUNE_NUMBER_FROM_STRING(ct, 0.09781875152255805823677830878766431530678913099926441455902384806443677576510945244842491271878973857);
      _points[12] = DUNE_NUMBER_FROM_STRING(ct, 0.6300366883704039578844805941314332791605030321087179470245277359365694220786253960307680873297618342);
      _weight[12] = DUNE_NUMBER_FROM_STRING(ct, 0.1012075935153092149363516552173900812119855087993622184426068461562271888887057964368860900909478014);
      _points[13] = DUNE_NUMBER_FROM_STRING(ct, 0.4222946573075702578404089875181026958217938762273438789639540713852576268236287646690911714244228904);
      _weight[13] = DUNE_NUMBER_FROM_STRING(ct, 0.1034879801247768777395136608932904389620559700843852088264115370008206803210070375686989446492003508);
      _points[14] = DUNE_NUMBER_FROM_STRING(ct, 0.5267378613398730320537269448128829953760927123999441876600624391842836631760001928071840738368501546);
      _weight[14] = DUNE_NUMBER_FROM_STRING(ct, 0.1046343040738472907154448951529315089864212898285030821173039702063818079329353696896251413221774439);
      break;

    // order 29,30
    case 29 :
    case 30 :
      delivered_order = 30;
      _points.resize(16);
      _weight.resize(16);
      _points[0] = DUNE_NUMBER_FROM_STRING(ct, 1.0);
      _weight[0] = DUNE_NUMBER_FROM_STRING(ct, 0.003906249999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999);
      _points[1] = DUNE_NUMBER_FROM_STRING(ct, 0.005640688972511709757506466579444200966084106988131147967978335138218141575736364048915697203589669807);
      _weight[1] = DUNE_NUMBER_FROM_STRING(ct, 0.01444856950840716424575961150167959664768321485447374308786815965237503412236544031701308852051345129);
      _points[2] = DUNE_NUMBER_FROM_STRING(ct, 0.9857305452631742252659006330591292421044806623979681396367496904534811104340037194340828859918697398);
      _weight[2] = DUNE_NUMBER_FROM_STRING(ct, 0.02385111347384286023258796121105761215940712748373347733951249612012262824249209179131707229548989037);
      _points[3] = DUNE_NUMBER_FROM_STRING(ct, 0.02948229864794248663164098471800370918700961303166077760161299352098320969659464315137326588996550641);
      _weight[3] = DUNE_NUMBER_FROM_STRING(ct, 0.0330947543050682173723367824140129988109765140797056057089486775834419651379958009126595489547599592);
      _points[4] = DUNE_NUMBER_FROM_STRING(ct, 0.9527004099058333143380442075242620935055589938201492599119746533434704857023258451913238950513425185);
      _weight[4] = DUNE_NUMBER_FROM_STRING(ct, 0.04199264072248258900350601284912850274175530373827143449384382997141429563265696715138196207857827561);
      _points[5] = DUNE_NUMBER_FROM_STRING(ct, 0.07141295311515884005478390174673491912187290234227435678431701381106489005946195046185073236066258137);
      _weight[5] = DUNE_NUMBER_FROM_STRING(ct, 0.05049783981089195436218504141066416942898549189111011390903678585931367460678472505588559551870946612);
      _points[6] = DUNE_NUMBER_FROM_STRING(ct, 0.9022867006793780266312385046620090802654876855849468717160511280017608939616471254566098257665163887);
      _weight[6] = DUNE_NUMBER_FROM_STRING(ct, 0.05851017655193002851526082850951591652992414137147165348431935555746818051798695168136190985636111654);
      _points[7] = DUNE_NUMBER_FROM_STRING(ct, 0.1298310255535910559712545380942899123177230784713915452688927991403297243171614954096840860975794642);
      _weight[7] = DUNE_NUMBER_FROM_STRING(ct, 0.06596284996653406672246151063058849160747151189927306232812579118709032621265417948009199088684731203);
      _points[8] = DUNE_NUMBER_FROM_STRING(ct, 0.8364309606056101239755590856541831966144050516279921337789774230212989904851294862915904006631825436);
      _weight[8] = DUNE_NUMBER_FROM_STRING(ct, 0.07277777261010112143531914999678279515995507797472250238664229606324038347926030123455318661603847499);
      _points[9] = DUNE_NUMBER_FROM_STRING(ct, 0.2024927550501040475682199883202304426029145838857816183098197713593869872838287905637745131407654631);
      _weight[9] = DUNE_NUMBER_FROM_STRING(ct, 0.07889346090210101014257961013735628556027751692815831358281184285722704118272376932178081897027333611);
      _points[10] = DUNE_NUMBER_FROM_STRING(ct, 0.7576647390313427119970742777402853179406886187590936481745381257951925531912300645820920629808513944);
      _weight[10] = DUNE_NUMBER_FROM_STRING(ct, 0.08424819892496124501819105207923275942561890638984801295494652596992252939263197128583747944314191086);
      _points[11] = DUNE_NUMBER_FROM_STRING(ct, 0.2866060862575270599840260454843964124631835183282258747277172597764764143673373926548361027887495961);
      _weight[11] = DUNE_NUMBER_FROM_STRING(ct, 0.0887923963763697559481752588801875527471665581288797954926123946185668633418713757400843776997412092);
      _points[12] = DUNE_NUMBER_FROM_STRING(ct, 0.6690151950299598765386956390531395651245327979857527236420750144055549199665133052913040313820535801);
      _weight[12] = DUNE_NUMBER_FROM_STRING(ct, 0.09248089074433267978323239376056093439894591473240448144120626047437788156837996046854633882875631641);
      _points[13] = DUNE_NUMBER_FROM_STRING(ct, 0.3789386886469780381065290091427738514254527443330112900124820663975192124536679674713512968590311795);
      _weight[13] = DUNE_NUMBER_FROM_STRING(ct, 0.09527914712767754441311796762044089051519985174582994892126109353070075332923324694354921353229351015);
      _points[14] = DUNE_NUMBER_FROM_STRING(ct, 0.5738891609066858806714538552375264393339926267874317142496528265661645824810184689905478175189410146);
      _weight[14] = DUNE_NUMBER_FROM_STRING(ct, 0.09715954485578392167168809787195218347038559646446468604327985098793468776901949385191763241792479535);
      _points[15] = DUNE_NUMBER_FROM_STRING(ct, 0.4759423084632348605725889920158496815427420479142534143461931573336140130566014455167924185629638753);
      _weight[15] = DUNE_NUMBER_FROM_STRING(ct, 0.09810439411951584113359872112683931079624727231765316882558463956680375546394372476401978438057097569);
      break;

    default :
      DUNE_THROW(QuadratureOrderOutOfRange, "Quadrature rule " << p << " not supported!");
    }
  }


  template<typename ct>
  GaussRadauRightQuadratureRule<ct,1>::GaussRadauRightQuadratureRule (int p)
      : QuadratureRule<ct,1>(GeometryTypes::line)
  {
    //! set up quadrature of given order in d dimensions
    std::vector< FieldVector<ct,1> > _points;
    std::vector< ct > _weight;

    int deliveredOrder_;

    GaussRadauRightQuadratureInitHelper<ct>::init(p, _points, _weight, deliveredOrder_);

    this->delivered_order = deliveredOrder_;
    assert(_points.size() == _weight.size());
    for (size_t i = 0; i < _points.size(); i++)
      this->push_back(QuadraturePoint<ct,1>(_points[i], _weight[i]));
  }

} // namespace Dune

#endif // DUNE_GEOMETRY_QUADRATURE_GaussRadauRight_HH