R Under development (unstable) (2022-09-04 r82801) -- "Unsuffered Consequences" Copyright (C) 2022 The R Foundation for Statistical Computing Platform: x86_64-pc-linux-gnu (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. Natural language support but running in an English locale R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > pkgname <- "Rdtq" > source(file.path(R.home("share"), "R", "examples-header.R")) > options(warn = 1) > library('Rdtq') > > base::assign(".oldSearch", base::search(), pos = 'CheckExEnv') > base::assign(".old_wd", base::getwd(), pos = 'CheckExEnv') > cleanEx() > nameEx("rdtq") > ### * rdtq > > flush(stderr()); flush(stdout()) > > ### Name: rdtq > ### Title: Density Tracking by Quadrature > ### Aliases: rdtq > > ### ** Examples > > # Example 1: > # Define the drift function f(x) = -x and diffusion function g(x) = 1 > # using C++ code: > require(Rcpp) Loading required package: Rcpp > sourceCpp(code = '#include + using namespace Rcpp; + double drift(double& x) + { + return(-x); + } + double diff(double& x) + { + return(1.0); + } + typedef double (*funcPtr)(double& x); + // [[Rcpp::export]] + XPtr driftXPtr() + { + return(XPtr(new funcPtr(&drift))); + } + // [[Rcpp::export]] + XPtr diffXPtr() + { + return(XPtr(new funcPtr(&diff))); + }') > # Solve for the PDF (at final time fT=1) of the SDE with drift f, > # diffusion g, and deterministic initial condition X(0) = 0. > # First we solve using the grid specified by k and bigm. > # Then we solve using the grid specified by a, b, and bigm. > # We then check that we get the same PDF either way. > k = 0.01 > M = 250 > test1 = rdtq(h=0.1,k,bigm=M,init=0,fT=1, + drift=driftXPtr(),diffusion=diffXPtr(),method="cpp") [1] "Calling dtq with grid specified via k and bigm." [1] "Using cpp method." Rdtq.cpp:63:29: runtime error: call to function drift(double&) through pointer to incorrect function type 'double (*)(const double &)' /tmp/RtmpCS1Mrc/sourceCpp-x86_64-pc-linux-gnu-1.0.9/sourcecpp_63446bcfb99c/file6344666a82d69.cpp:4: note: drift(double&) defined here #0 0x7f4d3b1de387 in rdtq(double, double, int, Rcpp::Vector<14, Rcpp::PreserveStorage>, double, SEXPREC*, SEXPREC*, double) /data/gannet/ripley/R/packages/tests-clang-SAN/Rdtq/src/Rdtq.cpp:63:29 #1 0x7f4d3b1bc750 in Rdtq_rdtq /data/gannet/ripley/R/packages/tests-clang-SAN/Rdtq/src/RcppExports.cpp:20:34 #2 0x6ebd80 in R_doDotCall /data/gannet/ripley/R/svn/R-devel/src/main/dotcode.c:627:17 #3 0x732e09 in do_dotcall /data/gannet/ripley/R/svn/R-devel/src/main/dotcode.c:1284:11 #4 0x8400e5 in bcEval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:7126:14 #5 0x82ab1e in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:748:8 #6 0x893013 in R_execClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c #7 0x88ecbf in Rf_applyClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:1844:16 #8 0x82b558 in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:871:12 #9 0x89f111 in do_set /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2981:8 #10 0x82af08 in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:823:12 #11 0x95be26 in Rf_ReplIteration /data/gannet/ripley/R/svn/R-devel/src/main/main.c:264:2 #12 0x95f370 in R_ReplConsole /data/gannet/ripley/R/svn/R-devel/src/main/main.c:316:11 #13 0x95f179 in run_Rmainloop /data/gannet/ripley/R/svn/R-devel/src/main/main.c:1194:5 #14 0x95f4b2 in Rf_mainloop /data/gannet/ripley/R/svn/R-devel/src/main/main.c:1201:5 #15 0x4f30ba in main /data/gannet/ripley/R/svn/R-devel/src/main/Rmain.c:29:5 #16 0x7f4d4d1c0b74 in __libc_start_main (/lib64/libc.so.6+0x27b74) (BuildId: 08df60634339b221bb854d4e10b7278cafde70c4) #17 0x43231d in _start (/data/gannet/ripley/R/R-clang-SAN/bin/exec/R+0x43231d) SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior Rdtq.cpp:63:29 in Rdtq.cpp:64:31: runtime error: call to function diff(double&) through pointer to incorrect function type 'double (*)(const double &)' /tmp/RtmpCS1Mrc/sourceCpp-x86_64-pc-linux-gnu-1.0.9/sourcecpp_63446bcfb99c/file6344666a82d69.cpp:8: note: diff(double&) defined here #0 0x7f4d3b1de3a6 in rdtq(double, double, int, Rcpp::Vector<14, Rcpp::PreserveStorage>, double, SEXPREC*, SEXPREC*, double) /data/gannet/ripley/R/packages/tests-clang-SAN/Rdtq/src/Rdtq.cpp:64:31 #1 0x7f4d3b1bc750 in Rdtq_rdtq /data/gannet/ripley/R/packages/tests-clang-SAN/Rdtq/src/RcppExports.cpp:20:34 #2 0x6ebd80 in R_doDotCall /data/gannet/ripley/R/svn/R-devel/src/main/dotcode.c:627:17 #3 0x732e09 in do_dotcall /data/gannet/ripley/R/svn/R-devel/src/main/dotcode.c:1284:11 #4 0x8400e5 in bcEval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:7126:14 #5 0x82ab1e in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:748:8 #6 0x893013 in R_execClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c #7 0x88ecbf in Rf_applyClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:1844:16 #8 0x82b558 in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:871:12 #9 0x89f111 in do_set /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2981:8 #10 0x82af08 in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:823:12 #11 0x95be26 in Rf_ReplIteration /data/gannet/ripley/R/svn/R-devel/src/main/main.c:264:2 #12 0x95f370 in R_ReplConsole /data/gannet/ripley/R/svn/R-devel/src/main/main.c:316:11 #13 0x95f179 in run_Rmainloop /data/gannet/ripley/R/svn/R-devel/src/main/main.c:1194:5 #14 0x95f4b2 in Rf_mainloop /data/gannet/ripley/R/svn/R-devel/src/main/main.c:1201:5 #15 0x4f30ba in main /data/gannet/ripley/R/svn/R-devel/src/main/Rmain.c:29:5 #16 0x7f4d4d1c0b74 in __libc_start_main (/lib64/libc.so.6+0x27b74) (BuildId: 08df60634339b221bb854d4e10b7278cafde70c4) #17 0x43231d in _start (/data/gannet/ripley/R/R-clang-SAN/bin/exec/R+0x43231d) SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior Rdtq.cpp:64:31 in Rdtq.cpp:81:29: runtime error: call to function drift(double&) through pointer to incorrect function type 'double (*)(const double &)' /tmp/RtmpCS1Mrc/sourceCpp-x86_64-pc-linux-gnu-1.0.9/sourcecpp_63446bcfb99c/file6344666a82d69.cpp:4: note: drift(double&) defined here #0 0x7f4d3b1de326 in rdtq(double, double, int, Rcpp::Vector<14, Rcpp::PreserveStorage>, double, SEXPREC*, SEXPREC*, double) /data/gannet/ripley/R/packages/tests-clang-SAN/Rdtq/src/Rdtq.cpp:81:29 #1 0x7f4d3b1bc750 in Rdtq_rdtq /data/gannet/ripley/R/packages/tests-clang-SAN/Rdtq/src/RcppExports.cpp:20:34 #2 0x6ebd80 in R_doDotCall /data/gannet/ripley/R/svn/R-devel/src/main/dotcode.c:627:17 #3 0x732e09 in do_dotcall /data/gannet/ripley/R/svn/R-devel/src/main/dotcode.c:1284:11 #4 0x8400e5 in bcEval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:7126:14 #5 0x82ab1e in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:748:8 #6 0x893013 in R_execClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c #7 0x88ecbf in Rf_applyClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:1844:16 #8 0x82b558 in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:871:12 #9 0x89f111 in do_set /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2981:8 #10 0x82af08 in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:823:12 #11 0x95be26 in Rf_ReplIteration /data/gannet/ripley/R/svn/R-devel/src/main/main.c:264:2 #12 0x95f370 in R_ReplConsole /data/gannet/ripley/R/svn/R-devel/src/main/main.c:316:11 #13 0x95f179 in run_Rmainloop /data/gannet/ripley/R/svn/R-devel/src/main/main.c:1194:5 #14 0x95f4b2 in Rf_mainloop /data/gannet/ripley/R/svn/R-devel/src/main/main.c:1201:5 #15 0x4f30ba in main /data/gannet/ripley/R/svn/R-devel/src/main/Rmain.c:29:5 #16 0x7f4d4d1c0b74 in __libc_start_main (/lib64/libc.so.6+0x27b74) (BuildId: 08df60634339b221bb854d4e10b7278cafde70c4) #17 0x43231d in _start (/data/gannet/ripley/R/R-clang-SAN/bin/exec/R+0x43231d) SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior Rdtq.cpp:81:29 in Rdtq.cpp:82:35: runtime error: call to function diff(double&) through pointer to incorrect function type 'double (*)(const double &)' /tmp/RtmpCS1Mrc/sourceCpp-x86_64-pc-linux-gnu-1.0.9/sourcecpp_63446bcfb99c/file6344666a82d69.cpp:8: note: diff(double&) defined here #0 0x7f4d3b1de346 in rdtq(double, double, int, Rcpp::Vector<14, Rcpp::PreserveStorage>, double, SEXPREC*, SEXPREC*, double) /data/gannet/ripley/R/packages/tests-clang-SAN/Rdtq/src/Rdtq.cpp:82:35 #1 0x7f4d3b1bc750 in Rdtq_rdtq /data/gannet/ripley/R/packages/tests-clang-SAN/Rdtq/src/RcppExports.cpp:20:34 #2 0x6ebd80 in R_doDotCall /data/gannet/ripley/R/svn/R-devel/src/main/dotcode.c:627:17 #3 0x732e09 in do_dotcall /data/gannet/ripley/R/svn/R-devel/src/main/dotcode.c:1284:11 #4 0x8400e5 in bcEval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:7126:14 #5 0x82ab1e in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:748:8 #6 0x893013 in R_execClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c #7 0x88ecbf in Rf_applyClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:1844:16 #8 0x82b558 in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:871:12 #9 0x89f111 in do_set /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2981:8 #10 0x82af08 in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:823:12 #11 0x95be26 in Rf_ReplIteration /data/gannet/ripley/R/svn/R-devel/src/main/main.c:264:2 #12 0x95f370 in R_ReplConsole /data/gannet/ripley/R/svn/R-devel/src/main/main.c:316:11 #13 0x95f179 in run_Rmainloop /data/gannet/ripley/R/svn/R-devel/src/main/main.c:1194:5 #14 0x95f4b2 in Rf_mainloop /data/gannet/ripley/R/svn/R-devel/src/main/main.c:1201:5 #15 0x4f30ba in main /data/gannet/ripley/R/svn/R-devel/src/main/Rmain.c:29:5 #16 0x7f4d4d1c0b74 in __libc_start_main (/lib64/libc.so.6+0x27b74) (BuildId: 08df60634339b221bb854d4e10b7278cafde70c4) #17 0x43231d in _start (/data/gannet/ripley/R/R-clang-SAN/bin/exec/R+0x43231d) SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior Rdtq.cpp:82:35 in > test2 = rdtq(h=0.1,a=-2.5,b=2.5,bigm=501,init=0,fT=1, + drift=driftXPtr(),diffusion=diffXPtr(),method="cpp") [1] "Calling dtq with grid specified via a, b, and bigm." [1] "Using cpp method." Rdtq.cpp:139:29: runtime error: call to function drift(double&) through pointer to incorrect function type 'double (*)(const double &)' /tmp/RtmpCS1Mrc/sourceCpp-x86_64-pc-linux-gnu-1.0.9/sourcecpp_63446bcfb99c/file6344666a82d69.cpp:4: note: drift(double&) defined here #0 0x7f4d3b1e0377 in rdtqgrid(double, double, double, unsigned int, Rcpp::Vector<14, Rcpp::PreserveStorage>, double, SEXPREC*, SEXPREC*, double) /data/gannet/ripley/R/packages/tests-clang-SAN/Rdtq/src/Rdtq.cpp:139:29 #1 0x7f4d3b1bce41 in Rdtq_rdtqgrid /data/gannet/ripley/R/packages/tests-clang-SAN/Rdtq/src/RcppExports.cpp:39:34 #2 0x6e5a0b in R_doDotCall /data/gannet/ripley/R/svn/R-devel/src/main/dotcode.c:632:17 #3 0x732e09 in do_dotcall /data/gannet/ripley/R/svn/R-devel/src/main/dotcode.c:1284:11 #4 0x8400e5 in bcEval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:7126:14 #5 0x82ab1e in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:748:8 #6 0x893013 in R_execClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c #7 0x88ecbf in Rf_applyClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:1844:16 #8 0x82b558 in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:871:12 #9 0x89f111 in do_set /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2981:8 #10 0x82af08 in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:823:12 #11 0x95be26 in Rf_ReplIteration /data/gannet/ripley/R/svn/R-devel/src/main/main.c:264:2 #12 0x95f370 in R_ReplConsole /data/gannet/ripley/R/svn/R-devel/src/main/main.c:316:11 #13 0x95f179 in run_Rmainloop /data/gannet/ripley/R/svn/R-devel/src/main/main.c:1194:5 #14 0x95f4b2 in Rf_mainloop /data/gannet/ripley/R/svn/R-devel/src/main/main.c:1201:5 #15 0x4f30ba in main /data/gannet/ripley/R/svn/R-devel/src/main/Rmain.c:29:5 #16 0x7f4d4d1c0b74 in __libc_start_main (/lib64/libc.so.6+0x27b74) (BuildId: 08df60634339b221bb854d4e10b7278cafde70c4) #17 0x43231d in _start (/data/gannet/ripley/R/R-clang-SAN/bin/exec/R+0x43231d) SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior Rdtq.cpp:139:29 in Rdtq.cpp:140:31: runtime error: call to function diff(double&) through pointer to incorrect function type 'double (*)(const double &)' /tmp/RtmpCS1Mrc/sourceCpp-x86_64-pc-linux-gnu-1.0.9/sourcecpp_63446bcfb99c/file6344666a82d69.cpp:8: note: diff(double&) defined here #0 0x7f4d3b1e0396 in rdtqgrid(double, double, double, unsigned int, Rcpp::Vector<14, Rcpp::PreserveStorage>, double, SEXPREC*, SEXPREC*, double) /data/gannet/ripley/R/packages/tests-clang-SAN/Rdtq/src/Rdtq.cpp:140:31 #1 0x7f4d3b1bce41 in Rdtq_rdtqgrid /data/gannet/ripley/R/packages/tests-clang-SAN/Rdtq/src/RcppExports.cpp:39:34 #2 0x6e5a0b in R_doDotCall /data/gannet/ripley/R/svn/R-devel/src/main/dotcode.c:632:17 #3 0x732e09 in do_dotcall /data/gannet/ripley/R/svn/R-devel/src/main/dotcode.c:1284:11 #4 0x8400e5 in bcEval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:7126:14 #5 0x82ab1e in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:748:8 #6 0x893013 in R_execClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c #7 0x88ecbf in Rf_applyClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:1844:16 #8 0x82b558 in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:871:12 #9 0x89f111 in do_set /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2981:8 #10 0x82af08 in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:823:12 #11 0x95be26 in Rf_ReplIteration /data/gannet/ripley/R/svn/R-devel/src/main/main.c:264:2 #12 0x95f370 in R_ReplConsole /data/gannet/ripley/R/svn/R-devel/src/main/main.c:316:11 #13 0x95f179 in run_Rmainloop /data/gannet/ripley/R/svn/R-devel/src/main/main.c:1194:5 #14 0x95f4b2 in Rf_mainloop /data/gannet/ripley/R/svn/R-devel/src/main/main.c:1201:5 #15 0x4f30ba in main /data/gannet/ripley/R/svn/R-devel/src/main/Rmain.c:29:5 #16 0x7f4d4d1c0b74 in __libc_start_main (/lib64/libc.so.6+0x27b74) (BuildId: 08df60634339b221bb854d4e10b7278cafde70c4) #17 0x43231d in _start (/data/gannet/ripley/R/R-clang-SAN/bin/exec/R+0x43231d) SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior Rdtq.cpp:140:31 in Rdtq.cpp:157:28: runtime error: call to function drift(double&) through pointer to incorrect function type 'double (*)(const double &)' /tmp/RtmpCS1Mrc/sourceCpp-x86_64-pc-linux-gnu-1.0.9/sourcecpp_63446bcfb99c/file6344666a82d69.cpp:4: note: drift(double&) defined here #0 0x7f4d3b1df381 in rdtqgrid(double, double, double, unsigned int, Rcpp::Vector<14, Rcpp::PreserveStorage>, double, SEXPREC*, SEXPREC*, double) /data/gannet/ripley/R/packages/tests-clang-SAN/Rdtq/src/Rdtq.cpp:157:28 #1 0x7f4d3b1bce41 in Rdtq_rdtqgrid /data/gannet/ripley/R/packages/tests-clang-SAN/Rdtq/src/RcppExports.cpp:39:34 #2 0x6e5a0b in R_doDotCall /data/gannet/ripley/R/svn/R-devel/src/main/dotcode.c:632:17 #3 0x732e09 in do_dotcall /data/gannet/ripley/R/svn/R-devel/src/main/dotcode.c:1284:11 #4 0x8400e5 in bcEval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:7126:14 #5 0x82ab1e in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:748:8 #6 0x893013 in R_execClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c #7 0x88ecbf in Rf_applyClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:1844:16 #8 0x82b558 in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:871:12 #9 0x89f111 in do_set /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2981:8 #10 0x82af08 in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:823:12 #11 0x95be26 in Rf_ReplIteration /data/gannet/ripley/R/svn/R-devel/src/main/main.c:264:2 #12 0x95f370 in R_ReplConsole /data/gannet/ripley/R/svn/R-devel/src/main/main.c:316:11 #13 0x95f179 in run_Rmainloop /data/gannet/ripley/R/svn/R-devel/src/main/main.c:1194:5 #14 0x95f4b2 in Rf_mainloop /data/gannet/ripley/R/svn/R-devel/src/main/main.c:1201:5 #15 0x4f30ba in main /data/gannet/ripley/R/svn/R-devel/src/main/Rmain.c:29:5 #16 0x7f4d4d1c0b74 in __libc_start_main (/lib64/libc.so.6+0x27b74) (BuildId: 08df60634339b221bb854d4e10b7278cafde70c4) #17 0x43231d in _start (/data/gannet/ripley/R/R-clang-SAN/bin/exec/R+0x43231d) SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior Rdtq.cpp:157:28 in Rdtq.cpp:158:30: runtime error: call to function diff(double&) through pointer to incorrect function type 'double (*)(const double &)' /tmp/RtmpCS1Mrc/sourceCpp-x86_64-pc-linux-gnu-1.0.9/sourcecpp_63446bcfb99c/file6344666a82d69.cpp:8: note: diff(double&) defined here #0 0x7f4d3b1df39d in rdtqgrid(double, double, double, unsigned int, Rcpp::Vector<14, Rcpp::PreserveStorage>, double, SEXPREC*, SEXPREC*, double) /data/gannet/ripley/R/packages/tests-clang-SAN/Rdtq/src/Rdtq.cpp:158:30 #1 0x7f4d3b1bce41 in Rdtq_rdtqgrid /data/gannet/ripley/R/packages/tests-clang-SAN/Rdtq/src/RcppExports.cpp:39:34 #2 0x6e5a0b in R_doDotCall /data/gannet/ripley/R/svn/R-devel/src/main/dotcode.c:632:17 #3 0x732e09 in do_dotcall /data/gannet/ripley/R/svn/R-devel/src/main/dotcode.c:1284:11 #4 0x8400e5 in bcEval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:7126:14 #5 0x82ab1e in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:748:8 #6 0x893013 in R_execClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c #7 0x88ecbf in Rf_applyClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:1844:16 #8 0x82b558 in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:871:12 #9 0x89f111 in do_set /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2981:8 #10 0x82af08 in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:823:12 #11 0x95be26 in Rf_ReplIteration /data/gannet/ripley/R/svn/R-devel/src/main/main.c:264:2 #12 0x95f370 in R_ReplConsole /data/gannet/ripley/R/svn/R-devel/src/main/main.c:316:11 #13 0x95f179 in run_Rmainloop /data/gannet/ripley/R/svn/R-devel/src/main/main.c:1194:5 #14 0x95f4b2 in Rf_mainloop /data/gannet/ripley/R/svn/R-devel/src/main/main.c:1201:5 #15 0x4f30ba in main /data/gannet/ripley/R/svn/R-devel/src/main/Rmain.c:29:5 #16 0x7f4d4d1c0b74 in __libc_start_main (/lib64/libc.so.6+0x27b74) (BuildId: 08df60634339b221bb854d4e10b7278cafde70c4) #17 0x43231d in _start (/data/gannet/ripley/R/R-clang-SAN/bin/exec/R+0x43231d) SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior Rdtq.cpp:158:30 in > print(k*sum(abs(test1$pdf-test2$pdf))) [1] 1.825016e-16 > > # Example 2: > # We again use the drift function f(x) = -x and diffusion function g(x) = 1. > # This time, we use the method="sparse" version of DTQ. > # This requires us to define the drift and diffusion functions in R: > mydrift = function(x) { -x } > mydiff = function(x) { rep(1,length(x)) } > test = rdtq(h=0.1,k=0.01,bigm=250,init=0,fT=1, + drift=mydrift,diffusion=mydiff,method="sparse") [1] "Calling dtq with grid specified via k and bigm." [1] "Using sparse method." ../MatrixOps/t_cholmod_sdmult.c:83:12: runtime error: applying non-zero offset 16032 to null pointer #0 0x7f4d3d37be89 in r_cholmod_sdmult /tmp/Rtmpn1YNvD/R.INSTALLe825d49942e3f/Matrix/src/CHOLMOD/Lib/../MatrixOps/t_cholmod_sdmult.c:83:12 #1 0x7f4d3d37b380 in cholmod_sdmult /tmp/Rtmpn1YNvD/R.INSTALLe825d49942e3f/Matrix/src/CHOLMOD/Lib/../MatrixOps/cholmod_sdmult.c:127:6 #2 0x7f4d3d0e1d92 in Csp_dense_products /tmp/Rtmpn1YNvD/R.INSTALLe825d49942e3f/Matrix/src/Csparse.c:712:5 #3 0x6e6682 in R_doDotCall /data/gannet/ripley/R/svn/R-devel/src/main/dotcode.c:607:17 #4 0x84986e in bcEval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:7682:21 #5 0x82ab1e in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:748:8 #6 0x893013 in R_execClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c #7 0x8972a9 in R_execMethod /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2094:11 #8 0x7f4d4aa36037 in R_dispatchGeneric /data/gannet/ripley/R/svn/R-devel/src/library/methods/src/methods_list_dispatch.c:1153:19 #9 0x9bffb6 in do_standardGeneric /data/gannet/ripley/R/svn/R-devel/src/main/objects.c:1285:13 #10 0x8445fc in bcEval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:7083:12 #11 0x82ab1e in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:748:8 #12 0x893013 in R_execClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c #13 0x88ecbf in Rf_applyClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:1844:16 #14 0x9c29eb in R_possible_dispatch /data/gannet/ripley/R/svn/R-devel/src/main/objects.c:1620:10 #15 0x5801e3 in do_matprod /data/gannet/ripley/R/svn/R-devel/src/main/array.c:1246:10 #16 0x8400e5 in bcEval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:7126:14 #17 0x82ab1e in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:748:8 #18 0x893013 in R_execClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c #19 0x88ecbf in Rf_applyClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:1844:16 #20 0x84f9af in bcEval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:7094:12 #21 0x82ab1e in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:748:8 #22 0x893013 in R_execClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c #23 0x88ecbf in Rf_applyClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:1844:16 #24 0x82b558 in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:871:12 #25 0x89f111 in do_set /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2981:8 #26 0x82af08 in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:823:12 #27 0x95be26 in Rf_ReplIteration /data/gannet/ripley/R/svn/R-devel/src/main/main.c:264:2 #28 0x95f370 in R_ReplConsole /data/gannet/ripley/R/svn/R-devel/src/main/main.c:316:11 #29 0x95f179 in run_Rmainloop /data/gannet/ripley/R/svn/R-devel/src/main/main.c:1194:5 #30 0x95f4b2 in Rf_mainloop /data/gannet/ripley/R/svn/R-devel/src/main/main.c:1201:5 #31 0x4f30ba in main /data/gannet/ripley/R/svn/R-devel/src/main/Rmain.c:29:5 #32 0x7f4d4d1c0b74 in __libc_start_main (/lib64/libc.so.6+0x27b74) (BuildId: 08df60634339b221bb854d4e10b7278cafde70c4) #33 0x43231d in _start (/data/gannet/ripley/R/R-clang-SAN/bin/exec/R+0x43231d) SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior ../MatrixOps/t_cholmod_sdmult.c:83:12 in > plot(test$xvec,test$pdf,type='l') > > > > cleanEx() detaching ‘package:Rcpp’ > nameEx("studydtqconv") > ### * studydtqconv > > flush(stderr()); flush(stdout()) > > ### Name: studydtqconv > ### Title: Study DTQ Convergence > ### Aliases: studydtqconv > > ### ** Examples > > # In this example, we will study the convergence of the DTQ method > # for the SDE with drift f(x) = x/2 + (1 + x^2)^(1/2) and > # diffusion g(x) = (1 + x^2)^(1/2). > > library(Rdtq) > library(Rcpp) > > # implement the drift and diffusion functions using C++ > sourceCpp(code = '#include + using namespace Rcpp; + double drift(double& x) { return(0.5*x + sqrt(x*x + 1.0)); } + double diff(double& x) { return(sqrt(x*x + 1.0)); } + typedef double (*funcPtr)(double& x); + // [[Rcpp::export]] + XPtr driftXPtr() { return(XPtr(new funcPtr(&drift))); } + // [[Rcpp::export]] + XPtr diffXPtr() { return(XPtr(new funcPtr(&diff))); }') > > # implement the drift and diffusion functions using R > mydrift = function(y) + { + return(0.5*y + sqrt(y^2 + 1)) + } > mydiff = function(y) + { + return(sqrt(y^2 + 1)) + } > > # implement the exact solution at time t, i.e., > # the analytical formula for the pdf p(x,t) > exactsol = function(xvec,t) + { + transx = asinh(xvec) - t + prefac = (1 + xvec^2)^(-1/2) + z = prefac*dnorm(x=transx) + return(z) + } > > # define the sequence of parameters that will be used to study convergence > hseq = c(0.5,0.2,0.1,0.05) > kseq = hseq^(0.55) > Mseq = ceiling(5*(-log(hseq))/kseq) > > # we will use the method="sparse" code for the three largest values in hseq, > # and then switch to the method="cpp" code for the three smallest values > firstpart = c(1:2) > errpart1 = studydtqconv(method="sparse",drift=mydrift,diffusion=mydiff,exact=exactsol, + hseq[firstpart],kseq[firstpart],Mseq[firstpart], + init=0,fT=1) [1] "Calling dtq with grid specified via k and bigm." [1] "Using sparse method." [1] "Calling dtq with grid specified via k and bigm." [1] "Using sparse method." > errpart2 = studydtqconv(method="cpp",drift=driftXPtr(),diffusion=diffXPtr(),exact=exactsol, + hseq[-firstpart],kseq[-firstpart],Mseq[-firstpart], + init=0,fT=1,thresh=1e-16) [1] "Calling dtq with grid specified via k and bigm." [1] "Using cpp method." [1] "Calling dtq with grid specified via k and bigm." [1] "Using cpp method." > > # now we will put everything together into one data frame > mydat = rbind(errpart1,errpart2) > > # we plot the convergence diagram, on a log-log scale, using ggplot2 > library(ggplot2) > library(scales) > myplot = ggplot(data=mydat, aes(x=x,y=y,group=norm,color=norm)) > myplot = myplot + theme_bw() + theme(plot.background = element_rect(fill='white')) > myxticks = sort(10^(round(log(hseq)/log(10)*10)/10)) > rawyticks = round(log(mydat$y)/log(10)*10)/10 > rawyticks = round(seq(from=min(rawyticks),to=max(rawyticks),length.out=length(myxticks))*1)/1 > myyticks = unique(10^rawyticks) > myplot = myplot + scale_x_log10(breaks = hseq) > myplot = myplot + theme(axis.text.x = element_text(angle=90,hjust=1)) > myplot = myplot + scale_y_log10(breaks = myyticks, + labels = trans_format("log10", math_format(10^.x))) > myplot = myplot + labs(x="h (temporal step size)", y="error") > myplot = myplot + geom_line() + geom_point() > > # save the plot to a pdf (portable document format) file > ggsave(filename="example.pdf", plot=myplot, width=5, height=4) > > > > ### *