Introduction

Return Values from User-Supplied Functions

All values returned by user-supplied functions must be valid real numbers. It is the user's responsibility to check that the values returned by a user-supplied function do not contain NaN, infinity, or negative infinity values.

Example

#include <imsl.h>

#include <math.h>

void fcn(int, int, float[], float[]);

void main()

{

int m=3, n=1;

float *result, fx[3];

float xguess[]={1.0};

result = imsl_f_nonlin_least_squares(fcn, m, n, IMSL_XGUESS, xguess, 0);

fcn(m, n, result, fx);

/* Print results */

imsl_f_write_matrix("The solution is", 1, 1, result, 0);

imsl_f_write_matrix("The function values are", 1, 3, fx, 0);

} /* End of main */

 

void fcn(int m, int n, float x[], float f[])

{

int i;

float y[3] = {2.0, 4.0, 3.0};

float t[3] = {1.0, 2.0, 3.0};

for (i=0; i<m; i++)

{

/*      check for x=0    

         do not want to return infinity to nonlin_least_squares    */

   if (x[0] == 0.0) {

      f[i] = 10000.;

   } else {

      f[i] = t[i]/x[0] - y[i];

   }

}

 

} /* End of function */


Visual Numerics, Inc.
Visual Numerics - Developers of IMSL and PV-WAVE
http://www.vni.com/
PHONE: 713.784.3131
FAX:713.781.9260