⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gsl_sum.h

📁 该文件为c++的数学函数库!是一个非常有用的编程工具.它含有各种数学函数,为科学计算、工程应用等程序编写提供方便!
💻 H
字号:
/* sum/gsl_sum.h *  * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman, Brian Gough *  * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. *  * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU * General Public License for more details. *  * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *//* Author:  G. Jungman */#ifndef __GSL_SUM_H__#define __GSL_SUM_H__#include <stdlib.h>#undef __BEGIN_DECLS#undef __END_DECLS#ifdef __cplusplus# define __BEGIN_DECLS extern "C" {# define __END_DECLS }#else# define __BEGIN_DECLS          /* empty */# define __END_DECLS            /* empty */#endif__BEGIN_DECLS/*  Workspace for Levin U Transform with error estimation, *    *   size        = number of terms the workspace can handle *   sum_plain   = simple sum of series *   q_num       = backward diagonal of numerator; length = size *   q_den       = backward diagonal of denominator; length = size *   dq_num      = table of numerator derivatives; length = size**2 *   dq_den      = table of denominator derivatives; length = size**2 *   dsum        = derivative of sum wrt term i; length = size */typedef struct{  size_t size;  size_t i;                     /* position in array */  size_t terms_used;            /* number of calls */  double sum_plain;  double *q_num;  double *q_den;  double *dq_num;  double *dq_den;  double *dsum;}gsl_sum_levin_u_workspace;gsl_sum_levin_u_workspace *gsl_sum_levin_u_alloc (size_t n);void gsl_sum_levin_u_free (gsl_sum_levin_u_workspace * w);/* Basic Levin-u acceleration method. * *   array       = array of series elements *   n           = size of array *   sum_accel   = result of summation acceleration *   err         = estimated error    * * See [Fessler et al., ACM TOMS 9, 346 (1983) and TOMS-602] */int gsl_sum_levin_u_accel (const double *array,                           const size_t n,                           gsl_sum_levin_u_workspace * w,                           double *sum_accel, double *abserr);/* Basic Levin-u acceleration method with constraints on the terms * used, * *   array       = array of series elements *   n           = size of array *   min_terms   = minimum number of terms to sum *   max_terms   = maximum number of terms to sum *   sum_accel   = result of summation acceleration *   err         = estimated error    * * See [Fessler et al., ACM TOMS 9, 346 (1983) and TOMS-602]  */int gsl_sum_levin_u_minmax (const double *array,                            const size_t n,                            const size_t min_terms,                            const size_t max_terms,                            gsl_sum_levin_u_workspace * w,                            double *sum_accel, double *abserr);/* Basic Levin-u step w/o reference to the array of terms. * We only need to specify the value of the current term * to execute the step. See TOMS-745. * * sum = t0 + ... + t_{n-1} + term;  term = t_{n} * *   term   = value of the series term to be added *   n      = position of term in series (starting from 0) *   sum_accel = result of summation acceleration *   sum_plain = simple sum of series */intgsl_sum_levin_u_step (const double term,                      const size_t n,                      const size_t nmax,                      gsl_sum_levin_u_workspace * w,                       double *sum_accel);/* The following functions perform the same calculation without   estimating the errors. They require O(N) storage instead of O(N^2).   This may be useful for summing many similar series where the size   of the error has already been estimated reliably and is not   expected to change.  */typedef struct{  size_t size;  size_t i;                     /* position in array */  size_t terms_used;            /* number of calls */  double sum_plain;  double *q_num;  double *q_den;  double *dsum;}gsl_sum_levin_utrunc_workspace;gsl_sum_levin_utrunc_workspace *gsl_sum_levin_utrunc_alloc (size_t n);void gsl_sum_levin_utrunc_free (gsl_sum_levin_utrunc_workspace * w);int gsl_sum_levin_utrunc_accel (const double *array,                                const size_t n,                                gsl_sum_levin_utrunc_workspace * w,                                double *sum_accel, double *abserr_trunc);int gsl_sum_levin_utrunc_minmax (const double *array,                                 const size_t n,                                 const size_t min_terms,                                 const size_t max_terms,                                 gsl_sum_levin_utrunc_workspace * w,                                 double *sum_accel, double *abserr_trunc);int gsl_sum_levin_utrunc_step (const double term,                               const size_t n,                               gsl_sum_levin_utrunc_workspace * w,                                double *sum_accel);__END_DECLS#endif /* __GSL_SUM_H__ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -