Ejemplo n.º 1
0
void lfmxevs(lfit *lf, mxArray *mcell)
{ int d, i, j;
  double *ll, *ur, *mg, *drv;
  char evstr[16], mod[16], mdir[256];
  evstruc *evs;
  fitpt *fp;
  deriv *dv;

  evs = &lf->evs;
  fp  = &lf->fp;
  dv  = &lf->dv;
  d   = lf->lfd.d;

  if (mxIsChar(mxGetField(mcell,0,"type")))
  { mxGetString(mxGetField(mcell,0,"type"),evstr,16);
    ev(evs) = lfevstr(evstr);
  }
  else
  { ev(evs) = EPRES;
    evs->mg[0] = mxGetN(mxGetField(mcell,0,"type"));
    fp->xev = mxGetPr(mxGetField(mcell,0,"type"));
  }


  mxGetString(mxGetField(mxGetField(mcell,0,"module"),0,"name"),mod,16);
  mxGetString(mxGetField(mxGetField(mcell,0,"module"),0,"directory"),mdir,256);
  MODPARAMS(lf) = mxGetPr(mxGetField(mxGetField(mcell,0,"module"),0,"parameters"));
  MODNPARAMS(lf) = mxGetN(mxGetField(mxGetField(mcell,0,"module"),0,"parameters"));
  initmodule(&lf->mdl,mod,mdir,lf);


  ll = mxGetPr(mxGetField(mcell,0,"lower_left"));
  ur = mxGetPr(mxGetField(mcell,0,"upper_right"));
  mg = mxGetPr(mxGetField(mcell,0,"grid"));
  j =  mxGetN(mxGetField(mcell,0,"grid"));
  cut(evs) = mxGetPr(mxGetField(mcell,0,"cut"))[0];
  for (i=0; i<d; i++)
  { evs->fl[i] = ll[i];
    evs->fl[i+d] = ur[i];
    if (ev(evs) != EPRES) evs->mg[i] = (j==1) ? mg[0] : mg[i];
  }
  mk(evs) = mxGetPr(mxGetField(mcell,0,"maxk"))[0];

  drv = mxGetPr(mxGetField(mcell,0,"derivative")); 
  j = mxGetN(mxGetField(mcell,0,"derivative")); 
  for (i=0; i<j; i++) dv->deriv[i] = drv[i]-1;
  dv->nd = (drv[0]>0) ? j : 0;
}
Ejemplo n.º 2
0
	}
	return (object*)PyErr_BadArgument();
}


/*** FUNCTIONS FROM THE MODULE ***/

static struct methodlist amigalibs_global_methods[] = {
	{"openlib",	amigalibs_openlib, 0},
	{"obj2reg", amigalibs_obj2reg, 0},
	{"addr",  amigalibs_addr, 0},
	{"fixstr",  amigalibs_fixstr, 0},
	{NULL,		NULL}		/* sentinel */
};


void
initamigalibs Py_PROTO((void))
{
	object *m, *d;
	
	m = initmodule("amigalibs", amigalibs_global_methods);
	d = getmoduledict(m);
	
	/* Initialize amigalibs.error exception */
	AmigalibsError = PyErr_NewException("amigalibs.error", NULL, NULL);

	if (AmigalibsError != NULL)
		dictinsert(d, "error", AmigalibsError);
}