Mercurial > hg > octave-lyh
changeset 253:e208bd9ade36
[project @ 1993-12-06 22:01:37 by jwe]
author | jwe |
---|---|
date | Mon, 06 Dec 1993 22:01:37 +0000 |
parents | bc5e6cb785d1 |
children | c9894e8d5f04 |
files | liboctave/NLEqn.cc |
diffstat | 1 files changed, 37 insertions(+), 16 deletions(-) [+] |
line wrap: on
line diff
--- a/liboctave/NLEqn.cc +++ b/liboctave/NLEqn.cc @@ -33,12 +33,13 @@ extern "C" { - int F77_FCN (hybrd1) (int (*)(), const int*, double*, double*, - const double*, int*, double*, const int*); + int F77_FCN (hybrd1) (int (*)(int*, double*, double*, int*), + const int*, double*, double*, const double*, + int*, double*, const int*); - int F77_FCN (hybrj1) (int (*)(), const int*, double*, double*, - double*, const int*, const double*, int*, - double*, const int*); + int F77_FCN (hybrj1) (int (*)(int*, double*, double*, double*, int*, int*), + const int*, double*, double*, double*, const int*, + const double*, int*, double*, const int*); } static nonlinear_fcn user_fun; @@ -143,8 +144,13 @@ tmp_f = (*user_fun) (tmp_x); - for (i = 0; i < nn; i++) - fvec[i] = tmp_f.elem (i); + if (tmp_f.length () == 0) + *iflag = -1; + else + { + for (i = 0; i < nn; i++) + fvec[i] = tmp_f.elem (i); + } return 0; } @@ -166,8 +172,13 @@ tmp_f = (*user_fun) (tmp_x); - for (i = 0; i < nn; i++) - fvec[i] = tmp_f.elem (i); + if (tmp_f.length () == 0) + *iflag = -1; + else + { + for (i = 0; i < nn; i++) + fvec[i] = tmp_f.elem (i); + } } else { @@ -175,10 +186,15 @@ tmp_fj = (*user_jac) (tmp_x); - int ld = *ldfjac; - for (int j = 0; j < nn; j++) - for (i = 0; i < nn; i++) - fjac[j*ld+i] = tmp_fj.elem (i, j); + if (tmp_fj.rows () == 0 || tmp_fj.columns () == 0) + *iflag = -1; + else + { + int ld = *ldfjac; + for (int j = 0; j < nn; j++) + for (i = 0; i < nn; i++) + fjac[j*ld+i] = tmp_fj.elem (i, j); + } } return 0; @@ -227,12 +243,17 @@ delete [] fjac; } + Vector retval; + info = tmp_info; - Vector retval (n); + if (info >= 0) + { + retval.resize (n); - for (i = 0; i < n; i++) - retval.elem (i) = px[i]; + for (i = 0; i < n; i++) + retval.elem (i) = px[i]; + } return retval; }