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_H 00024 #define O2SCL_GSL_INTE_H 00025 00026 #include <gsl/gsl_machine.h> 00027 00028 #ifndef DOXYGENP 00029 namespace o2scl { 00030 #endif 00031 00032 /** 00033 \brief GSL integration base 00034 00035 This base class does not perform any actual integration. 00036 00037 */ 00038 class gsl_inte { 00039 00040 public: 00041 00042 gsl_inte() { 00043 } 00044 00045 protected: 00046 00047 /** 00048 \brief Rescale errors appropriately 00049 */ 00050 double rescale_error(double err, const double result_abs, 00051 const double result_asc) { 00052 err = fabs(err); 00053 00054 if (result_asc != 0 && err != 0) { 00055 00056 double scale = pow((200 * err / result_asc), 1.5); 00057 00058 if (scale < 1) { 00059 err = result_asc * scale; 00060 } else { 00061 err = result_asc; 00062 } 00063 } 00064 00065 if (result_abs > GSL_DBL_MIN / (50 * GSL_DBL_EPSILON)) { 00066 00067 double min_err = 50 * GSL_DBL_EPSILON * result_abs; 00068 00069 if (min_err > err) { 00070 err = min_err; 00071 } 00072 } 00073 00074 return err; 00075 } 00076 00077 }; 00078 00079 00080 #ifndef DOXYGENP 00081 } 00082 #endif 00083 00084 #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