libprima / prima

PRIMA is a package for solving general nonlinear optimization problems without using derivatives. It provides the reference implementation for Powell's derivative-free optimization methods, i.e., COBYLA, UOBYQA, NEWUOA, BOBYQA, and LINCOA. PRIMA means Reference Implementation for Powell's methods with Modernization and Amelioration, P for Powell.
http://libprima.net
BSD 3-Clause "New" or "Revised" License
290 stars 35 forks source link

Change return types to prima_rc_t #192

Closed nbelakovski closed 2 months ago

nbelakovski commented 2 months ago

This should help users figure out how and where to look up any error codes they might receive while trying to use PRIMA.

There's a small problem which isn't created by this PR but is "surfaced" by it - many of the C functions we use return 0 on success, which is fairly standard in the C world. However the prima_rc_t value for 0 is PRIMA_SMALL_TR_RADIUS, which is not very intuitive.

I see that infos.f90 defines both SMALL_TR_RADIUS and INFO_DFT as 0, should we define PRIMA_DFT as 0 as well in prima.h?

zaikunzhang commented 2 months ago

I see that infos.f90 defines both SMALL_TR_RADIUS and INFO_DFT as 0, should we define PRIMA_DFT as 0 as well in prima.h?

I agree. Should we call it PRIMA_RC_DFT or PRIMA_INFO_DFT?

nbelakovski commented 2 months ago

PRIMA_RC_DFT sounds good, I'll make the change.