quad fails on low amplitude oscillatory functions

Blair Sutton blairuk at googlemail.com
Mon Oct 13 05:34:04 CDT 2008


Bug report for Octave 3.1.50 configured for i686-pc-msdosmsvc

Description:
-----------

When numerically integrating a low amplitude oscillatory function quad
outputs "ABNORMAL RETURN FROM DQAGP" to stderr and gives an incorrect
answer.

Repeat-By:
---------

Run the following code in the interpreter. The first quad fails whereas the
second is fine.

function y = quadtest(x, k)
y = cos(2*x) * exp(-k^2);
endfunction
quad(inline(sprintf('quadtest(x,%f)', 0.001)),-300,300)
quad(inline(sprintf('quadtest(x,%f)', 10)),-300,300)

Fix:
---

Since an integral is linear, one can scale the integrand to reasonable range
of the underlying cpu's floating point capabilities before using the
quadrature method. Then scale back the final result. Perhaps even have an
adaptive scaling method.



Configuration (please do not edit this section):
-----------------------------------------------

uname output:     Windows
configure opts:
Fortran compiler: fc-msvc
FFLAGS:           -O2
F2C:              @F2C@
F2CFLAGS:         @F2CFLAGS@
FLIBS:            -lhdf5 -lzlib -lf2c -lkernel32
CPPFLAGS:         -I.  -Ic:/Software/VC9Libs/include
INCFLAGS:         -I. -I. -I./liboctave -I./src -I./libcruft/misc
C compiler:       cc-msvc, version
CFLAGS:           -O2 -MD
CPICFLAG:
C++ compiler:     cc-msvc, version
CXXFLAGS:         -O2 -EHs -MD
CXXPICFLAG:
LD_CXX:           cc-msvc
LDFLAGS:
LIBFLAGS:         -L.
RLD_FLAG:
BLAS_LIBS:        -llapack -lblas
FFTW_LIBS:        -lfftw3 -lfftw3f
LIBS:             -lreadline  -lncurses -lblas -lhdf5 -lzlib  -lws2_32
-lkernel32
LEXLIB:
LIBGLOB:          -lglob
SED:              /bin/sed
DEFS:
-DPACKAGE_NAME="" -DPACKAGE_TARNAME="" -DPACKAGE_VERSION=""
-DPACKAGE_STRING="" -DPACKAGE_BUGREPORT="" -DOCTAVE_SOURCE=1 -D_GNU_SOURCE=1
-DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1
-DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1
-DHAVE_UNISTD_H=1 -DSEPCHAR=';' -DSEPCHAR_STR=";" -D__NO_MATH_INLINES=1
-DCXX_NEW_FRIEND_TEMPLATE_DECL=1 -DCXX_ISO_COMPLIANT_LIBRARY=1
-DCXX_ABI=unknown -DHAVE_QHULL=1 -DHAVE_PCRE=1 -DHAVE_ZLIB_H=1 -DHAVE_ZLIB=1
-DHAVE_HDF5_H=1 -DHAVE_HDF5=1 -DHAVE_H5GGET_NUM_OBJS=1 -D_HDF5USEDLL_=1
-DHAVE_FFTW3=1 -DHAVE_GLPK_H=1 -DHAVE_GLPK=1 -DHAVE_CURL_CURL_H=1
-DHAVE_CURL=1 -DHAVE_MAGICK=1 -DHAVE_WINDOWS_H=1 -DHAVE_GL_GL_H=1
-DHAVE_GL_GLU_H=1 -DHAVE_IEEE754_DATA_FORMAT=1 -DF77_FUNC(name,NAME)=name ##
_ -DF77_FUNC_(name,NAME)=name ## __ -DHAVE_BLAS=1 -DHAVE_SUITESPARSE_AMD_H=1
-DHAVE_AMD=1 -DHAVE_SUITESPARSE_UMFPACK_H=1 -DHAVE_UMFPACK=1
-DUMFPACK_SEPARATE_SPLIT=1 -DHAVE_SUITESPARSE_COLAMD_H=1 -DHAVE_COLAMD=1
-DHAVE_SUITESPARSE_CCOLAMD_H=1 -DHAVE_CCOLAMD=1
-DHAVE_SUITESPARSE_CHOLMOD_H=1 -DHAVE_CHOLMOD=1 -DHAVE_SUITESPARSE_CS_H=1
-DHAVE_CXSPARSE=1 -Dmode_t=int -Dpid_t=int -Duid_t=int -Dgid_t=int
-DHAVE_DEV_T=1 -DHAVE_INO_T=1 -DHAVE_LONG_LONG_INT=1
-DHAVE_UNSIGNED_LONG_LONG_INT=1 -DHAVE_SIG_ATOMIC_T=1 -DSIZEOF_SHORT=2
-DSIZEOF_INT=4 -DSIZEOF_LONG=4 -DSIZEOF_LONG_LONG=8 -DHAVE_ALLOCA=1
-DNPOS=std::string::npos -DHAVE_PLACEMENT_DELETE=1 -DSTDC_HEADERS=1
-DHAVE_ASSERT_H=1 -DHAVE_DIRECT_H=1 -DHAVE_FCNTL_H=1 -DHAVE_FLOAT_H=1
-DHAVE_INTTYPES_H=1 -DHAVE_LIMITS_H=1 -DHAVE_LOCALE_H=1 -DHAVE_MEMORY_H=1
-DHAVE_STDINT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_SYS_STAT_H=1
-DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_UTIME_H=1 -DHAVE_UNISTD_H=1
-DHAVE_VARARGS_H=1 -DHAVE_SSTREAM=1 -DHAVE_GLOB_H=1 -DHAVE_FNMATCH_H=1
-DHAVE_CONIO_H=1 -DHAVE_ATEXIT=1 -DHAVE_CHMOD=1 -DHAVE_DUP2=1
-DHAVE_EXECVP=1 -DHAVE_GETCWD=1 -DHAVE_GETPID=1 -DHAVE__KBHIT=1
-DHAVE_MEMMOVE=1 -DHAVE_MKDIR=1 -DHAVE_PUTENV=1 -DHAVE_RAISE=1
-DHAVE_RENAME=1 -DHAVE_RMDIR=1 -DHAVE_SETLOCALE=1 -DHAVE_SETVBUF=1
-DHAVE_STAT=1 -DHAVE_STRDUP=1 -DHAVE_STRERROR=1 -DHAVE_STRICMP=1
-DHAVE_STRNICMP=1 -DHAVE_TEMPNAM=1 -DHAVE_UMASK=1 -DHAVE_UNLINK=1
-DHAVE_UTIME=1 -DHAVE_VFPRINTF=1 -DHAVE_VSPRINTF=1 -DHAVE_VSNPRINTF=1
-DHAVE__CHMOD=1 -DHAVE__SNPRINTF=1 -DHAVE__UTIME32=1
-DOCTAVE_HAVE_BROKEN_STRPTIME=1 -D_USE_MATH_DEFINES=1
-DHAVE_LOADLIBRARY_API=1 -DENABLE_DYNAMIC_LINKING=1 -DHAVE__FINITE=1
-DHAVE__ISNAN=1 -DHAVE__COPYSIGN=1 -DHAVE_DECL_SIGNBIT=0 -DHAVE__HYPOTF=1
-DHAVE_STRUCT_STAT_ST_RDEV=1 -DHAVE_DECL_TZNAME=1 -DHAVE_TZNAME=1
-DCLOSEDIR_VOID=1 -DMKDIR_TAKES_ONE_ARG=1 -DUSE_READLINE=1 -DRETSIGTYPE=void
-DHAVE_DECL_SYS_SIGLIST=0 -DMUST_REINSTALL_SIGHANDLERS=1
-DRETSIGTYPE_IS_VOID=1


