3 ms·
I've noticed that R often defaults to much higher tolerances than Julia, even when it's wrappers to the same C library, like cubature. R cubature[0]: 1e-5 Cub
by celrod 4y ago
I've noticed that R often defaults to much higher tolerances than Julia, even when it's wrappers to the same C library, like cubature.
R cubature[0]: 1e-5
Cubature.jl [1]: 1e-8
The difference for NLopt in R vs Julia is smaller.
`NLopt.DEFAULT_OPTIONS`[2] in Julia shows `1e-7` for `ftol_rel`, `xtol_rel`, and `constrtol_abs`, while in R `xtol_rel` is `1e-6` and the others are `0.0`[3].
So, the options at least aren't the same with nlopt.
Anyway, I always recommend confirming that you're comparing the same settings.
And of course, in Julia, you'll probably want to `JET.report_opt` your function and fix and glaring performance issues.
NLopt seems like it may be a bit of an exception, but I noticed this is pretty common pattern elsewhere, uniroot[4] being another example, with eps()^(1/4) default tolerance, far higher than Julia root solvers will use.
[0] https://cran.r-project.org/web/packages/cubature/cubature.pdf https://cran.r-project.org/web/packages/cubature/cubature.pd...
[1] https://github.com/JuliaMath/Cubature.jl https://github.com/JuliaMath/Cubature.jl
[2] https://github.com/JuliaOpt/NLopt.jl/blob/6ade25740362895bbfff1aee07d35911a6e2df17/src/MOI_wrapper.jl#L315 https://github.com/JuliaOpt/NLopt.jl/blob/6ade25740362895bbf...
[3] https://cran.r-project.org/web/packages/nloptr/nloptr.pdf https://cran.r-project.org/web/packages/nloptr/nloptr.pdf
[4] https://www.rdocumentation.org/packages/stats/versions/3.6.2/topics/uniroot https://www.rdocumentation.org/packages/stats/versions/3.6.2...
- BrandonS113 4y agoWe take of that by setting all the NLOPT options to be the same across calling languages. We get pretty much the same number of calls in julia, r and c.