Class: Sollya::Range
Instance Method Summary
collapse
Methods inherited from Object
#!=, #&, #==, #concat, #inspect, #print, #to_s, #to_sollya, #|, #~
Instance Method Details
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_bound ⇒ MPFR
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;
}
|
Returns the middle of self.
If the middle is not exactly representable at the current precision, the value is returned as an unevaluated expression.
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)));
}
|
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_bound ⇒ MPFR
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;
}
|