static int fQ(realtype t, N_Vector y, N_Vector qdot, void *user_data)
{
  ProblemData d;
  realtype *dqdata;

  d = (ProblemData) user_data;

  dqdata = NV_DATA_P(qdot);

  dqdata[0] = N_VDotProd_Parallel(y,y);
  dqdata[0] *= RCONST(0.5) * (d->dOmega);

  return(0);
}
CAMLprim value sunml_nvec_par_n_vdotprod(value vx, value vy)
{
    CAMLparam2(vx, vy);
    realtype r = N_VDotProd_Parallel(NVEC_VAL(vx), NVEC_VAL(vy));
    CAMLreturn(caml_copy_double(r));
}