Class: Sollya::Range

Inherits:
Object show all
Defined in:
ext/sollya_rb.c

Instance Method Summary collapse

Methods inherited from Object

#!=, #&, #==, #concat, #inspect, #print, #to_s, #to_sollya, #|, #~

Instance Method Details

#infSollya::Object

Returns:



2231
2232
2233
2234
# File 'ext/sollya_rb.c', line 2231

static VALUE sollyarb_range_inf(VALUE self)
{
  return sollyarb_autowrap_object(sollya_lib_inf(sollyarb_object_rb2ref(self)));
}

#lower_boundMPFR

Returns:



870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
# File 'ext/sollya_rb.c', line 870

static VALUE sollyarb_range_lower_bound(VALUE self)
{
  sollya_obj_t rng = sollyarb_object_rb2ref(self);
  mp_prec_t prec = 0;
  if (!sollya_lib_get_prec_of_range(&prec, rng)) {
    sollya_obj_t p = sollya_lib_get_prec();
    sollya_lib_get_constant_as_int64(&prec, p);
    sollya_lib_clear_obj(p);
  }
  if (!prec) {
    return Qnil;
  }
  VALUE mprb = mpfrrb_alloc(c_MPFR);
  mpfr_ptr mp = mpfrrb_rb2ref_ext(mprb);
  mpfr_init2(mp, prec);

  mpfr_t dummy;
  mpfr_init2(dummy, 32);
  if (!sollya_lib_get_bounds_from_range(mp, dummy, rng)) {
    mpfr_clear(dummy);
    return Qnil;
  }
  return mprb;
}

#midSollya::Object

Returns the middle of self. If the middle is not exactly representable at the current precision, the value is returned as an unevaluated expression.

Returns:



2495
2496
2497
# File 'ext/sollya_rb.c', line 2495

static VALUE sollyarb_range_mid(VALUE self) {
  return sollyarb_autowrap_object(sollya_lib_mid(sollyarb_object_rb2ref(self)));
}

#supSollya::Object

Returns:



2239
2240
2241
2242
# File 'ext/sollya_rb.c', line 2239

static VALUE sollyarb_range_sup(VALUE self)
{
  return sollyarb_autowrap_object(sollya_lib_sup(sollyarb_object_rb2ref(self)));
}

#upper_boundMPFR

Returns:



898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
# File 'ext/sollya_rb.c', line 898

static VALUE sollyarb_range_upper_bound(VALUE self)
{
  sollya_obj_t rng = sollyarb_object_rb2ref(self);
  mp_prec_t prec = 0;
  if (!sollya_lib_get_prec_of_range(&prec, rng)) {
    sollya_obj_t p = sollya_lib_get_prec();
    sollya_lib_get_constant_as_int64(&prec, p);
    sollya_lib_clear_obj(p);
  }
  if (!prec) {
    return Qnil;
  }
  VALUE mprb = mpfrrb_alloc(c_MPFR);
  mpfr_ptr mp = mpfrrb_rb2ref_ext(mprb);
  mpfr_init2(mp, prec);

  mpfr_t dummy;
  mpfr_init2(dummy, 32);
  if (!sollya_lib_get_bounds_from_range(dummy, mp, rng)) {
    mpfr_clear(dummy);
    return Qnil;
  }
  return mprb;
}