function [ x, y, z, w ] = rule16 ( )

%*****************************************************************************80
%
%% rule16() returns the rule of precision 16.
%
%  Discussion:
%
%    The data is given for the following triangle:
%
%     (0,1) 
%       |   \ 
%       |    \ 
%       |     \ 
%       |      \ 
%     (0,0)----(1,0)
%
%  Licensing:
%
%    This code is distributed under the MIT license.
%
%  Modified:
%
%    23 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), z(n): the barycentric coordinates of quadrature points.
%
%    real w(n): the quadrature weights.
%
  x = [ ...
      0.3333333333333334, ...
      0.2459900704671417, ...
      0.5080198590657166, ...
      0.2459900704671417, ...
      0.4155848968854205, ...
      0.1688302062291590, ...
      0.4155848968854205, ...
      0.0853555665867003, ...
      0.8292888668265994, ...
      0.0853555665867003, ...
      0.1619186441912712, ...
      0.6761627116174576, ...
      0.1619186441912712, ...
      0.5000000000000000, ...
      0.0000000000000000, ...
      0.5000000000000000, ...
      0.4752807275459421, ...
      0.0494385449081158, ...
      0.4752807275459421, ...
      0.0547551749147031, ...
      0.7541700614447677, ...
      0.1910747636405291, ...
      0.7541700614447677, ...
      0.1910747636405291, ...
      0.0547551749147031, ...
      0.0232034277688137, ...
      0.9682443680309587, ...
      0.0085522042002276, ...
      0.9682443680309587, ...
      0.0085522042002276, ...
      0.0232034277688137, ...
      0.0189317782804059, ...
      0.6493036982454464, ...
      0.3317645234741476, ...
      0.6493036982454464, ...
      0.3317645234741476, ...
      0.0189317782804059, ...
      0.0190301297436974, ...
      0.9002737032704295, ...
      0.0806961669858730, ...
      0.9002737032704295, ...
      0.0806961669858730, ...
      0.0190301297436974, ...
      0.1026061902393981, ...
      0.5891488405642479, ...
      0.3082449691963540, ...
      0.5891488405642479, ...
      0.3082449691963540, ...
      0.1026061902393981, ...
      0.0059363500168222, ...
      0.8066218674993957, ...
      0.1874417824837821, ...
      0.8066218674993957, ...
      0.1874417824837821, ...
      0.0059363500168222 ];

  y = [ ...
      0.3333333333333334, ...
      0.5080198590657166, ...
      0.2459900704671417, ...
      0.2459900704671417, ...
      0.1688302062291590, ...
      0.4155848968854205, ...
      0.4155848968854205, ...
      0.8292888668265994, ...
      0.0853555665867003, ...
      0.0853555665867003, ...
      0.6761627116174576, ...
      0.1619186441912712, ...
      0.1619186441912712, ...
      0.0000000000000000, ...
      0.5000000000000000, ...
      0.5000000000000000, ...
      0.0494385449081158, ...
      0.4752807275459421, ...
      0.4752807275459421, ...
      0.7541700614447677, ...
      0.0547551749147031, ...
      0.7541700614447677, ...
      0.1910747636405291, ...
      0.0547551749147031, ...
      0.1910747636405291, ...
      0.9682443680309587, ...
      0.0232034277688137, ...
      0.9682443680309587, ...
      0.0085522042002276, ...
      0.0232034277688137, ...
      0.0085522042002276, ...
      0.6493036982454464, ...
      0.0189317782804059, ...
      0.6493036982454464, ...
      0.3317645234741476, ...
      0.0189317782804059, ...
      0.3317645234741476, ...
      0.9002737032704295, ...
      0.0190301297436974, ...
      0.9002737032704295, ...
      0.0806961669858730, ...
      0.0190301297436974, ...
      0.0806961669858730, ...
      0.5891488405642479, ...
      0.1026061902393981, ...
      0.5891488405642479, ...
      0.3082449691963540, ...
      0.1026061902393981, ...
      0.3082449691963540, ...
      0.8066218674993957, ...
      0.0059363500168222, ...
      0.8066218674993957, ...
      0.1874417824837821, ...
      0.0059363500168222, ...
      0.1874417824837821 ];

  z = [ ...
      0.3333333333333333, ...
      0.2459900704671417, ...
      0.2459900704671417, ...
      0.5080198590657166, ...
      0.4155848968854205, ...
      0.4155848968854206, ...
      0.1688302062291590, ...
      0.0853555665867003, ...
      0.0853555665867002, ...
      0.8292888668265994, ...
      0.1619186441912712, ...
      0.1619186441912712, ...
      0.6761627116174576, ...
      0.5000000000000000, ...
      0.5000000000000000, ...
      0.0000000000000000, ...
      0.4752807275459421, ...
      0.4752807275459421, ...
      0.0494385449081158, ...
      0.1910747636405292, ...
      0.1910747636405292, ...
      0.0547551749147033, ...
      0.0547551749147032, ...
      0.7541700614447679, ...
      0.7541700614447679, ...
      0.0085522042002275, ...
      0.0085522042002276, ...
      0.0232034277688137, ...
      0.0232034277688137, ...
      0.9682443680309587, ...
      0.9682443680309586, ...
      0.3317645234741476, ...
      0.3317645234741476, ...
      0.0189317782804059, ...
      0.0189317782804059, ...
      0.6493036982454464, ...
      0.6493036982454464, ...
      0.0806961669858730, ...
      0.0806961669858730, ...
      0.0190301297436974, ...
      0.0190301297436975, ...
      0.9002737032704295, ...
      0.9002737032704295, ...
      0.3082449691963540, ...
      0.3082449691963540, ...
      0.1026061902393981, ...
      0.1026061902393981, ...
      0.5891488405642479, ...
      0.5891488405642479, ...
      0.1874417824837821, ...
      0.1874417824837821, ...
      0.0059363500168222, ...
      0.0059363500168222, ...
      0.8066218674993957, ...
      0.8066218674993957 ];

  w = [ ...
      0.0226322830369094, ...
      0.0205464615718495, ...
      0.0205464615718495, ...
      0.0205464615718495, ...
      0.0203559166562127, ...
      0.0203559166562127, ...
      0.0203559166562127, ...
      0.0073908173451122, ...
      0.0073908173451122, ...
      0.0073908173451122, ...
      0.0147092048494940, ...
      0.0147092048494940, ...
      0.0147092048494940, ...
      0.0022092731560753, ...
      0.0022092731560753, ...
      0.0022092731560753, ...
      0.0129871666491386, ...
      0.0129871666491386, ...
      0.0129871666491386, ...
      0.0094691362322078, ...
      0.0094691362322078, ...
      0.0094691362322078, ...
      0.0094691362322078, ...
      0.0094691362322078, ...
      0.0094691362322078, ...
      0.0008272333574175, ...
      0.0008272333574175, ...
      0.0008272333574175, ...
      0.0008272333574175, ...
      0.0008272333574175, ...
      0.0008272333574175, ...
      0.0075043008921429, ...
      0.0075043008921429, ...
      0.0075043008921429, ...
      0.0075043008921429, ...
      0.0075043008921429, ...
      0.0075043008921429, ...
      0.0039737969666962, ...
      0.0039737969666962, ...
      0.0039737969666962, ...
      0.0039737969666962, ...
      0.0039737969666962, ...
      0.0039737969666962, ...
      0.0159918050396850, ...
      0.0159918050396850, ...
      0.0159918050396850, ...
      0.0159918050396850, ...
      0.0159918050396850, ...
      0.0159918050396850, ...
      0.0026955935584244, ...
      0.0026955935584244, ...
      0.0026955935584244, ...
      0.0026955935584244, ...
      0.0026955935584244, ...
      0.0026955935584244 ];
%
%  The weights should sum to 1, not 1/2!
%
  w = w * 2.0;

  return
end
