/* funobj.f -- translated by f2c (version 20000817).
   You must link the resulting object file with the libraries:
	-lf2c -lm   (in that order)
*/

#include "f2c.h"
#include "blaswrap.h"

/* Common Block Declarations */

struct {
    doublereal gmod[200], hmod[40000]	/* was [200][200] */;
} mdlpar_;

#define mdlpar_1 mdlpar_

/* Copyright (C) 2000, International Business Machines */
/* Corporation and others.  All Rights Reserved. */
/* Subroutine */ int funobj_(mode, n, x, objf, objgrd, nstate)
integer *mode, *n;
doublereal *x, *objf, *objgrd;
integer *nstate;
{
    /* System generated locals */
    integer i__1, i__2;

    /* Local variables */
    static integer i__, j;

    /* Parameter adjustments */
    --objgrd;
    --x;

    /* Function Body */
    if (*mode == 1 || *mode == 2) {
	i__1 = *n;
	for (i__ = 1; i__ <= i__1; ++i__) {
	    objgrd[i__] = mdlpar_1.gmod[i__ - 1];
	    i__2 = *n;
	    for (j = 1; j <= i__2; ++j) {
		objgrd[i__] += mdlpar_1.hmod[i__ + j * 200 - 201] * x[j];
/* L40: */
	    }
/* L30: */
	}
    }
    if (*mode == 0 || *mode == 2) {
	*objf = 0.;
	i__1 = *n;
	for (i__ = 1; i__ <= i__1; ++i__) {
	    *objf += mdlpar_1.gmod[i__ - 1] * x[i__];
	    i__2 = *n;
	    for (j = 1; j <= i__2; ++j) {
		*objf += mdlpar_1.hmod[i__ + j * 200 - 201] * .5 * x[j] * x[
			i__];
/* L60: */
	    }
/* L50: */
	}
    }
    return 0;
} /* funobj_ */

