G'day Brian, >>>>> "BDR" == Prof Brian Ripley <[EMAIL PROTECTED]> writes:
BDR> As for the problem, yes it probably is a bug in L-BFGS-B. BDR> Fancy debugging the code? I was afraid that somebody would ask this. ;-) I looked a bit at the code and it seems to be non-trivial. Moreover, it seems to be code translated from FORTRAN to C via f2c and I am not a fan of such kind of code. I know that "Writing R Extensions" lists in Appendix B ("R coding standards") f2c as a tool that `can "safely be assumed" for R extensions'. However, f2c, despite its `-A' option, does not produce ANSI C compliant code but rather C code that provokes undefined behaviour. The problem is, that the code produced by f2c is decrementing pointers to simulate 1-based vectors and the C FAQ is pretty unambigious about the fact that this provokes undefined behaviour, see http://www.eskimo.com/~scs/C-faq/q6.17.html As far as I understand, this translated code mostly stems from the time when some platforms did not have ready access to a fortran compiler and, hence, f2c was used (extensively?). But now, with g77 this does not seem to be an issue anymore. So I wonder whether there are any plans of returning to the original fortran code? Or are there plans to clean up these f2c'd code snippet to make them ANSI C compliant? I noticed such f2c'd code already in the splines.c file when I studied how splinefun was implemented (which lead to bug report #8030). In that case, I am fairly familiar with the algorithms used in splines.c since I programmed them myself on other occassions and I probably could rewrite the algorithms in proper ANSI C (it would still take some time). But it would be nice to know what the official stance of the R Core Team is. When I spoke with one member of the R Core Team about this on a conference in 2004, the answer was, IIRC, "yes, we know that this code invokes undefined behaviour, but there are bigger problems to fix first and this pointer manipulation seems to work on all platforms these days." Another member of the R Core Team whom I recently asked: I guess all platforms on which R is running at the moment do not have a problem with this trick, but are there any plans to change such kind of code to "valid" C? Would patches that do that be accepted? answered: Hmm, I think we'd tend to disagree here. But in any case that would be a wide issue. Can you address this question to R-core, please? (or I forward?) Cheers, Berwin ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel