Esempio n. 1
0
        Integrate(Func <double, double> f,
                  double a, double b,
                  OscillatoryTerm oscTerm,
                  double omega,
                  double epsabs, double epsrel, int limit,
                  bool debug,
                  out double result, out double abserr)
        {
            if (null == _workSpace || limit > _workSpace.limit)
            {
                _workSpace = new gsl_integration_workspace(limit);
            }
            if (null == _qawoTable)
            {
                _qawoTable = new gsl_integration_qawo_table(omega, b - a, oscTerm == OscillatoryTerm.Cosine ? gsl_integration_qawo_enum.GSL_INTEG_COSINE : gsl_integration_qawo_enum.GSL_INTEG_SINE, _defaultOscTableLength);
            }
            else
            {
                _qawoTable.set(omega, b - a, oscTerm == OscillatoryTerm.Cosine ? gsl_integration_qawo_enum.GSL_INTEG_COSINE : gsl_integration_qawo_enum.GSL_INTEG_SINE);
            }

            return(gsl_integration_qawo(f, a, epsabs, epsrel, limit, _workSpace, _qawoTable, out result, out abserr, debug));
        }