R Under development (unstable) (2026-02-18 r89435 ucrt) -- "Unsuffered Consequences" Copyright (C) 2026 The R Foundation for Statistical Computing Platform: x86_64-w64-mingw32/x64 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. 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. > if(!require("BB"))stop("this test requires package BB.") Loading required package: BB > if(!require("setRNG"))stop("this test requires setRNG.") Loading required package: setRNG > > # Use a preset seed so test values are reproducable. > test.rng <- list(kind="Mersenne-Twister", normal.kind="Inversion", seed=1236) > old.seed <- setRNG(test.rng) > #iseed <- 1236 # this seed was used for tests conducted on March 25, 2008. > #set.seed(iseed) > > trigexp <- function(x) { + n <- length(x) + F <- rep(NA, n) + F[1] <- 3*x[1]^2 + 2*x[2] - 5 + sin(x[1] - x[2]) * sin(x[1] + x[2]) + tn1 <- 2:(n-1) + F[tn1] <- -x[tn1-1] * exp(x[tn1-1] - x[tn1]) + x[tn1] * ( 4 + 3*x[tn1]^2) + + 2 * x[tn1 + 1] + sin(x[tn1] - x[tn1 + 1]) * sin(x[tn1] + x[tn1 + 1]) - 8 + F[n] <- -x[n-1] * exp(x[n-1] - x[n]) + 4*x[n] - 3 + F + } > > p0 <- rnorm(50, sd=2) > ans1 <- dfsane(par=p0, fn=trigexp, method=1) Iteration: 0 ||F(x0)||: 114.3739 iteration: 10 ||F(xn)|| = 16.40765 iteration: 20 ||F(xn)|| = 0.3262413 iteration: 30 ||F(xn)|| = 6.407245e-05 > ans2 <- dfsane(par=p0, fn=trigexp, method=2) Iteration: 0 ||F(x0)||: 114.3739 iteration: 10 ||F(xn)|| = 14.67524 iteration: 20 ||F(xn)|| = 0.8598656 iteration: 30 ||F(xn)|| = 0.08099395 iteration: 40 ||F(xn)|| = 0.009453123 iteration: 50 ||F(xn)|| = 0.0007637905 iteration: 60 ||F(xn)|| = 5.64327e-06 > ans3 <- sane(par=p0, fn=trigexp, method=2) Iteration: 0 ||F(x0)||: 114.3739 iteration: 10 ||F(xn)|| = 17.26152 iteration: 20 ||F(xn)|| = 1.324045 iteration: 30 ||F(xn)|| = 0.1256207 iteration: 40 ||F(xn)|| = 0.02494378 iteration: 50 ||F(xn)|| = 0.007438894 iteration: 60 ||F(xn)|| = 0.00261932 iteration: 70 ||F(xn)|| = 0.001928832 iteration: 80 ||F(xn)|| = 0.0004144328 iteration: 90 ||F(xn)|| = 0.0001384958 iteration: 100 ||F(xn)|| = 1.460952e-05 iteration: 110 ||F(xn)|| = 2.329118e-06 iteration: 120 ||F(xn)|| = 1.100372e-06 > ans4 <- sane(par=p0, fn=trigexp, method=3) Iteration: 0 ||F(x0)||: 114.3739 iteration: 10 ||F(xn)|| = 3.847994 iteration: 20 ||F(xn)|| = 0.0005474832 > > c(ans1$resid, ans2$resid,ans3$resid, ans4$resid) [1] 4.630919e-08 2.251931e-08 9.031200e-08 4.287158e-08 > c(ans1$feval, ans2$feval,ans3$feval,ans4$feval) [1] 41 63 249 59 > > > nsim <- 50 > dfsane1.trigexp <- dfsane2.trigexp <- sane1.trigexp <- sane2.trigexp <- matrix(NA, nsim, 5) > for (i in 1:nsim) { + cat("Simulation" , i, "\n") + p0 <- rnorm(50) + t1 <- system.time(ans <- sane(par=p0, fn=trigexp, method=1, control=list(BFGS=TRUE, trace=F)))[1] + if (!is.null(ans))sane1.trigexp[i, ] <- c(ans$resid, ans$feval, ans$iter, ans$conv, t1) + t2 <- system.time(ans <- sane(par=p0, fn=trigexp, method=2, control=list(BFGS=TRUE, trace=F)))[1] + if (!is.null(ans))sane2.trigexp[i, ] <- c(ans$resid, ans$feval, ans$iter, ans$conv, t2) + t3 <- system.time(ans <- dfsane(par=p0, fn=trigexp, method=1, control=list(BFGS=TRUE, trace=F)))[1] + if (!is.null(ans))dfsane1.trigexp[i, ] <- c(ans$resid, ans$feval, ans$iter, ans$conv, t3) + t4 <- system.time(ans <- dfsane(par=p0, fn=trigexp, method=2, control=list(BFGS=TRUE, trace=F)))[1] + if (!is.null(ans)) dfsane2.trigexp[i, ] <- c(ans$resid, ans$feval, ans$iter, ans$conv, t4) + } Simulation 1 Simulation 2 Simulation 3 Simulation 4 Simulation 5 Simulation 6 Calling `L-BFGS-B' in `optim' Simulation 7 Simulation 8 Simulation 9 Simulation 10 Simulation 11 Simulation 12 Simulation 13 Simulation 14 Simulation 15 Simulation 16 Simulation 17 Simulation 18 Simulation 19 Simulation 20 Simulation 21 Simulation 22 Simulation 23 Simulation 24 Simulation 25 Simulation 26 Simulation 27 Simulation 28 Simulation 29 Simulation 30 Simulation 31 Simulation 32 Simulation 33 Simulation 34 Simulation 35 Simulation 36 Simulation 37 Simulation 38 Simulation 39 Simulation 40 Simulation 41 Simulation 42 Simulation 43 Simulation 44 Simulation 45 Simulation 46 Simulation 47 Simulation 48 Simulation 49 Simulation 50 Warning message: In sane(par = p0, fn = trigexp, method = 1, control = list(BFGS = TRUE, : Unsuccessful convergence. > > z <- apply(sane1.trigexp, 2, summary) > print(z) [,1] [,2] [,3] [,4] [,5] Min. 2.098074e-08 45.00 22.0 0.0 0.000 1st Qu. 4.222894e-08 51.00 25.0 0.0 0.000 Median 5.875738e-08 53.00 26.0 0.0 0.000 Mean 5.822881e-08 76.02 34.6 0.1 0.004 3rd Qu. 7.178740e-08 55.00 27.0 0.0 0.000 Max. 1.230045e-07 1210.00 463.0 5.0 0.060 > print(z[,1], digits=18) Min. 1st Qu. Median 2.09807351835747434e-08 4.22289393998594829e-08 5.87573781140228863e-08 Mean 3rd Qu. Max. 5.82288096561370791e-08 7.17873996527257309e-08 1.23004549521364436e-07 > z <- apply(sane2.trigexp, 2, summary) > print(z) [,1] [,2] [,3] [,4] [,5] Min. 1.373811e-08 45.00 22.00 0 0.000 1st Qu. 3.689446e-08 51.50 25.25 0 0.000 Median 5.171509e-08 53.00 26.00 0 0.000 Mean 5.759578e-08 91.06 45.02 0 0.002 3rd Qu. 8.456510e-08 55.00 27.00 0 0.000 Max. 9.950710e-08 301.00 150.00 0 0.020 > print(z[,1], digits=18) Min. 1st Qu. Median 1.37381089904388297e-08 3.68944598635170985e-08 5.17150927531454527e-08 Mean 3rd Qu. Max. 5.75957771721168104e-08 8.45650999387159440e-08 9.95070989222273082e-08 > z <- apply(dfsane1.trigexp, 2, summary) > print(z) [,1] [,2] [,3] [,4] [,5] Min. 2.092360e-08 23.00 22.00 0 0.0000 1st Qu. 4.109701e-08 26.00 25.00 0 0.0000 Median 5.578676e-08 27.00 26.00 0 0.0000 Mean 5.614983e-08 29.74 28.34 0 0.0014 3rd Qu. 7.048637e-08 28.00 27.00 0 0.0000 Max. 9.790307e-08 79.00 70.00 0 0.0200 > print(z[,1], digits=18) Min. 1st Qu. Median 2.09235988020218251e-08 4.10970093776468935e-08 5.57867639448368199e-08 Mean 3rd Qu. Max. 5.61498340169320198e-08 7.04863737048591054e-08 9.79030660995622125e-08 > z <- apply(dfsane2.trigexp, 2, summary) > print(z) [,1] [,2] [,3] [,4] [,5] Min. 1.373811e-08 23.00 22.00 0 0.000 1st Qu. 3.138502e-08 26.25 25.25 0 0.000 Median 4.781262e-08 27.00 26.00 0 0.000 Mean 5.216212e-08 32.98 31.98 0 0.002 3rd Qu. 6.690892e-08 28.00 27.00 0 0.000 Max. 9.950710e-08 70.00 69.00 0 0.020 > print(z[,1], digits=18) Min. 1st Qu. Median 1.37381089105846531e-08 3.13850216815464159e-08 4.78126238374416507e-08 Mean 3rd Qu. Max. 5.21621160656281439e-08 6.69089156895273988e-08 9.95070988312179856e-08 > > > proc.time() user system elapsed 4.84 0.15 4.95