class Ent::RandomTest

Public Class Methods

new(p1 = v1) click to toggle source
VALUE rb_rt_initialize(int argc, VALUE *argv, VALUE klass) {
  rt_ctx *ctx;
  VALUE binmode = Qnil;
  int _bmode = 0;

  rb_scan_args(argc, argv, "01", &binmode);
  if ((binmode != Qnil) && (binmode != Qfalse)) {
    Check_Type(binmode, T_TRUE);
    _bmode=1;
  }

  if(!(ctx = rt_new()))
    rb_sys_fail(0);

  ctx->binary = _bmode;

  return Data_Wrap_Struct(klass, rb_rt_mark, rt_free, ctx);
}

Public Instance Methods

binary?() click to toggle source
VALUE rb_rt_get_binmode(VALUE self) {
  rt_ctx *ctx;
  Data_Get_Struct(self, rt_ctx, ctx);
  if (ctx->binary)
    return Qtrue;
  else
    return Qfalse;
}
chisquare() click to toggle source
VALUE rb_rt_chisquare(VALUE self) {
  rt_ctx *ctx;
  Data_Get_Struct(self, rt_ctx, ctx);

  if(ctx->ended)
    return DBL2NUM(ctx->r_chisq);
  else
    return Qnil;
}
chisquare!() click to toggle source
VALUE rb_rt_chisquare_force(VALUE self) {
  rt_ctx *ctx;
  Data_Get_Struct(self, rt_ctx, ctx);

  if(! ctx->ended)
    rt_end(ctx);

  return DBL2NUM(ctx->r_chisq);
}
chisquare_probability() click to toggle source
VALUE rb_rt_chisquare_probability(VALUE self) {
  rt_ctx *ctx;
  double ret, chip;

  Data_Get_Struct(self, rt_ctx, ctx);

  if(! ctx->ended)
    return Qnil;

  chip = pochisq(ctx->r_chisq, (ctx->binary ? 1 : 255));

  if (chip < 0.0001)
    ret = 0.009;
  else if (chip > 0.9999)
    ret = 99.991;
  else
    ret = chip * 100;

  return DBL2NUM(ret);
}
chisquare_probability!() click to toggle source
VALUE rb_rt_chisquare_probability_force(VALUE self) {
  rt_ctx *ctx;
  double ret, chip;

  Data_Get_Struct(self, rt_ctx, ctx);

  if(! ctx->ended)
    rt_end(ctx);

  chip = pochisq(ctx->r_chisq, (ctx->binary ? 1 : 255));

  if (chip < 0.0001)
    ret = 0.009;
  else if (chip > 0.9999)
    ret = 99.991;
  else
    ret = chip * 100;

  return DBL2NUM(ret);
}
entropy() click to toggle source
VALUE rb_rt_entropy(VALUE self) {
  rt_ctx *ctx;
  Data_Get_Struct(self, rt_ctx, ctx);

  if(ctx->ended)
    return DBL2NUM(ctx->r_ent);
  else
    return Qnil;
}
entropy!() click to toggle source
VALUE rb_rt_entropy_force(VALUE self) {
  rt_ctx *ctx;
  Data_Get_Struct(self, rt_ctx, ctx);

  if(! ctx->ended)
    rt_end(ctx);

  return DBL2NUM(ctx->r_ent);
}
finalize() click to toggle source
VALUE rb_rt_final(VALUE self) {
  rt_ctx *ctx;
  Data_Get_Struct(self, rt_ctx, ctx);

  if (! ctx->ended) 
    rt_end(ctx);

  return self;
}
mean() click to toggle source
VALUE rb_rt_mean(VALUE self) {
  rt_ctx *ctx;

  Data_Get_Struct(self, rt_ctx, ctx);

  if(ctx->ended)
    return DBL2NUM(ctx->r_mean);
  else
    return Qnil;
}
mean!() click to toggle source
VALUE rb_rt_mean_force(VALUE self) {
  rt_ctx *ctx;
  Data_Get_Struct(self, rt_ctx, ctx);

  if(! ctx->ended)
    rt_end(ctx);

  return DBL2NUM(ctx->r_mean);
}
montepi() click to toggle source
VALUE rb_rt_montepi(VALUE self) {
  rt_ctx *ctx;
  Data_Get_Struct(self, rt_ctx, ctx);

  if(ctx->ended)
    return DBL2NUM(ctx->r_montepicalc);
  else
    return Qnil;
}
montepi!() click to toggle source
VALUE rb_rt_montepi_force(VALUE self) {
  rt_ctx *ctx;
  Data_Get_Struct(self, rt_ctx, ctx);

  if(! ctx->ended)
    rt_end(ctx);

  return DBL2NUM(ctx->r_montepicalc);
}
read(p1) click to toggle source
VALUE rb_rt_read_string(VALUE self, VALUE rb_buf) {
  rt_ctx *ctx;

  Check_Type(rb_buf, T_STRING);

  Data_Get_Struct(self, rt_ctx, ctx);
  if(ctx->ended)
    rb_raise(rb_eIOError, "data cannot be added after finalizing");

  rt_add(ctx, RSTRING_PTR(rb_buf), RSTRING_LEN(rb_buf));

  return LONG2NUM(RSTRING_LEN(rb_buf));
}
Also aliased as: read_string
read_file(p1) click to toggle source
VALUE rb_rt_read_file(VALUE self, VALUE rb_filename) {
  rt_ctx *ctx;
  FILE *fp;
  int oc;
  size_t fsz = 0;

  Check_Type(rb_filename, T_STRING);
  Data_Get_Struct(self, rt_ctx, ctx);
  if(ctx->ended)
    rb_raise(rb_eIOError, "data cannot be added after finalizing");

  if ((fp = fopen(RSTRING_PTR(rb_filename), "rb")) == NULL)
    rb_sys_fail(0);

  while((oc=fgetc(fp)) != EOF) {
    unsigned char ocb = (unsigned char) oc;
    rt_add(ctx, &ocb, 1);
    fsz++;
  }
  fclose(fp);

  return LONG2NUM(fsz);
}
read_string(p1)
Alias for: read
result() click to toggle source
VALUE rb_rt_result(VALUE self) {
  rt_ctx *ctx;
  VALUE ret;

  Data_Get_Struct(self, rt_ctx, ctx);

  if(! ctx->ended)
    rt_end(ctx);

  ret = rb_hash_new();
  rb_hash_aset(ret, ID2SYM(rb_intern("entropy")), DBL2NUM(ctx->r_ent));
  rb_hash_aset(ret, ID2SYM(rb_intern("mean")), DBL2NUM(ctx->r_mean));
  rb_hash_aset(ret, ID2SYM(rb_intern("chisquare")), DBL2NUM(ctx->r_chisq));
  rb_hash_aset(ret, ID2SYM(rb_intern("montepi")), DBL2NUM(ctx->r_montepicalc));
  rb_hash_aset(ret, ID2SYM(rb_intern("scc")), DBL2NUM(ctx->r_scc));
  return ret;
}
scc() click to toggle source
VALUE rb_rt_scc(VALUE self) {
  rt_ctx *ctx;
  Data_Get_Struct(self, rt_ctx, ctx);

  if(ctx->ended)
    return DBL2NUM(ctx->r_scc);
  else
    return Qnil;
}
scc!() click to toggle source
VALUE rb_rt_scc_force(VALUE self) {
  rt_ctx *ctx;
  Data_Get_Struct(self, rt_ctx, ctx);

  if(! ctx->ended)
    rt_end(ctx);

  return DBL2NUM(ctx->r_scc);
}