User-preferences (please do not edit this section):

  EDITOR = C:\Program Files\Octave\tools\wscite\SciTE.exe
  EXEC_PATH = C:\Program Files\Octave\msys\bin;C:\Program
Files\Octave\libexec\octave\3.1.50\site\exec\i686-pc-msdosmsvc;C:\Program
Files\Octave\libexec\octave\api-v33\site\exec\i686-pc-msdosmsvc;C:\Program
Files\Octave\libexec\octave\site\exec\i686-pc-msdosmsvc;C:\Program
Files\Octave\libexec\octave\3.1.50\exec\i686-pc-msdosmsvc;C:\Program
Files\Octave\bin;C:\Program
Files\Octave;C:\Perl\site\bin;C:\Perl\bin;C:\oracle\ora81\bin;C:\Program
Files\Oracle\jre\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Sybase\DLL;C:\Sybase\BIN;c:\Program
Files\Borland\Common Files\Bde;C:\Lotus\Notes;C:\Program Files\Microsoft SQL
Server\90\Tools\BINN;C:\Program Files\Microsoft SQL
Server\80\Tools\Binn\;C:\Program Files\Microsoft SQL
Server\90\DTS\Binn\;C:\Program Files\Microsoft SQL
Server\90\Tools\binn\;C:\Program Files\Microsoft SQL
Server\90\Tools\Binn\VSShell\Common7\IDE\;C:\Program Files\Microsoft Visual
Studio
8\Common7\IDE\PrivateAssemblies\;C:\WINDOWS\system32\WindowsPowerShell\v1.0;C:\Program
Files\Support Tools\;C:\PROGRA~1\NcFTP;C:\Program
Files\GNU\GnuPG\pub;C:\Program Files\TortoiseSVN\bin;C:\Program
Files\VisualSVN\bin;C:\Program Files\Microsoft SQL
Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL
Server\100\DTS\Binn\;C:\Program Files\Microsoft SQL
Server\100\Tools\Binn\VSShell\Common7\IDE\;C:\blp\api;C:\blp\api\dde;
  IMAGE_PATH = .;C:\Program Files\Octave\share\octave\3.1.50\imagelib
  PAGER = less
  PS1 = \s:\#>
  PS2 = >
  PS4 = +
  beep_on_error = 0
  completion_append_char =
  crash_dumps_octave_core = 1
  echo_executing_commands = 0
  fixed_point_format = 0
  gnuplot_binary = pgnuplot
