The fitting function fcn is a simple chisquare function The data consists of 5 data points (arrays x,y,z) + the errors in errorsz More details on the various functions or parameters for these functions can be obtained in an interactive ROOT session with:
Processing /mnt/build/workspace/root-makedoc-v608/rootspi/rdoc/src/v6-08-00-patches/tutorials/fit/Ifit.C...
 **********
 **    1 **SET ERR           1
 **********
 PARAMETER DEFINITIONS:
    NO.   NAME         VALUE      STEP SIZE      LIMITS
     1 a1           3.00000e+00  1.00000e-01     no limits
     2 a2           1.00000e+00  1.00000e-01     no limits
     3 a3           1.00000e-01  1.00000e-02     no limits
     4 a4           1.00000e-02  1.00000e-03     no limits
 **********
 **    2 **MIGRAD         500           1
 **********
 FIRST CALL TO USER FUNCTION AT NEW START POINT, WITH IFLAG=4.
 START MIGRAD MINIMIZATION.  STRATEGY  1.  CONVERGENCE WHEN EDM .LT. 1.00e-03
 FCN=90047.1 FROM MIGRAD    STATUS=INITIATE       14 CALLS          15 TOTAL
                     EDM= unknown      STRATEGY= 1      NO ERROR MATRIX       
  EXT PARAMETER               CURRENT GUESS       STEP         FIRST   
  NO.   NAME      VALUE            ERROR          SIZE      DERIVATIVE 
   1  a1           3.00000e+00   1.00000e-01   1.00000e-01   2.81614e+05
   2  a2           1.00000e+00   1.00000e-01   1.00000e-01  -2.73395e+05
   3  a3           1.00000e-01   1.00000e-02   1.00000e-02  -3.08505e+05
   4  a4           1.00000e-02   1.00000e-03   1.00000e-03   3.53925e+05
 MIGRAD MINIMIZATION HAS CONVERGED.
 MIGRAD WILL VERIFY CONVERGENCE AND ERROR MATRIX.
 EIGENVALUES OF SECOND-DERIVATIVE MATRIX:
        -6.7573e-05  7.2964e-05  4.1376e-02  3.9586e+00
 MINUIT WARNING IN HESSE   
 ============== MATRIX FORCED POS-DEF BY ADDING 0.004026 TO DIAGONAL.
 FCN=10.3986 FROM HESSE     STATUS=NOT POSDEF     23 CALLS         112 TOTAL
                     EDM=0.11462    STRATEGY= 1      ERR MATRIX NOT POS-DEF
  EXT PARAMETER                APPROXIMATE        STEP         FIRST   
  NO.   NAME      VALUE            ERROR          SIZE      DERIVATIVE 
   1  a1           2.51776e+00   4.70562e-02   6.10330e-06   1.74962e+00
   2  a2           1.39551e+00   8.92750e-02   1.31410e-05   6.70438e+00
   3  a3           2.53639e-01   9.47120e-02   1.16109e-05   4.39325e+00
   4  a4           6.07417e-02   4.27988e-02   9.90333e-06  -3.17219e+00
 MIGRAD MINIMIZATION HAS CONVERGED.
 MIGRAD WILL VERIFY CONVERGENCE AND ERROR MATRIX.
 COVARIANCE MATRIX CALCULATED SUCCESSFULLY
 FCN=5.83333 FROM MIGRAD    STATUS=CONVERGED     232 CALLS         233 TOTAL
                     EDM=0.000805786    STRATEGY= 1      ERROR MATRIX ACCURATE 
  EXT PARAMETER                                   STEP         FIRST   
  NO.   NAME      VALUE            ERROR          SIZE      DERIVATIVE 
   1  a1           2.15261e+00   1.03157e-01   3.03942e-06   4.51168e+00
   2  a2           8.11244e-01   2.53808e-01   5.62214e-06  -2.40912e+00
   3  a3           1.71311e-01   4.00479e-01   4.93858e-06  -2.98641e+00
   4  a4           1.01582e-01   1.60309e-01   4.18094e-06   3.54102e+00
 EXTERNAL ERROR MATRIX.    NDIM=  25    NPAR=  4    ERR DEF=1
  1.064e-02  1.057e-02  1.068e-02  2.336e-03 
  1.057e-02  6.442e-02 -7.900e-02 -3.414e-02 
  1.068e-02 -7.900e-02  1.604e-01  6.356e-02 
  2.336e-03 -3.414e-02  6.356e-02  2.570e-02 
 PARAMETER  CORRELATION COEFFICIENTS  
       NO.  GLOBAL      1      2      3      4
        1  0.99974   1.000  0.404  0.259  0.141
        2  0.99985   0.404  1.000 -0.777 -0.839
        3  0.99995   0.259 -0.777  1.000  0.990
        4  0.99980   0.141 -0.839  0.990  1.000
  {
 Double_t value=( (par[0]*par[0])/(x*x)-1)/ ( par[1]+par[2]*y-par[3]*y*y);
  return value;
}
{
     delta  = (z[i]-
func(x[i],y[i],par))/errorz[i];
     chisq += delta*delta;
   }
   f = chisq;
}
void Ifit()
{
   z[0]=1;
   z[1]=0.96;
   z[2]=0.89;
   z[3]=0.85;
   z[4]=0.78;
   errorz[0]=error;
   errorz[1]=error;
   errorz[2]=error;
   errorz[3]=error;
   errorz[4]=error;
   x[0]=1.5751;
   x[1]=1.5825;
   x[2]=1.6069;
   x[3]=1.6339;
   x[4]=1.6706;
   y[0]=1.0642;
   y[1]=0.97685;
   y[2]=1.13168;
   y[3]=1.128654;
   y[4]=1.44016;
   arglist[0] = 1;
   gMinuit->
mnexcm(
"SET ERR", arglist ,1,ierflg);
   static Double_t vstart[4] = {3, 1 , 0.1 , 0.01};
    static Double_t step[4] = {0.1 , 0.1 , 0.01 , 0.001};
    gMinuit->
mnparm(0, 
"a1", vstart[0], step[0], 0,0,ierflg);
   gMinuit->
mnparm(1, 
"a2", vstart[1], step[1], 0,0,ierflg);
   gMinuit->
mnparm(2, 
"a3", vstart[2], step[2], 0,0,ierflg);
   gMinuit->
mnparm(3, 
"a4", vstart[3], step[3], 0,0,ierflg);
   arglist[0] = 500;
   arglist[1] = 1.;
   gMinuit->
mnexcm(
"MIGRAD", arglist ,2,ierflg);
   Int_t nvpar,nparx,icstat;
    gMinuit->
mnstat(amin,edm,errdef,nvpar,nparx,icstat);
   
}