@c Copyright (C) 1996-2022 The Octave Project Developers
@c
@c This file is part of Octave.
@c
@c Octave is free software: you can redistribute it and/or modify it
@c under the terms of the GNU General Public License as published by
@c the Free Software Foundation, either version 3 of the License, or
@c (at your option) any later version.
@c
@c Octave is distributed in the hope that it will be useful, but
@c WITHOUT ANY WARRANTY; without even the implied warranty of
@c MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
@c GNU General Public License for more details.
@c
@c You should have received a copy of the GNU General Public License
@c along with Octave; see the file COPYING.  If not, see
@c <https://www.gnu.org/licenses/>.

@node Quadrature, Ordinary Differential Equations, Optimization, Top
@chapter Quadrature
@cindex quadrature
@cindex numerical integration
@cindex integration

@deftypefn  {} {} Quad (integrand_fcn @var{fcn})
@deftypefnx  {} {} Quad (integrand_fcn @var{fcn}, double @var{abs}, double @var{rel})
@end deftypefn

@deftypefn {} {virtual double} integrate (void)
@deftypefnx {} {virtual double} integrate (int &@var{ier})
@deftypefnx {} {virtual double} integrate (int &@var{ier}, int &@var{neval})
@deftypefnx {} {virtual double} integrate (int &@var{ier}, int &@var{neval}, double &@var{abserr}) = 0
@end deftypefn

@deftypefn {} {} Quad_options (void)
@deftypefnx {} {} Quad_options (const Quad_options &@var{opt})
@end deftypefn

@deftypefn {} Quad_options& {operator =} (const Quad_options &@var{opt})
@end deftypefn

@deftypefn {} void init (void)
@end deftypefn

@deftypefn {} void copy (const Quad_options &@var{opt})
@end deftypefn

@deftypefn {} void set_default_options (void)
@end deftypefn

@deftypefn {} void set_absolute_tolerance (double @var{val})
@end deftypefn

@deftypefn {} void set_relative_tolerance (double @var{val})
@end deftypefn

@deftypefn {} double absolute_tolerance (void)
@deftypefnx {} double relative_tolerance (void)
@end deftypefn

@deftypefn  {} {} DefQuad (integrand_fcn @var{fcn})
@deftypefnx  {} {} DefQuad (integrand_fcn @var{fcn}, double @var{ll}, double @var{ul})
@deftypefnx  {} {} DefQuad (integrand_fcn @var{fcn}, double @var{ll}, double @var{ul}, double @var{abs}, double @var{rel})
@deftypefnx  {} {} DefQuad (integrand_fcn @var{fcn}, double @var{ll}, double @var{ul}, const ColumnVector &@var{sing})
@deftypefnx  {} {} DefQuad (integrand_fcn @var{fcn}, const ColumnVector &@var{sing}, double @var{abs}, double @var{rel})
@deftypefnx  {} {} DefQuad (integrand_fcn @var{fcn}, const ColumnVector &@var{sing})
@deftypefnx  {} {} DefQuad (integrand_fcn @var{fcn}, double @var{ll}, double @var{ul}, const ColumnVector &@var{sing}, double @var{abs}, double @var{rel})
@end deftypefn

@deftypefn  {} {} IndefQuad (integrand_fcn @var{fcn})
@deftypefnx  {} {} IndefQuad (integrand_fcn @var{fcn}, double @var{b}, IntegralType @var{t})
@deftypefnx  {} {} IndefQuad (integrand_fcn @var{fcn}, double @var{b}, IntegralType @var{t}, double @var{abs}, double @var{rel})
@deftypefnx  {} {} IndefQuad (integrand_fcn @var{fcn}, double @var{abs}, double @var{rel})
@end deftypefn

@menu
* Collocation Weights::
@end menu

@node Collocation Weights,  , Quadrature, Quadrature
@section Collocation Weights
@cindex orthogonal collocation
@cindex collocation weights

@deftypefn  {} {} CollocWt (void)
@deftypefnx  {} {} CollocWt (int @var{n}, int @var{inc_l}, int @var{inc_r})
@deftypefnx  {} {} CollocWt (int @var{n}, int @var{inc_l}, int @var{inc_r}, double @var{l}, double @var{r})
@deftypefnx  {} {} CollocWt (int @var{n}, double @var{a}, double @var{b}, int @var{inc_l}, int @var{inc_r})
@deftypefnx  {} {} CollocWt (int @var{n}, int @var{inc_l}, int @var{inc_r}, double @var{l}, double @var{r})
@deftypefnx  {} {} CollocWt (const CollocWt&)
@end deftypefn

@deftypefn {} CollocWt& {operator =} (const CollocWt&)
@end deftypefn

@deftypefn {} CollocWt& resize (int @var{ncol})
@end deftypefn

@deftypefn {} CollocWt& add_left (void)
@deftypefnx {} CollocWt& add_right (void)
@end deftypefn

@deftypefn {} CollocWt& delete_left (void)
@deftypefnx {} CollocWt& delete_right (void)
@end deftypefn

@deftypefn {} CollocWt& set_left (double @var{val})
@deftypefnx {} CollocWt& set_right (double @var{val})
@end deftypefn

@deftypefn {} CollocWt& set_alpha (double @var{val})
@deftypefnx {} CollocWt& set_beta (double @var{val})
@end deftypefn

@deftypefn {} int ncol (void) const
@end deftypefn

@deftypefn {} int left_included (void) const
@deftypefnx {} int right_included (void) const
@end deftypefn

@deftypefn {} double left (void) const
@deftypefnx {} double right (void) const
@deftypefnx {} double width (void) const
@end deftypefn

@deftypefn {} double alpha (void) const
@deftypefnx {} double beta (void) const
@end deftypefn

@deftypefn {} ColumnVector roots (void)
@deftypefnx {} ColumnVector quad (void)
@deftypefnx {} ColumnVector quad_weights (void)
@end deftypefn

@deftypefn {} Matrix first (void)
@deftypefnx {} Matrix second (void)
@end deftypefn

@deftypefn {} {ostream&} {operator <<} (ostream &@var{os}, const CollocWt &@var{c})
@end deftypefn
