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 class gsl_inte { 00038 00039 public: 00040 00041 gsl_inte() { 00042 } 00043 00044 protected: 00045 00046 /** 00047 \brief Rescale errors appropriately 00048 */ 00049 double rescale_error(double err, const double result_abs, 00050 const double result_asc) { 00051 err = fabs(err); 00052 00053 if (result_asc != 0 && err != 0) { 00054 00055 double scale = pow((200 * err / result_asc), 1.5); 00056 00057 if (scale < 1) { 00058 err = result_asc * scale; 00059 } else { 00060 err = result_asc; 00061 } 00062 } 00063 00064 if (result_abs > GSL_DBL_MIN / (50 * GSL_DBL_EPSILON)) { 00065 00066 double min_err = 50 * GSL_DBL_EPSILON * result_abs; 00067 00068 if (min_err > err) { 00069 err = min_err; 00070 } 00071 } 00072 00073 return err; 00074 } 00075 00076 }; 00077 00078 00079 #ifndef DOXYGENP 00080 } 00081 #endif 00082 00083 #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