[Rd] nlminb with constraints failing on some platforms
Kasper Kristensen
k@@kr @end|ng |rom dtu@dk
Mon Jan 28 09:56:39 CET 2019
I've noticed unstable behavior of nlminb on some Linux systems. The problem can be reproduced by compiling R-3.5.2 using gcc-8.2 and running the following snippet:
f <- function(x) sum( log(diff(x)^2+.01) + (x[1]-1)^2 )
opt <- nlminb(rep(0, 10), f, lower=-1, upper=3)
xhat <- rep(1, 10)
abs( opt$objective - f(xhat) ) < 1e-4 ## Must be TRUE
The example works perfectly when removing the bounds. However, when bounds are added the snippet returns 'FALSE'.
An older R version (3.4.4), compiled using the same gcc-8.2, did not have the problem. Between the two versions R has changed the flags to compile Fortran sources:
< SAFE_FFLAGS = -O2 -fomit-frame-pointer -ffloat-store
---
> SAFE_FFLAGS = -O2 -fomit-frame-pointer -msse2 -mfpmath=sse
Reverting to the old SAFE_FFLAGS 'solves' the problem.
> sessionInfo()
R version 3.5.2 (2018-12-20)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Scientific Linux release 6.4 (Carbon)
Matrix products: default
BLAS/LAPACK: /zdata/groups/nfsopt/intel/2018update3/compilers_and_libraries_2018.3.222/linux/mkl/lib/intel64_lin/libmkl_gf_lp64.so
locale:
[1] C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] compiler_3.5.2
[[alternative HTML version deleted]]
More information about the R-devel
mailing list