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

%*****************************************************************************80
%
%% rule12() returns the rule of precision 12.
%
%  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.4882037509455415, ...
      0.0235924981089169, ...
      0.4882037509455415, ...
      0.1092578276593543, ...
      0.7814843446812914, ...
      0.1092578276593543, ...
      0.2714625070149261, ...
      0.4570749859701478, ...
      0.2714625070149261, ...
      0.0246463634363356, ...
      0.9507072731273288, ...
      0.0246463634363356, ...
      0.4401116486585931, ...
      0.1197767026828138, ...
      0.4401116486585931, ...
      0.2916556797383409, ...
      0.6853101639063919, ...
      0.0230341563552671, ...
      0.6853101639063919, ...
      0.0230341563552671, ...
      0.2916556797383409, ...
      0.1162960196779266, ...
      0.6282497516835561, ...
      0.2554542286385174, ...
      0.6282497516835561, ...
      0.2554542286385174, ...
      0.1162960196779266, ...
      0.8513377925102401, ...
      0.1272797172335894, ...
      0.0213824902561706, ...
      0.1272797172335894, ...
      0.0213824902561706, ...
      0.8513377925102401 ];

  y = [ ...
      0.0235924981089169, ...
      0.4882037509455415, ...
      0.4882037509455415, ...
      0.7814843446812914, ...
      0.1092578276593543, ...
      0.1092578276593543, ...
      0.4570749859701478, ...
      0.2714625070149261, ...
      0.2714625070149261, ...
      0.9507072731273288, ...
      0.0246463634363356, ...
      0.0246463634363356, ...
      0.1197767026828138, ...
      0.4401116486585931, ...
      0.4401116486585931, ...
      0.6853101639063919, ...
      0.2916556797383409, ...
      0.6853101639063919, ...
      0.0230341563552671, ...
      0.2916556797383409, ...
      0.0230341563552671, ...
      0.6282497516835561, ...
      0.1162960196779266, ...
      0.6282497516835561, ...
      0.2554542286385174, ...
      0.1162960196779266, ...
      0.2554542286385174, ...
      0.1272797172335894, ...
      0.8513377925102401, ...
      0.1272797172335894, ...
      0.0213824902561706, ...
      0.8513377925102401, ...
      0.0213824902561706 ];

  z = [ ...
      0.4882037509455416, ...
      0.4882037509455416, ...
      0.0235924981089170, ...
      0.1092578276593543, ...
      0.1092578276593544, ...
      0.7814843446812914, ...
      0.2714625070149260, ...
      0.2714625070149261, ...
      0.4570749859701478, ...
      0.0246463634363355, ...
      0.0246463634363356, ...
      0.9507072731273287, ...
      0.4401116486585931, ...
      0.4401116486585931, ...
      0.1197767026828138, ...
      0.0230341563552672, ...
      0.0230341563552672, ...
      0.2916556797383409, ...
      0.2916556797383410, ...
      0.6853101639063919, ...
      0.6853101639063919, ...
      0.2554542286385173, ...
      0.2554542286385173, ...
      0.1162960196779266, ...
      0.1162960196779265, ...
      0.6282497516835561, ...
      0.6282497516835561, ...
      0.0213824902561705, ...
      0.0213824902561706, ...
      0.8513377925102401, ...
      0.8513377925102401, ...
      0.1272797172335893, ...
      0.1272797172335893 ];

  w = [ ...
      0.0121334190407260, ...
      0.0121334190407260, ...
      0.0121334190407260, ...
      0.0142430260344388, ...
      0.0142430260344388, ...
      0.0142430260344388, ...
      0.0312706065979514, ...
      0.0312706065979514, ...
      0.0312706065979514, ...
      0.0039658212549868, ...
      0.0039658212549868, ...
      0.0039658212549868, ...
      0.0249591674640305, ...
      0.0249591674640305, ...
      0.0249591674640305, ...
      0.0108917925193038, ...
      0.0108917925193038, ...
      0.0108917925193038, ...
      0.0108917925193038, ...
      0.0108917925193038, ...
      0.0108917925193038, ...
      0.0216136818297071, ...
      0.0216136818297071, ...
      0.0216136818297071, ...
      0.0216136818297071, ...
      0.0216136818297071, ...
      0.0216136818297071, ...
      0.0075418387882557, ...
      0.0075418387882557, ...
      0.0075418387882557, ...
      0.0075418387882557, ...
      0.0075418387882557, ...
      0.0075418387882557 ];
%
%  The weights should sum to 1, not 1/2!
%
  w = w * 2.0;

  return
end
