function [ x, y, w ] = rule21 ( )

%*****************************************************************************80
%
%% rule21() returns the quadrilateral rule of precision 21.
%
%  Discussion:
%
%    We suppose we are given a quadrilateral Quad with vertices
%    (0,0), (1,0), (1,1), (0,1),
%    We call a rule with n points, returning coordinates
%    x, y, and weights w.  Then the integral I of f(x,y,z) over Quad is 
%    approximated by Q as follows:
%
%    Q = area(Quad) * sum ( 1 <= i <= n ) w(i) * f(x(i),y(i)) 
%
%  Licensing:
%
%    This code is distributed under the MIT license.
%
%  Modified:
%
%    29 April 2023
%
%  Author:
%
%    John Burkardt
%
%  Reference:
%
%    Freddie Witherden, Peter Vincent,
%    On the identification of symmetric quadrature rules for finite element methods,
%    Computers and Mathematics with Applications,
%    Volume 69, pages 1232-1241, 2015.
%
%  Output:
%
%    real x(n), y(n): the coordinates of quadrature points.
%
%    real w(n): the quadrature weights, which sum to 1.
%
  x = [ ...
          0.5000000000000000, ...
          0.7366755371791120, ...
          0.5000000000000000, ...
          0.2633244628208880, ...
          0.5000000000000000, ...
          0.9176392148779342, ...
          0.5000000000000000, ...
          0.0823607851220658, ...
          0.5000000000000000, ...
          0.6286859503036145, ...
          0.6286859503036145, ...
          0.3713140496963855, ...
          0.3713140496963855, ...
          0.9816689160578117, ...
          0.9816689160578117, ...
          0.0183310839421883, ...
          0.0183310839421883, ...
          0.9312259626898258, ...
          0.9312259626898258, ...
          0.0687740373101742, ...
          0.0687740373101742, ...
          0.7484489812596729, ...
          0.7484489812596729, ...
          0.2515510187403271, ...
          0.2515510187403271, ...
          0.8521660875977003, ...
          0.8521660875977003, ...
          0.1478339124022997, ...
          0.1478339124022997, ...
          0.6209390927383510, ...
          0.8370731099776589, ...
          0.6209390927383510, ...
          0.1629268900223411, ...
          0.3790609072616490, ...
          0.8370731099776589, ...
          0.3790609072616490, ...
          0.1629268900223411, ...
          0.7400784831563976, ...
          0.9123236876354603, ...
          0.7400784831563976, ...
          0.0876763123645397, ...
          0.2599215168436024, ...
          0.9123236876354603, ...
          0.2599215168436024, ...
          0.0876763123645397, ...
          0.9661209679608770, ...
          0.6353495920508325, ...
          0.9661209679608770, ...
          0.3646504079491675, ...
          0.0338790320391230, ...
          0.6353495920508325, ...
          0.0338790320391230, ...
          0.3646504079491675, ...
          0.9674511629120053, ...
          0.8375197837185376, ...
          0.9674511629120053, ...
          0.1624802162814624, ...
          0.0325488370879947, ...
          0.8375197837185376, ...
          0.0325488370879947, ...
          0.1624802162814624, ...
          0.9952277337647621, ...
          0.7444581255885834, ...
          0.9952277337647621, ...
          0.2555418744114166, ...
          0.0047722662352379, ...
          0.7444581255885834, ...
          0.0047722662352379, ...
          0.2555418744114166, ...
          0.9155676229879507, ...
          0.9944803056932863, ...
          0.9155676229879507, ...
          0.0055196943067138, ...
          0.0844323770120493, ...
          0.9944803056932863, ...
          0.0844323770120493, ...
          0.0055196943067138, ...
          0.5457348004611456, ...
          0.9920085742447995, ...
          0.5457348004611456, ...
          0.0079914257552005, ...
          0.4542651995388544, ...
          0.9920085742447995, ...
          0.4542651995388544, ...
          0.0079914257552005 ];

  y = [ ...
          0.5000000000000000, ...
          0.5000000000000000, ...
          0.7366755371791120, ...
          0.5000000000000000, ...
          0.2633244628208880, ...
          0.5000000000000000, ...
          0.9176392148779342, ...
          0.5000000000000000, ...
          0.0823607851220658, ...
          0.6286859503036145, ...
          0.3713140496963855, ...
          0.6286859503036145, ...
          0.3713140496963855, ...
          0.9816689160578117, ...
          0.0183310839421883, ...
          0.9816689160578117, ...
          0.0183310839421883, ...
          0.9312259626898258, ...
          0.0687740373101742, ...
          0.9312259626898258, ...
          0.0687740373101742, ...
          0.7484489812596729, ...
          0.2515510187403271, ...
          0.7484489812596729, ...
          0.2515510187403271, ...
          0.8521660875977003, ...
          0.1478339124022997, ...
          0.8521660875977003, ...
          0.1478339124022997, ...
          0.8370731099776589, ...
          0.6209390927383510, ...
          0.1629268900223411, ...
          0.6209390927383510, ...
          0.8370731099776589, ...
          0.3790609072616490, ...
          0.1629268900223411, ...
          0.3790609072616490, ...
          0.9123236876354603, ...
          0.7400784831563976, ...
          0.0876763123645397, ...
          0.7400784831563976, ...
          0.9123236876354603, ...
          0.2599215168436024, ...
          0.0876763123645397, ...
          0.2599215168436024, ...
          0.6353495920508325, ...
          0.9661209679608770, ...
          0.3646504079491675, ...
          0.9661209679608770, ...
          0.6353495920508325, ...
          0.0338790320391230, ...
          0.3646504079491675, ...
          0.0338790320391230, ...
          0.8375197837185376, ...
          0.9674511629120053, ...
          0.1624802162814624, ...
          0.9674511629120053, ...
          0.8375197837185376, ...
          0.0325488370879947, ...
          0.1624802162814624, ...
          0.0325488370879947, ...
          0.7444581255885834, ...
          0.9952277337647621, ...
          0.2555418744114166, ...
          0.9952277337647621, ...
          0.7444581255885834, ...
          0.0047722662352379, ...
          0.2555418744114166, ...
          0.0047722662352379, ...
          0.9944803056932863, ...
          0.9155676229879507, ...
          0.0055196943067138, ...
          0.9155676229879507, ...
          0.9944803056932863, ...
          0.0844323770120493, ...
          0.0055196943067138, ...
          0.0844323770120493, ...
          0.9920085742447995, ...
          0.5457348004611456, ...
          0.0079914257552005, ...
          0.5457348004611456, ...
          0.9920085742447995, ...
          0.4542651995388544, ...
          0.0079914257552005, ...
          0.4542651995388544 ];

  w = [ ...
          0.0337982100890357, ...
          0.0266985396964851, ...
          0.0266985396964851, ...
          0.0266985396964851, ...
          0.0266985396964851, ...
          0.0165643020012361, ...
          0.0165643020012361, ...
          0.0165643020012361, ...
          0.0165643020012361, ...
          0.0299711209115851, ...
          0.0299711209115851, ...
          0.0299711209115851, ...
          0.0299711209115851, ...
          0.0020573653223050, ...
          0.0020573653223050, ...
          0.0020573653223050, ...
          0.0020573653223050, ...
          0.0076509102321939, ...
          0.0076509102321939, ...
          0.0076509102321939, ...
          0.0076509102321939, ...
          0.0241979479733988, ...
          0.0241979479733988, ...
          0.0241979479733988, ...
          0.0241979479733988, ...
          0.0153790853703291, ...
          0.0153790853703291, ...
          0.0153790853703291, ...
          0.0153790853703291, ...
          0.0216821248783021, ...
          0.0216821248783021, ...
          0.0216821248783021, ...
          0.0216821248783021, ...
          0.0216821248783021, ...
          0.0216821248783021, ...
          0.0216821248783021, ...
          0.0216821248783021, ...
          0.0139697793510318, ...
          0.0139697793510318, ...
          0.0139697793510318, ...
          0.0139697793510318, ...
          0.0139697793510318, ...
          0.0139697793510318, ...
          0.0139697793510318, ...
          0.0139697793510318, ...
          0.0092822068602285, ...
          0.0092822068602285, ...
          0.0092822068602285, ...
          0.0092822068602285, ...
          0.0092822068602285, ...
          0.0092822068602285, ...
          0.0092822068602285, ...
          0.0092822068602285, ...
          0.0071939002127551, ...
          0.0071939002127551, ...
          0.0071939002127551, ...
          0.0071939002127551, ...
          0.0071939002127551, ...
          0.0071939002127551, ...
          0.0071939002127551, ...
          0.0071939002127551, ...
          0.0028773801106233, ...
          0.0028773801106233, ...
          0.0028773801106233, ...
          0.0028773801106233, ...
          0.0028773801106233, ...
          0.0028773801106233, ...
          0.0028773801106233, ...
          0.0028773801106233, ...
          0.0018821205326004, ...
          0.0018821205326004, ...
          0.0018821205326004, ...
          0.0018821205326004, ...
          0.0018821205326004, ...
          0.0018821205326004, ...
          0.0018821205326004, ...
          0.0018821205326004, ...
          0.0026280760395628, ...
          0.0026280760395628, ...
          0.0026280760395628, ...
          0.0026280760395628, ...
          0.0026280760395628, ...
          0.0026280760395628, ...
          0.0026280760395628, ...
          0.0026280760395628 ];

  return
end
