R Under development (unstable) (2026-02-10 r89394 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. > options(digits=12) > 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="Wichmann-Hill", normal.kind="Box-Muller", seed=c(979,1479,1542)) > old.seed <- setRNG(test.rng) > > > ########## > cat("BB test valley.f ...\n") BB test valley.f ... > > valley.f <- function(x) { + c1 <- 1.003344481605351 + c2 <- -3.344481605351171e-03 + n <- length(x) + f <- rep(NA, n) + j <- 3 * (1:(n/3)) + jm2 <- j - 2 + jm1 <- j - 1 + f[jm2] <- (c2 * x[jm2]^3 + c1 * x[jm2]) * exp(-(x[jm2]^2)/100) - 1 + f[jm1] <- 10 * (sin(x[jm2]) - x[jm1]) + f[j] <- 10 * (cos(x[jm2]) - x[j]) + sum(f*f) + } > > p0 <- rnorm(99, sd=1) > system.time(ans.spg <- spg(par=p0, fn=valley.f))[1] iter: 0 f-value: 9967.85170926 pgrad: 656.882748444 iter: 10 f-value: 70.8329753432 pgrad: 38.1635148017 iter: 20 f-value: 49.7999877152 pgrad: 2.31315716803 iter: 30 f-value: 37.1875050208 pgrad: 2.11890224477 iter: 40 f-value: 28.8169253808 pgrad: 15.1382670666 iter: 50 f-value: 16.6431333381 pgrad: 6.58130371534 iter: 60 f-value: 8.01853564457 pgrad: 1.08655232367 iter: 70 f-value: 5.39677149601 pgrad: 0.853708028714 iter: 80 f-value: 7.31492770889 pgrad: 22.820945782 iter: 90 f-value: 1.36200242689 pgrad: 0.437655365282 iter: 100 f-value: 1.02313867277 pgrad: 1.25082588287 iter: 110 f-value: 0.369576076528 pgrad: 1.99035298631 iter: 120 f-value: 0.259117056716 pgrad: 0.174611229364 iter: 130 f-value: 0.108703289048 pgrad: 1.5601972092 iter: 140 f-value: 0.0561214415482 pgrad: 0.101029451541 iter: 150 f-value: 0.0510989687577 pgrad: 0.0974422624533 iter: 160 f-value: 0.0435229175986 pgrad: 0.0710234288742 iter: 170 f-value: 0.0257392592413 pgrad: 0.749106419569 iter: 180 f-value: 0.00893481418644 pgrad: 0.031727185254 iter: 190 f-value: 0.000951427174107 pgrad: 0.202438952306 iter: 200 f-value: 0.000273549702574 pgrad: 0.0148989398954 iter: 210 f-value: 0.000186402219683 pgrad: 0.00544517631587 iter: 220 f-value: 0.00014730082458 pgrad: 0.00637902101611 iter: 230 f-value: 4.87734092491e-05 pgrad: 0.0471501294873 iter: 240 f-value: 6.93859080698e-06 pgrad: 0.000849939058233 user.self 0.53 > > z <- sum(ans.spg$par) > good <- 78.8339837886 > print(z, digits=16) [1] 78.83412268127022 > if(any(abs(good - z) > 1e-2)) stop("BB test valley.f b FAILED") > > > proc.time() user system elapsed 0.68 0.18 0.85