#include "auto_f2c.h"

int func (integer ndim, const doublereal *u, const integer *icp,
          const doublereal *par, integer ijac,
          doublereal *f, doublereal *dfdu, doublereal *dfdp)
{
  /* Local variables */
  doublereal omega, a, b, k, x, y, p, q;
  omega = par[0];
  a     = par[1];
  b     = par[2];
  k     = par[3];

  x = u[0];
  y = u[1];
  p = u[2];
  q = u[3];

  f[0] = y;
  /* f[1] = -b*y - k*x + a*cos(omega*t); */
  f[1] = -b*y - k*x + a*q;
  f[2] =  p + omega*q - p*(p*p+q*q);
  f[3] = -omega*p + q - q*(p*p+q*q); 

  return 0;
}
/* ---------------------------------------------------------------------- */
/* ---------------------------------------------------------------------- */
int stpnt (integer ndim, doublereal t,
           doublereal *u, doublereal *par)
{

  /* Local variables */
  doublereal omega, a, b, k;

  omega = (doublereal) 1.0;
  a     = (doublereal) 1.0;
  b     = (doublereal) 2.0;
  k     = (doublereal) 10.0;

  par[0] = omega;
  par[1] = a;
  par[2] = b;
  par[3] = k;

  return 0;
}
/* ---------------------------------------------------------------------- */
/* ---------------------------------------------------------------------- */
int bcnd (integer ndim, const doublereal *par, const integer *icp,
          integer nbc, const doublereal *u0, const doublereal *u1, integer ijac,
          doublereal *fb, doublereal *dbc)
{
  return 0;
}
/* ---------------------------------------------------------------------- */
/* ---------------------------------------------------------------------- */
int icnd (integer ndim, const doublereal *par, const integer *icp,
          integer nint, const doublereal *u, const doublereal *uold,
          const doublereal *udot, const doublereal *upold, integer ijac,
          doublereal *fi, doublereal *dint)
{
  return 0;
}
/* ---------------------------------------------------------------------- */
/* ---------------------------------------------------------------------- */
int fopt (integer ndim, const doublereal *u, const integer *icp,
          const doublereal *par, integer ijac,
          doublereal *fs, doublereal *dfdu, doublereal *dfdp)
{
  return 0;
}
/* ---------------------------------------------------------------------- */
/* ---------------------------------------------------------------------- */
int pvls (integer ndim, const doublereal *u,
          doublereal *par)
{
  return 0;
}
/* ---------------------------------------------------------------------- */
/* ---------------------------------------------------------------------- */