# gnuplot_command_end = <no value or error in displaying it>
# gnuplot_command_plot = <no value or error in displaying it>
# gnuplot_command_replot = <no value or error in displaying it>
# gnuplot_command_splot = <no value or error in displaying it>
# gnuplot_command_title = <no value or error in displaying it>
# gnuplot_command_using = <no value or error in displaying it>
# gnuplot_command_with = <no value or error in displaying it>
  history_file = C:\Documents and Settings\bls\.octave_hist
  history_size = 1024
  ignore_function_time_stamp = system
  info_file = C:\Program Files\Octave\share\info\octave.info
  info_program = info
  makeinfo_program = makeinfo
  max_recursion_depth = 256
  output_max_field_width = 5
  output_precision = 5
  page_output_immediately = 0
  page_screen_output = 1
# print_answer_id_name = <no value or error in displaying it>
  print_empty_dimensions = 1
  save_precision = 16
  saving_history = 1
  sighup_dumps_octave_core = 1
  sigterm_dumps_octave_core = 1
  silent_functions = 0
  split_long_rows = 1
  string_fill_char =
  struct_levels_to_print = 2
  suppress_verbose_help_message = 0
-------------- next part --------------
An HTML attachment was scrubbed...
URL: https://www-old.cae.wisc.edu/pipermail/bug-octave/attachments/20081013/452e86d9/attachment.html 


More information about the Bug-octave mailing list