function [ a, b, c, w ] = rule21 ( )

%*****************************************************************************80
%
%% rule21() returns the rule of precision 21.
%
%  Licensing:
%
%    This code is distributed under the MIT license.
%
%  Modified:
%
%    09 June 2023
%
%  Author:
%
%    John Burkardt
%
%  Reference:
%
%    Hong Xiao, Zydrunas Gimbutas,
%    A numerical algorithm for the construction of efficient
%    quadrature rules in two and higher dimensions, 
%    Computers and Mathematics with Applications,
%    Volume 59, 2010, pages 663-676.
%
%  Output:
%
%    real a(n), b(n), c(n): the barycentric coordinates of quadrature points.
%
%    real w(n): the quadrature weights.
%
  a = [ ...
          0.2989362353149825, ...
          0.4021275293700348, ...
          0.2989362353149825, ...
          0.2891894960785947, ...
          0.5055149445862437, ...
          0.2052955593351616, ...
          0.5055149445862437, ...
          0.2891894960785947, ...
          0.2052955593351615, ...
          0.4970078754686856, ...
          0.4970078754686856, ...
          0.0059842490626288, ...
          0.2378733825979940, ...
          0.7551948083705379, ...
          0.0069318090314683, ...
          0.7551948083705379, ...
          0.2378733825979941, ...
          0.0069318090314680, ...
          0.4036175865463851, ...
          0.4036175865463851, ...
          0.1927648269072297, ...
          0.3188653107948282, ...
          0.5573552887996790, ...
          0.1237794004054928, ...
          0.5573552887996790, ...
          0.3188653107948283, ...
          0.1237794004054926, ...
          0.2318736253704010, ...
          0.7291350120063786, ...
          0.0389913626232204, ...
          0.7291350120063788, ...
          0.2318736253704010, ...
          0.0389913626232202, ...
          0.1331671229413703, ...
          0.8572966295289191, ...
          0.0095362475297107, ...
          0.8572966295289192, ...
          0.1331671229413703, ...
          0.0095362475297104, ...
          0.3468079798099110, ...
          0.6001398284888722, ...
          0.0530521917012168, ...
          0.6001398284888722, ...
          0.3468079798099111, ...
          0.0530521917012167, ...
          0.1189885776227193, ...
          0.7620228447545612, ...
          0.1189885776227196, ...
          0.1902887180912784, ...
          0.6194225638174430, ...
          0.1902887180912786, ...
          0.2165996231899825, ...
          0.6829423567359030, ...
          0.1004580200741146, ...
          0.6829423567359030, ...
          0.2165996231899825, ...
          0.1004580200741143, ...
          0.4815978686532166, ...
          0.4815978686532166, ...
          0.0368042626935668, ...
          0.4498127917753624, ...
          0.4498127917753624, ...
          0.1003744164492752, ...
          0.1288298079620515, ...
          0.8217191264694078, ...
          0.0494510655685407, ...
          0.8217191264694079, ...
          0.1288298079620517, ...
          0.0494510655685403, ...
          0.0536275755461449, ...
          0.8927448489077100, ...
          0.0536275755461453, ...
          0.3609534080189222, ...
          0.6287919561081534, ...
          0.0102546358729245, ...
          0.6287919561081533, ...
          0.3609534080189222, ...
          0.0102546358729244, ...
          0.0107424564328283, ...
          0.9785150871343431, ...
          0.0107424564328287, ...
          0.0557195650723719, ...
          0.9339785312842042, ...
          0.0103019036434240, ...
          0.9339785312842040, ...
          0.0557195650723720, ...
          0.0103019036434236 ];

  b = [ ...
          0.2989362353149826, ...
          0.2989362353149826, ...
          0.4021275293700349, ...
          0.2052955593351616, ...
          0.2891894960785948, ...
          0.5055149445862438, ...
          0.2052955593351616, ...
          0.5055149445862438, ...
          0.2891894960785949, ...
          0.0059842490626289, ...
          0.4970078754686856, ...
          0.4970078754686857, ...
          0.0069318090314681, ...
          0.2378733825979940, ...
          0.7551948083705379, ...
          0.0069318090314681, ...
          0.7551948083705379, ...
          0.2378733825979943, ...
          0.1927648269072298, ...
          0.4036175865463852, ...
          0.4036175865463852, ...
          0.1237794004054928, ...
          0.3188653107948283, ...
          0.5573552887996791, ...
          0.1237794004054928, ...
          0.5573552887996791, ...
          0.3188653107948285, ...
          0.0389913626232203, ...
          0.2318736253704010, ...
          0.7291350120063789, ...
          0.0389913626232203, ...
          0.7291350120063789, ...
          0.2318736253704013, ...
          0.0095362475297106, ...
          0.1331671229413703, ...
          0.8572966295289193, ...
          0.0095362475297106, ...
          0.8572966295289193, ...
          0.1331671229413706, ...
          0.0530521917012168, ...
          0.3468079798099111, ...
          0.6001398284888723, ...
          0.0530521917012168, ...
          0.6001398284888722, ...
          0.3468079798099113, ...
          0.1189885776227196, ...
          0.1189885776227193, ...
          0.7620228447545613, ...
          0.1902887180912786, ...
          0.1902887180912785, ...
          0.6194225638174431, ...
          0.1004580200741145, ...
          0.2165996231899825, ...
          0.6829423567359031, ...
          0.1004580200741145, ...
          0.6829423567359032, ...
          0.2165996231899828, ...
          0.0368042626935668, ...
          0.4815978686532166, ...
          0.4815978686532168, ...
          0.1003744164492753, ...
          0.4498127917753625, ...
          0.4498127917753625, ...
          0.0494510655685406, ...
          0.1288298079620515, ...
          0.8217191264694079, ...
          0.0494510655685406, ...
          0.8217191264694079, ...
          0.1288298079620518, ...
          0.0536275755461451, ...
          0.0536275755461448, ...
          0.8927448489077101, ...
          0.0102546358729245, ...
          0.3609534080189222, ...
          0.6287919561081535, ...
          0.0102546358729245, ...
          0.6287919561081534, ...
          0.3609534080189224, ...
          0.0107424564328286, ...
          0.0107424564328283, ...
          0.9785150871343433, ...
          0.0103019036434239, ...
          0.0557195650723719, ...
          0.9339785312842044, ...
          0.0103019036434239, ...
          0.9339785312842044, ...
          0.0557195650723723 ];

  c = [ ...
          0.4021275293700349, ...
          0.2989362353149825, ...
          0.2989362353149826, ...
          0.5055149445862437, ...
          0.2052955593351615, ...
          0.2891894960785947, ...
          0.2891894960785947, ...
          0.2052955593351614, ...
          0.5055149445862436, ...
          0.4970078754686856, ...
          0.0059842490626288, ...
          0.4970078754686854, ...
          0.7551948083705379, ...
          0.0069318090314681, ...
          0.2378733825979938, ...
          0.2378733825979940, ...
          0.0069318090314680, ...
          0.7551948083705377, ...
          0.4036175865463850, ...
          0.1927648269072297, ...
          0.4036175865463850, ...
          0.5573552887996789, ...
          0.1237794004054927, ...
          0.3188653107948280, ...
          0.3188653107948282, ...
          0.1237794004054926, ...
          0.5573552887996789, ...
          0.7291350120063786, ...
          0.0389913626232204, ...
          0.2318736253704008, ...
          0.2318736253704009, ...
          0.0389913626232201, ...
          0.7291350120063785, ...
          0.8572966295289192, ...
          0.0095362475297107, ...
          0.1331671229413700, ...
          0.1331671229413702, ...
          0.0095362475297104, ...
          0.8572966295289191, ...
          0.6001398284888720, ...
          0.0530521917012167, ...
          0.3468079798099110, ...
          0.3468079798099110, ...
          0.0530521917012168, ...
          0.6001398284888719, ...
          0.7620228447545612, ...
          0.1189885776227195, ...
          0.1189885776227192, ...
          0.6194225638174429, ...
          0.1902887180912785, ...
          0.1902887180912783, ...
          0.6829423567359030, ...
          0.1004580200741145, ...
          0.2165996231899824, ...
          0.2165996231899825, ...
          0.1004580200741143, ...
          0.6829423567359030, ...
          0.4815978686532166, ...
          0.0368042626935668, ...
          0.4815978686532165, ...
          0.4498127917753624, ...
          0.1003744164492751, ...
          0.4498127917753622, ...
          0.8217191264694078, ...
          0.0494510655685407, ...
          0.1288298079620513, ...
          0.1288298079620515, ...
          0.0494510655685404, ...
          0.8217191264694079, ...
          0.8927448489077100, ...
          0.0536275755461452, ...
          0.0536275755461446, ...
          0.6287919561081533, ...
          0.0102546358729244, ...
          0.3609534080189220, ...
          0.3609534080189222, ...
          0.0102546358729244, ...
          0.6287919561081532, ...
          0.9785150871343432, ...
          0.0107424564328287, ...
          0.0107424564328280, ...
          0.9339785312842042, ...
          0.0103019036434239, ...
          0.0557195650723716, ...
          0.0557195650723720, ...
          0.0103019036434236, ...
          0.9339785312842040 ];

  w = [ ...
          0.0214511219291323, ...
          0.0214511219291323, ...
          0.0214511219291323, ...
          0.0174954161557631, ...
          0.0174954161557631, ...
          0.0174954161557631, ...
          0.0174954161557631, ...
          0.0174954161557631, ...
          0.0174954161557631, ...
          0.0044378296970659, ...
          0.0044378296970659, ...
          0.0044378296970659, ...
          0.0042061202881497, ...
          0.0042061202881497, ...
          0.0042061202881497, ...
          0.0042061202881497, ...
          0.0042061202881497, ...
          0.0042061202881497, ...
          0.0230007046532839, ...
          0.0230007046532839, ...
          0.0230007046532839, ...
          0.0184474848479328, ...
          0.0184474848479328, ...
          0.0184474848479328, ...
          0.0184474848479328, ...
          0.0184474848479328, ...
          0.0184474848479328, ...
          0.0104699041853248, ...
          0.0104699041853248, ...
          0.0104699041853248, ...
          0.0104699041853248, ...
          0.0104699041853248, ...
          0.0104699041853248, ...
          0.0044808131219015, ...
          0.0044808131219015, ...
          0.0044808131219015, ...
          0.0044808131219015, ...
          0.0044808131219015, ...
          0.0044808131219015, ...
          0.0145003059189710, ...
          0.0145003059189710, ...
          0.0145003059189710, ...
          0.0145003059189710, ...
          0.0145003059189710, ...
          0.0145003059189710, ...
          0.0136560324522302, ...
          0.0136560324522302, ...
          0.0136560324522302, ...
          0.0194552418607507, ...
          0.0194552418607507, ...
          0.0194552418607507, ...
          0.0159040367054280, ...
          0.0159040367054280, ...
          0.0159040367054280, ...
          0.0159040367054280, ...
          0.0159040367054280, ...
          0.0159040367054280, ...
          0.0122144101633844, ...
          0.0122144101633844, ...
          0.0122144101633844, ...
          0.0196144752278240, ...
          0.0196144752278240, ...
          0.0196144752278240, ...
          0.0098119718225504, ...
          0.0098119718225504, ...
          0.0098119718225504, ...
          0.0098119718225504, ...
          0.0098119718225504, ...
          0.0098119718225504, ...
          0.0071520851012837, ...
          0.0071520851012837, ...
          0.0071520851012837, ...
          0.0068398848579343, ...
          0.0068398848579343, ...
          0.0068398848579343, ...
          0.0068398848579343, ...
          0.0068398848579343, ...
          0.0068398848579343, ...
          0.0015086992723787, ...
          0.0015086992723787, ...
          0.0015086992723787, ...
          0.0032654285840441, ...
          0.0032654285840441, ...
          0.0032654285840441, ...
          0.0032654285840441, ...
          0.0032654285840441, ...
          0.0032654285840441 ];

  return
end
