00001 /* 00002 ------------------------------------------------------------------- 00003 00004 Copyright (C) 2006, 2007, 2008, Andrew W. Steiner 00005 00006 This file is part of O2scl. 00007 00008 O2scl is free software; you can redistribute it and/or modify 00009 it under the terms of the GNU General Public License as published by 00010 the Free Software Foundation; either version 3 of the License, or 00011 (at your option) any later version. 00012 00013 O2scl is distributed in the hope that it will be useful, 00014 but WITHOUT ANY WARRANTY; without even the implied warranty of 00015 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00016 GNU General Public License for more details. 00017 00018 You should have received a copy of the GNU General Public License 00019 along with O2scl. If not, see <http://www.gnu.org/licenses/>. 00020 00021 ------------------------------------------------------------------- 00022 */ 00023 #ifndef O2SCL_GSL_INTE_QAGS_H 00024 #define O2SCL_GSL_INTE_QAGS_H 00025 00026 #include <o2scl/inte.h> 00027 #include <o2scl/funct.h> 00028 #include <o2scl/gsl_inte_qag.h> 00029 00030 #ifndef DOXYGENP 00031 namespace o2scl { 00032 #endif 00033 00034 /** \brief Integrate a function with a singularity (GSL) 00035 */ 00036 template<class param_t, class func_t=funct<void *> > class gsl_inte_qags : 00037 public gsl_inte_singular<param_t,func_t> { 00038 00039 public: 00040 00041 /** \brief Integrate function \c func from \c a to \c b. 00042 */ 00043 virtual double integ(func_t &func, double a, double b, param_t &pa) { 00044 double res, err; 00045 integ_err(func,a,b,pa,res,err); 00046 this->interror=err; 00047 return res; 00048 } 00049 00050 /** \brief Integrate function \c func from \c a to \c b and place 00051 the result in \c res and the error in \c err 00052 */ 00053 virtual int integ_err(func_t &func, double a, double b, 00054 param_t &pa, double &res, double &err2) { 00055 00056 double fv1[11], fv2[11]; 00057 00058 int status=qags(func,11,o2scl_inte_qag_coeffs::qk21_xgk, 00059 o2scl_inte_qag_coeffs::qk21_wg, 00060 o2scl_inte_qag_coeffs::qk21_wgk, 00061 fv1,fv2,a,b,this->tolx,this->tolf,this->wkspace, 00062 &res,&err2,pa); 00063 00064 return status; 00065 00066 } 00067 00068 00069 }; 00070 00071 #ifndef DOXYGENP 00072 } 00073 #endif 00074 00075 #endif
Documentation generated with Doxygen and provided under the GNU Free Documentation License. See License Information for details.
Project hosting provided by
,
O2scl Sourceforge Project Page