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

%*****************************************************************************80
%
%% rule15() returns the quadrilateral rule of precision 15.
%
%  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.8990494939485035, ...
          0.5000000000000000, ...
          0.1009505060514965, ...
          0.5000000000000000, ...
          0.6519265131992299, ...
          0.5000000000000000, ...
          0.3480734868007701, ...
          0.5000000000000000, ...
          0.9412111350534427, ...
          0.9412111350534427, ...
          0.0587888649465573, ...
          0.0587888649465573, ...
          0.9888948997699514, ...
          0.9888948997699514, ...
          0.0111051002300486, ...
          0.0111051002300486, ...
          0.9043560679097518, ...
          0.7836067866982954, ...
          0.9043560679097518, ...
          0.2163932133017046, ...
          0.0956439320902482, ...
          0.7836067866982954, ...
          0.0956439320902482, ...
          0.2163932133017046, ...
          0.6523273995185263, ...
          0.7893680970179033, ...
          0.6523273995185263, ...
          0.2106319029820967, ...
          0.3476726004814737, ...
          0.7893680970179033, ...
          0.3476726004814737, ...
          0.2106319029820967, ...
          0.9902524218622659, ...
          0.8487318159954835, ...
          0.9902524218622659, ...
          0.1512681840045165, ...
          0.0097475781377340, ...
          0.8487318159954835, ...
          0.0097475781377340, ...
          0.1512681840045165, ...
          0.6324220779361581, ...
          0.9778712599047559, ...
          0.6324220779361581, ...
          0.0221287400952441, ...
          0.3675779220638419, ...
          0.9778712599047559, ...
          0.3675779220638419, ...
          0.0221287400952441 ];

  y = [ ...
          0.5000000000000000, ...
          0.8990494939485035, ...
          0.5000000000000000, ...
          0.1009505060514965, ...
          0.5000000000000000, ...
          0.6519265131992299, ...
          0.5000000000000000, ...
          0.3480734868007701, ...
          0.9412111350534427, ...
          0.0587888649465573, ...
          0.9412111350534427, ...
          0.0587888649465573, ...
          0.9888948997699514, ...
          0.0111051002300486, ...
          0.9888948997699514, ...
          0.0111051002300486, ...
          0.7836067866982954, ...
          0.9043560679097518, ...
          0.2163932133017046, ...
          0.9043560679097518, ...
          0.7836067866982954, ...
          0.0956439320902482, ...
          0.2163932133017046, ...
          0.0956439320902482, ...
          0.7893680970179033, ...
          0.6523273995185263, ...
          0.2106319029820967, ...
          0.6523273995185263, ...
          0.7893680970179033, ...
          0.3476726004814737, ...
          0.2106319029820967, ...
          0.3476726004814737, ...
          0.8487318159954835, ...
          0.9902524218622659, ...
          0.1512681840045165, ...
          0.9902524218622659, ...
          0.8487318159954835, ...
          0.0097475781377340, ...
          0.1512681840045165, ...
          0.0097475781377340, ...
          0.9778712599047559, ...
          0.6324220779361581, ...
          0.0221287400952441, ...
          0.6324220779361581, ...
          0.9778712599047559, ...
          0.3675779220638419, ...
          0.0221287400952441, ...
          0.3675779220638419 ];

  w = [ ...
          0.0287332318158813, ...
          0.0287332318158813, ...
          0.0287332318158813, ...
          0.0287332318158813, ...
          0.0454214397418180, ...
          0.0454214397418180, ...
          0.0454214397418180, ...
          0.0454214397418180, ...
          0.0103096209471915, ...
          0.0103096209471915, ...
          0.0103096209471915, ...
          0.0103096209471915, ...
          0.0014834366214598, ...
          0.0014834366214598, ...
          0.0014834366214598, ...
          0.0014834366214598, ...
          0.0252872858693581, ...
          0.0252872858693581, ...
          0.0252872858693581, ...
          0.0252872858693581, ...
          0.0252872858693581, ...
          0.0252872858693581, ...
          0.0252872858693581, ...
          0.0252872858693581, ...
          0.0369591804082203, ...
          0.0369591804082203, ...
          0.0369591804082203, ...
          0.0369591804082203, ...
          0.0369591804082203, ...
          0.0369591804082203, ...
          0.0369591804082203, ...
          0.0369591804082203, ...
          0.0058182985361683, ...
          0.0058182985361683, ...
          0.0058182985361683, ...
          0.0058182985361683, ...
          0.0058182985361683, ...
          0.0058182985361683, ...
          0.0058182985361683, ...
          0.0058182985361683, ...
          0.0139613706230780, ...
          0.0139613706230780, ...
          0.0139613706230780, ...
          0.0139613706230780, ...
          0.0139613706230780, ...
          0.0139613706230780, ...
          0.0139613706230780, ...
          0.0139613706230780 ];

  return
end
