示例#1
0
/* simple matrix operations */
CAMLprim value ml_gsl_linalg_matmult_mod(value A, value omodA,
					 value B, value omodB,
					 value C)
{
  gsl_linalg_matrix_mod_t modA = Opt_arg(omodA, Int_val, GSL_LINALG_MOD_NONE);
  gsl_linalg_matrix_mod_t modB = Opt_arg(omodB, Int_val, GSL_LINALG_MOD_NONE);
  _DECLARE_MATRIX3(A, B, C);
  _CONVERT_MATRIX3(A, B, C);
  gsl_linalg_matmult_mod(&m_A, modA, &m_B, modB, &m_C);
  return Val_unit;
}
示例#2
0
文件: mlgsl_histo.c 项目: ptrf/LCDE
CAMLprim value ml_gsl_histogram_accumulate(value vh, value ow, value x)
{
  gsl_histogram h;
  double w = Opt_arg(ow, Double_val, 1.);
  histo_of_val(&h, vh);
  gsl_histogram_accumulate(&h, Double_val(x), w);
  return Val_unit;
}
示例#3
0
CAMLprim value 
sdl_init(value auto_clean, value vf) 
{
  int flags = init_flag_val(vf);
  int clean = Opt_arg(auto_clean, Bool_val, 0);

  if (SDL_Init(flags) < 0) 
    raise_with_string(*caml_named_value("SDL_init_exception"),
		      SDL_GetError());

  if(clean)
    atexit(sdl_internal_quit);

  return Val_unit;
}
示例#4
0
CAMLprim value mlsdlevent_get(value omask, value num)
{
  int n = Int_val(num);
  int m;
  LOCALARRAY(SDL_Event, evt, n);
  Uint32 mask = Opt_arg(omask, Int_val, SDL_ALLEVENTS);
  m = SDL_PeepEvents(evt, n, SDL_GETEVENT, mask);
  if(m < 0)
    raise_event_exn(SDL_GetError());
  {
    int i;
    CAMLparam0();
    CAMLlocal1(v);
    v = nil();
    for(i=m-1; i>=0; i--){
      value e = value_of_SDLEvent(evt[i]);
      v = mlsdl_cons(e, v);
    }
    CAMLreturn(v);
  }
}