ruby-mpfr 0.0.10 → 0.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gemtest +0 -0
- data/ext/gmp/mpfr/extconf.rb +14 -0
- data/ext/mpfr/extconf.rb +14 -0
- data/ext/mpfr/ruby_mpfr.c +38 -18
- data/ext/mpfr/ruby_mpfr.h +3 -0
- data/ext/mpfr_matrix/mpfr/extconf.rb +14 -0
- data/ext/mpfr_matrix/mpfr/ruby_mpfr.h +4 -0
- data/ext/mpfr_matrix/mpfr/ruby_mpfr_matrix.c +11 -67
- data/lib/mpfr/version.rb +1 -1
- data/spec/mpfr/allocate_spec.rb +19 -9
- metadata +7 -33
    
        data/.gemtest
    ADDED
    
    | 
            File without changes
         | 
    
        data/ext/gmp/mpfr/extconf.rb
    CHANGED
    
    | @@ -1,5 +1,19 @@ | |
| 1 1 | 
             
            require 'mkmf'
         | 
| 2 2 |  | 
| 3 | 
            +
            i = 0
         | 
| 4 | 
            +
            while i < ARGV.size
         | 
| 5 | 
            +
              case ARGV[i]
         | 
| 6 | 
            +
              when '--ldflags'
         | 
| 7 | 
            +
                if args = ARGV[i+1]
         | 
| 8 | 
            +
                  i += 1
         | 
| 9 | 
            +
                  $LDFLAGS += " #{args}"
         | 
| 10 | 
            +
                end
         | 
| 11 | 
            +
              else
         | 
| 12 | 
            +
                raise "Invalid option: #{ARGV[i]}"
         | 
| 13 | 
            +
              end
         | 
| 14 | 
            +
              i += 1
         | 
| 15 | 
            +
            end
         | 
| 16 | 
            +
             | 
| 3 17 | 
             
            $CFLAGS += " -Wall"
         | 
| 4 18 |  | 
| 5 19 | 
             
            REQUIRE_VERSION = 3
         | 
    
        data/ext/mpfr/extconf.rb
    CHANGED
    
    | @@ -1,5 +1,19 @@ | |
| 1 1 | 
             
            require 'mkmf'
         | 
| 2 2 |  | 
| 3 | 
            +
            i = 0
         | 
| 4 | 
            +
            while i < ARGV.size
         | 
| 5 | 
            +
              case ARGV[i]
         | 
| 6 | 
            +
              when '--ldflags'
         | 
| 7 | 
            +
                if args = ARGV[i+1]
         | 
| 8 | 
            +
                  i += 1
         | 
| 9 | 
            +
                  $LDFLAGS += " #{args}"
         | 
| 10 | 
            +
                end
         | 
| 11 | 
            +
              else
         | 
| 12 | 
            +
                raise "Invalid option: #{ARGV[i]}"
         | 
| 13 | 
            +
              end
         | 
| 14 | 
            +
              i += 1
         | 
| 15 | 
            +
            end
         | 
| 16 | 
            +
             | 
| 3 17 | 
             
            $CFLAGS += " -Wall"
         | 
| 4 18 |  | 
| 5 19 | 
             
            REQUIRE_VERSION = 3
         | 
    
        data/ext/mpfr/ruby_mpfr.c
    CHANGED
    
    | @@ -34,8 +34,7 @@ mp_rnd_t r_mpfr_rnd_from_value(VALUE rnd) | |
| 34 34 | 
             
              } else if (rnd_id == id_rnda) {
         | 
| 35 35 | 
             
                return MPFR_RNDA;
         | 
| 36 36 | 
             
              }
         | 
| 37 | 
            -
              rb_raise(rb_eArgError, "Argument must be  | 
| 38 | 
            -
              /* rb_raise(rb_eArgError, "Argument must be Rounding Mode: %s", rb_class2name(rnd)); */
         | 
| 37 | 
            +
              rb_raise(rb_eArgError, "Argument must be a constant meaning rounding mode, but the objects is %s.", rb_obj_classname(rnd));
         | 
| 39 38 | 
             
            }
         | 
| 40 39 |  | 
| 41 40 | 
             
            /* If argc equals max, convert last argument to rounding mode number. */
         | 
| @@ -407,7 +406,7 @@ void r_mpfr_set_robj(MPFR *ptr, VALUE obj, mp_rnd_t rnd) | |
| 407 406 | 
             
            	r_mpfr_get_struct(ptr_obj, tmp);
         | 
| 408 407 | 
             
            	mpfr_set(ptr, ptr_obj, rnd);
         | 
| 409 408 | 
             
                  } else {
         | 
| 410 | 
            -
            	rb_raise(rb_eArgError, "Invalid class %s for making MPFR.",  | 
| 409 | 
            +
            	rb_raise(rb_eArgError, "Invalid class %s for making MPFR.", rb_obj_classname(obj));
         | 
| 411 410 | 
             
                  }
         | 
| 412 411 | 
             
                  break;
         | 
| 413 412 | 
             
                }
         | 
| @@ -419,7 +418,7 @@ VALUE r_mpfr_robj_to_mpfr(VALUE obj, int argc, VALUE *argv) | |
| 419 418 | 
             
              if (rb_respond_to(obj, to_fr)) {
         | 
| 420 419 | 
             
                return rb_funcall2(obj, to_fr, argc, argv);
         | 
| 421 420 | 
             
              }
         | 
| 422 | 
            -
              rb_raise(rb_eArgError, "The object of %s can not been converted to MPFR.",  | 
| 421 | 
            +
              rb_raise(rb_eArgError, "The object of %s can not been converted to MPFR.", rb_obj_classname(obj));
         | 
| 423 422 | 
             
            }
         | 
| 424 423 |  | 
| 425 424 | 
             
            /* If obj is MPFR instance, then this method returns obj. */
         | 
| @@ -721,7 +720,9 @@ static VALUE r_mpfr_to_strf(VALUE self, VALUE format_str) | |
| 721 720 | 
             
              r_mpfr_get_struct(ptr_self, self);
         | 
| 722 721 | 
             
              char *format = StringValuePtr(format_str);
         | 
| 723 722 | 
             
              char *ret_str;
         | 
| 724 | 
            -
              mpfr_asprintf(&ret_str, format, ptr_self) | 
| 723 | 
            +
              if (!mpfr_asprintf(&ret_str, format, ptr_self)) {
         | 
| 724 | 
            +
                rb_raise(rb_eFatal, "Can not allocate a string by mpfr_asprintf.");
         | 
| 725 | 
            +
              }
         | 
| 725 726 | 
             
              VALUE ret_val = rb_str_new2(ret_str);
         | 
| 726 727 | 
             
              mpfr_free_str(ret_str);
         | 
| 727 728 | 
             
              return ret_val;
         | 
| @@ -733,7 +734,9 @@ static VALUE r_mpfr_to_s(VALUE self) | |
| 733 734 | 
             
              MPFR *ptr_self;
         | 
| 734 735 | 
             
              r_mpfr_get_struct(ptr_self, self);
         | 
| 735 736 | 
             
              char *ret_str;
         | 
| 736 | 
            -
              mpfr_asprintf(&ret_str, "%.Re", ptr_self) | 
| 737 | 
            +
              if (!mpfr_asprintf(&ret_str, "%.Re", ptr_self)) {
         | 
| 738 | 
            +
                rb_raise(rb_eFatal, "Can not allocate a string by mpfr_asprintf.");
         | 
| 739 | 
            +
              }
         | 
| 737 740 | 
             
              VALUE ret_val = rb_str_new2(ret_str);
         | 
| 738 741 | 
             
              mpfr_free_str(ret_str);
         | 
| 739 742 | 
             
              return ret_val;
         | 
| @@ -745,7 +748,10 @@ static VALUE r_mpfr_inspect(VALUE self) | |
| 745 748 | 
             
              MPFR *ptr_s;
         | 
| 746 749 | 
             
              r_mpfr_get_struct(ptr_s, self);
         | 
| 747 750 | 
             
              char *ret_str;
         | 
| 748 | 
            -
              mpfr_asprintf(&ret_str, "#<MPFR:%lx,'%0.Re',%d>", NUM2LONG(rb_funcall(self, object_id, 0)), | 
| 751 | 
            +
              if (!mpfr_asprintf(&ret_str, "#<MPFR:%lx,'%0.Re',%d>", NUM2LONG(rb_funcall(self, object_id, 0)),
         | 
| 752 | 
            +
            		     ptr_s, mpfr_get_prec(ptr_s))) {
         | 
| 753 | 
            +
                rb_raise(rb_eFatal, "Can not allocate a string by mpfr_asprintf.");
         | 
| 754 | 
            +
              }
         | 
| 749 755 | 
             
              VALUE ret_val = rb_str_new2(ret_str);
         | 
| 750 756 | 
             
              mpfr_free_str(ret_str);
         | 
| 751 757 | 
             
              return ret_val;
         | 
| @@ -2761,17 +2767,17 @@ static VALUE r_mpfr_buildopt_decimal_p(VALUE self) | |
| 2761 2767 | 
             
              return mpfr_buildopt_decimal_p() == 0 ? Qnil : Qtrue;
         | 
| 2762 2768 | 
             
            }
         | 
| 2763 2769 |  | 
| 2764 | 
            -
             | 
| 2770 | 
            +
            char *r_mpfr_dump_to_string(MPFR *ptr_s)
         | 
| 2765 2771 | 
             
            {
         | 
| 2766 | 
            -
              MPFR *ptr_s;
         | 
| 2767 | 
            -
              r_mpfr_get_struct(ptr_s, self);
         | 
| 2768 2772 | 
             
              char *ret_str;
         | 
| 2769 2773 | 
             
              if (mpfr_regular_p(ptr_s)) {
         | 
| 2770 2774 | 
             
                mpz_t m;
         | 
| 2771 2775 | 
             
                mp_exp_t e;
         | 
| 2772 2776 | 
             
                mpz_init(m);
         | 
| 2773 2777 | 
             
                e = mpfr_get_z_2exp(m, ptr_s);
         | 
| 2774 | 
            -
                mpfr_asprintf(&ret_str, "%c%ld\t%ld\t%Zd", MPFR_DUMP_NUMBER, mpfr_get_prec(ptr_s), (long int)e, m) | 
| 2778 | 
            +
                if (!mpfr_asprintf(&ret_str, "%c%ld\t%ld\t%Zd", MPFR_DUMP_NUMBER, mpfr_get_prec(ptr_s), (long int)e, m)) {
         | 
| 2779 | 
            +
                  rb_raise(rb_eFatal, "Can not allocate a string by mpfr_asprintf.");
         | 
| 2780 | 
            +
                }
         | 
| 2775 2781 | 
             
                mpz_clear(m);
         | 
| 2776 2782 | 
             
              } else {
         | 
| 2777 2783 | 
             
                char type;
         | 
| @@ -2788,21 +2794,27 @@ static VALUE r_mpfr_marshal_dump(VALUE self) | |
| 2788 2794 | 
             
                } else {
         | 
| 2789 2795 | 
             
                  type = MPFR_DUMP_MINF;
         | 
| 2790 2796 | 
             
                }
         | 
| 2791 | 
            -
                mpfr_asprintf(&ret_str, "%c%ld", type, mpfr_get_prec(ptr_s)) | 
| 2797 | 
            +
                if (!mpfr_asprintf(&ret_str, "%c%ld", type, mpfr_get_prec(ptr_s))) {
         | 
| 2798 | 
            +
                  rb_raise(rb_eFatal, "Can not allocate a string by mpfr_asprintf.");
         | 
| 2799 | 
            +
                }
         | 
| 2792 2800 | 
             
              }
         | 
| 2801 | 
            +
              return ret_str;
         | 
| 2802 | 
            +
            }
         | 
| 2803 | 
            +
             | 
| 2804 | 
            +
            static VALUE r_mpfr_marshal_dump(VALUE self)
         | 
| 2805 | 
            +
            {
         | 
| 2806 | 
            +
              MPFR *ptr_s;
         | 
| 2807 | 
            +
              r_mpfr_get_struct(ptr_s, self);
         | 
| 2808 | 
            +
              char *ret_str = r_mpfr_dump_to_string(ptr_s);
         | 
| 2793 2809 | 
             
              VALUE ret_val = rb_str_new2(ret_str);
         | 
| 2794 2810 | 
             
              mpfr_free_str(ret_str);
         | 
| 2795 2811 | 
             
              return ret_val;
         | 
| 2796 2812 | 
             
            }
         | 
| 2797 2813 |  | 
| 2798 | 
            -
             | 
| 2814 | 
            +
            void r_mpfr_load_string(MPFR *ptr_s, const char *dump)
         | 
| 2799 2815 | 
             
            {
         | 
| 2800 2816 | 
             
              long int prec;
         | 
| 2801 | 
            -
               | 
| 2802 | 
            -
              r_mpfr_get_struct(ptr_s, self);
         | 
| 2803 | 
            -
              Check_Type(dump_string, T_STRING);
         | 
| 2804 | 
            -
              char *dump, type;
         | 
| 2805 | 
            -
              dump = RSTRING_PTR(dump_string);
         | 
| 2817 | 
            +
              char type;
         | 
| 2806 2818 | 
             
              type = dump[0];
         | 
| 2807 2819 | 
             
              dump++;
         | 
| 2808 2820 | 
             
              if (type == MPFR_DUMP_NUMBER) {
         | 
| @@ -2839,6 +2851,14 @@ static VALUE r_mpfr_marshal_load(VALUE self, VALUE dump_string) | |
| 2839 2851 | 
             
                  rb_raise(rb_eArgError, "Invalid dumped data for marshal_load.");
         | 
| 2840 2852 | 
             
                }
         | 
| 2841 2853 | 
             
              }
         | 
| 2854 | 
            +
            }
         | 
| 2855 | 
            +
             | 
| 2856 | 
            +
            static VALUE r_mpfr_marshal_load(VALUE self, VALUE dump_string)
         | 
| 2857 | 
            +
            {
         | 
| 2858 | 
            +
              MPFR *ptr_s;
         | 
| 2859 | 
            +
              r_mpfr_get_struct(ptr_s, self);
         | 
| 2860 | 
            +
              Check_Type(dump_string, T_STRING);
         | 
| 2861 | 
            +
              r_mpfr_load_string(ptr_s, RSTRING_PTR(dump_string));
         | 
| 2842 2862 | 
             
              return self;
         | 
| 2843 2863 | 
             
            }
         | 
| 2844 2864 |  | 
    
        data/ext/mpfr/ruby_mpfr.h
    CHANGED
    
    | @@ -37,5 +37,8 @@ mp_rnd_t r_mpfr_rnd_from_optional_argument(int min, int max, int argc, VALUE *ar | |
| 37 37 | 
             
            mp_rnd_t r_mpfr_prec_from_optional_argument(int min, int max, int argc, VALUE *argv);
         | 
| 38 38 | 
             
            void r_mpfr_get_rnd_prec_from_optional_arguments(mp_rnd_t *rnd, mp_prec_t *prec, int min, int max, int argc, VALUE *argv);
         | 
| 39 39 |  | 
| 40 | 
            +
            char *r_mpfr_dump_to_string(MPFR *ptr_s);
         | 
| 41 | 
            +
            void r_mpfr_load_string(MPFR *ptr_s, const char *dump);
         | 
| 42 | 
            +
             | 
| 40 43 | 
             
            #endif /* _RUBY_MPFR_H_ */
         | 
| 41 44 |  | 
| @@ -1,5 +1,19 @@ | |
| 1 1 | 
             
            require 'mkmf'
         | 
| 2 2 |  | 
| 3 | 
            +
            i = 0
         | 
| 4 | 
            +
            while i < ARGV.size
         | 
| 5 | 
            +
              case ARGV[i]
         | 
| 6 | 
            +
              when '--ldflags'
         | 
| 7 | 
            +
                if args = ARGV[i+1]
         | 
| 8 | 
            +
                  i += 1
         | 
| 9 | 
            +
                  $LDFLAGS += " #{args}"
         | 
| 10 | 
            +
                end
         | 
| 11 | 
            +
              else
         | 
| 12 | 
            +
                raise "Invalid option: #{ARGV[i]}"
         | 
| 13 | 
            +
              end
         | 
| 14 | 
            +
              i += 1
         | 
| 15 | 
            +
            end
         | 
| 16 | 
            +
             | 
| 3 17 | 
             
            $CFLAGS += " -Wall"
         | 
| 4 18 |  | 
| 5 19 | 
             
            REQUIRE_VERSION = 3
         | 
| @@ -30,11 +30,15 @@ VALUE r_mpfr_make_new_fr_obj(MPFR *ptr); | |
| 30 30 | 
             
            VALUE r_mpfr_make_new_fr_obj2(MPFR *ptr, int prec);
         | 
| 31 31 | 
             
            VALUE r_mpfr_new_fr_obj(VALUE obj);
         | 
| 32 32 | 
             
            void r_mpfr_set_robj(MPFR *ptr, VALUE obj, mp_rnd_t rnd);
         | 
| 33 | 
            +
            VALUE r_mpfr_robj_to_mpfr(VALUE obj, int argc, VALUE *argv);
         | 
| 33 34 |  | 
| 34 35 | 
             
            mp_rnd_t r_mpfr_rnd_from_value(VALUE rnd);
         | 
| 35 36 | 
             
            mp_rnd_t r_mpfr_rnd_from_optional_argument(int min, int max, int argc, VALUE *argv);
         | 
| 36 37 | 
             
            mp_rnd_t r_mpfr_prec_from_optional_argument(int min, int max, int argc, VALUE *argv);
         | 
| 37 38 | 
             
            void r_mpfr_get_rnd_prec_from_optional_arguments(mp_rnd_t *rnd, mp_prec_t *prec, int min, int max, int argc, VALUE *argv);
         | 
| 38 39 |  | 
| 40 | 
            +
            char *r_mpfr_dump_to_string(MPFR *ptr_s);
         | 
| 41 | 
            +
            void r_mpfr_load_string(MPFR *ptr_s, const char *dump);
         | 
| 42 | 
            +
             | 
| 39 43 | 
             
            #endif /* _RUBY_MPFR_H_ */
         | 
| 40 44 |  | 
| @@ -196,43 +196,19 @@ static VALUE r_mpfr_matrix_marshal_dump(VALUE self) | |
| 196 196 | 
             
            {
         | 
| 197 197 | 
             
              MPFRMatrix *ptr;
         | 
| 198 198 | 
             
              r_mpfr_get_matrix_struct(ptr, self);
         | 
| 199 | 
            -
              mpz_t m;
         | 
| 200 | 
            -
              mp_exp_t e;
         | 
| 201 | 
            -
              mpz_init(m);
         | 
| 202 199 | 
             
              int i;
         | 
| 203 | 
            -
               | 
| 204 | 
            -
              char *tmp_str, type;
         | 
| 200 | 
            +
              char *tmp_str;
         | 
| 205 201 | 
             
              VALUE ret_ary;
         | 
| 206 202 | 
             
              ret_ary = rb_ary_new();
         | 
| 207 203 | 
             
              rb_ary_push(ret_ary, INT2FIX(ptr->row));
         | 
| 208 204 | 
             
              rb_ary_push(ret_ary, INT2FIX(ptr->column));
         | 
| 209 205 |  | 
| 210 206 | 
             
              for (i = 0; i < ptr->size; i++) {
         | 
| 211 | 
            -
                 | 
| 212 | 
            -
                if (mpfr_regular_p(ptr_el)) {
         | 
| 213 | 
            -
                  e = mpfr_get_z_2exp(m, ptr_el);
         | 
| 214 | 
            -
                  mpfr_asprintf(&tmp_str, "%c%ld\t%ld\t%Zd", MPFR_DUMP_NUMBER, mpfr_get_prec(ptr_el), (long int)e, m);
         | 
| 215 | 
            -
                } else {
         | 
| 216 | 
            -
                  if (mpfr_zero_p(ptr_el)) {
         | 
| 217 | 
            -
            	if (mpfr_sgn(ptr_el) >= 0) {
         | 
| 218 | 
            -
            	  type = MPFR_DUMP_PZERO;
         | 
| 219 | 
            -
            	} else {
         | 
| 220 | 
            -
            	  type = MPFR_DUMP_MZERO;
         | 
| 221 | 
            -
            	}
         | 
| 222 | 
            -
                  } else if (mpfr_nan_p(ptr_el)) {
         | 
| 223 | 
            -
            	type = MPFR_DUMP_NAN;
         | 
| 224 | 
            -
                  } else if (mpfr_sgn(ptr_el) >= 0) {
         | 
| 225 | 
            -
            	type = MPFR_DUMP_PINF;
         | 
| 226 | 
            -
                  } else {
         | 
| 227 | 
            -
            	type = MPFR_DUMP_MINF;
         | 
| 228 | 
            -
                  }
         | 
| 229 | 
            -
                  mpfr_asprintf(&tmp_str, "%c%ld", type, mpfr_get_prec(ptr_el));
         | 
| 230 | 
            -
                }
         | 
| 207 | 
            +
                tmp_str = r_mpfr_dump_to_string(ptr->data + i);
         | 
| 231 208 | 
             
                rb_ary_push(ret_ary, rb_str_new2(tmp_str));
         | 
| 232 209 | 
             
                mpfr_free_str(tmp_str);
         | 
| 233 210 | 
             
              }
         | 
| 234 211 |  | 
| 235 | 
            -
              mpz_clear(m);
         | 
| 236 212 | 
             
              return ret_ary;
         | 
| 237 213 | 
             
            }
         | 
| 238 214 |  | 
| @@ -245,51 +221,15 @@ static VALUE r_mpfr_matrix_marshal_load(VALUE self, VALUE dump_ary) | |
| 245 221 | 
             
              ptr->column = NUM2INT(rb_ary_entry(dump_ary, 1));
         | 
| 246 222 | 
             
              ptr->size = ptr->row * ptr->column;
         | 
| 247 223 | 
             
              ptr->data = ALLOC_N(MPFR, ptr->size);
         | 
| 248 | 
            -
              int i | 
| 249 | 
            -
               | 
| 250 | 
            -
              MPFR *ptr_el;
         | 
| 251 | 
            -
              char *dump, type;
         | 
| 224 | 
            +
              int i;
         | 
| 225 | 
            +
              char *dump;
         | 
| 252 226 | 
             
              VALUE dump_element;
         | 
| 253 | 
            -
              mpz_t m;
         | 
| 254 227 |  | 
| 255 228 | 
             
              for(i = 0; i < ptr->size; i++){
         | 
| 256 229 | 
             
                dump_element = rb_ary_entry(dump_ary, i + 2);
         | 
| 257 | 
            -
                ptr_el = ptr->data + i;
         | 
| 258 230 | 
             
                Check_Type(dump_element, T_STRING);
         | 
| 259 231 | 
             
                dump = RSTRING_PTR(dump_element);
         | 
| 260 | 
            -
                 | 
| 261 | 
            -
                dump++;
         | 
| 262 | 
            -
                if (type == MPFR_DUMP_NUMBER) {
         | 
| 263 | 
            -
                  mpz_init(m);
         | 
| 264 | 
            -
                  sscanf(dump, "%ld\t%ld\t", &prec, &e);
         | 
| 265 | 
            -
                  j = 0;
         | 
| 266 | 
            -
                  while (j < 2) {
         | 
| 267 | 
            -
            	if (dump[0] == '\t') {
         | 
| 268 | 
            -
            	  j++;
         | 
| 269 | 
            -
            	}
         | 
| 270 | 
            -
            	dump++;
         | 
| 271 | 
            -
                  }
         | 
| 272 | 
            -
                  mpz_set_str(m, dump, 10);
         | 
| 273 | 
            -
                  mpfr_init2(ptr_el, prec);
         | 
| 274 | 
            -
                  mpfr_set_z_2exp(ptr_el, m, e, MPFR_RNDN);
         | 
| 275 | 
            -
                  mpz_clear(m);
         | 
| 276 | 
            -
                } else {
         | 
| 277 | 
            -
                  sscanf(dump, "%ld", &prec);
         | 
| 278 | 
            -
                  mpfr_init2(ptr_el, prec);
         | 
| 279 | 
            -
                  if (type == MPFR_DUMP_PZERO) {
         | 
| 280 | 
            -
            	mpfr_set_zero(ptr_el, +1);
         | 
| 281 | 
            -
                  } else if (type == MPFR_DUMP_MZERO){
         | 
| 282 | 
            -
            	mpfr_set_zero(ptr_el, -1);
         | 
| 283 | 
            -
                  } else if (type == MPFR_DUMP_NAN) {
         | 
| 284 | 
            -
            	mpfr_set_nan(ptr_el);
         | 
| 285 | 
            -
                  } else if (type == MPFR_DUMP_PINF) {
         | 
| 286 | 
            -
            	mpfr_set_inf(ptr_el, +1);
         | 
| 287 | 
            -
                  } else if (type == MPFR_DUMP_MINF) {
         | 
| 288 | 
            -
            	mpfr_set_inf(ptr_el, -1);
         | 
| 289 | 
            -
                  } else {
         | 
| 290 | 
            -
            	rb_raise(rb_eArgError, "Invalid dumped data for marshal_load.");
         | 
| 291 | 
            -
                  }
         | 
| 292 | 
            -
                }
         | 
| 232 | 
            +
                r_mpfr_load_string(ptr->data + i, dump);
         | 
| 293 233 | 
             
              }
         | 
| 294 234 | 
             
              return self;
         | 
| 295 235 | 
             
            }
         | 
| @@ -521,7 +461,9 @@ static VALUE r_mpfr_matrix_str_ary(VALUE self, VALUE format_str) | |
| 521 461 | 
             
              VALUE ret_val[ptr_self->size];
         | 
| 522 462 | 
             
              int i;
         | 
| 523 463 | 
             
              for (i = 0; i < ptr_self->size; i++) {
         | 
| 524 | 
            -
                mpfr_asprintf(&tmp_str, format, ptr_self->data + i) | 
| 464 | 
            +
                if (!mpfr_asprintf(&tmp_str, format, ptr_self->data + i)) {
         | 
| 465 | 
            +
                  rb_raise(rb_eFatal, "Can not allocate a string by mpfr_asprintf.");
         | 
| 466 | 
            +
                }
         | 
| 525 467 | 
             
                ret_val[i] = rb_str_new2(tmp_str);
         | 
| 526 468 | 
             
                mpfr_free_str(tmp_str);
         | 
| 527 469 | 
             
              }
         | 
| @@ -541,7 +483,9 @@ static VALUE r_mpfr_matrix_str_ary2(VALUE self, VALUE format_str) | |
| 541 483 | 
             
              }
         | 
| 542 484 | 
             
              for (i = 0; i < ptr_self->size; i += ptr_self->row) {
         | 
| 543 485 | 
             
                for (j = 0; j < ptr_self->row; j++) {
         | 
| 544 | 
            -
                  mpfr_asprintf(&tmp_str, format, ptr_self->data + i + j) | 
| 486 | 
            +
                  if (!mpfr_asprintf(&tmp_str, format, ptr_self->data + i + j)) {
         | 
| 487 | 
            +
            	rb_raise(rb_eFatal, "Can not allocate a string by mpfr_asprintf.");
         | 
| 488 | 
            +
                  }
         | 
| 545 489 | 
             
                  rb_ary_push(ary[j], rb_str_new2(tmp_str));
         | 
| 546 490 | 
             
                  mpfr_free_str(tmp_str);
         | 
| 547 491 | 
             
                }
         | 
    
        data/lib/mpfr/version.rb
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            RUBY_MPFR_VERSION = '0.0. | 
| 1 | 
            +
            RUBY_MPFR_VERSION = '0.0.11'
         | 
    
        data/spec/mpfr/allocate_spec.rb
    CHANGED
    
    | @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            require File.expand_path(File.dirname(__FILE__)) + '/spec_helper.rb'
         | 
| 2 2 |  | 
| 3 | 
            -
            describe MPFR, 'when allocating objects from  | 
| 3 | 
            +
            describe MPFR, 'when allocating objects from numbers' do
         | 
| 4 4 | 
             
              it "should equal bignum" do
         | 
| 5 5 | 
             
                MPFR.set_default_prec(100)
         | 
| 6 6 | 
             
                num = 1
         | 
| @@ -23,6 +23,17 @@ describe MPFR, 'when allocating objects from integer' do | |
| 23 23 |  | 
| 24 24 | 
             
              end
         | 
| 25 25 |  | 
| 26 | 
            +
              it "should equal float" do
         | 
| 27 | 
            +
                MPFR.set_default_prec(256)
         | 
| 28 | 
            +
                error = MPFR.new('1.0e-10')
         | 
| 29 | 
            +
                GenerateNumber.float(100) do |f|
         | 
| 30 | 
            +
                  MPFR.new(f).should == f
         | 
| 31 | 
            +
                end
         | 
| 32 | 
            +
              end
         | 
| 33 | 
            +
             | 
| 34 | 
            +
            end
         | 
| 35 | 
            +
             | 
| 36 | 
            +
            describe MPFR, 'when allocating from objects that is not numbers' do
         | 
| 26 37 | 
             
              it "should allocate from string" do
         | 
| 27 38 | 
             
                MPFR.set_default_prec(53)
         | 
| 28 39 | 
             
                for i in 0..1000
         | 
| @@ -30,14 +41,15 @@ describe MPFR, 'when allocating objects from integer' do | |
| 30 41 | 
             
                end
         | 
| 31 42 | 
             
              end
         | 
| 32 43 |  | 
| 33 | 
            -
              it "should  | 
| 34 | 
            -
                MPFR. | 
| 35 | 
            -
                 | 
| 36 | 
            -
                 | 
| 37 | 
            -
             | 
| 38 | 
            -
                end
         | 
| 44 | 
            +
              it "should raise error" do
         | 
| 45 | 
            +
                lambda { MPFR.new(nil) }.should raise_error
         | 
| 46 | 
            +
                lambda { MPFR.new(false) }.should raise_error
         | 
| 47 | 
            +
                lambda { MPFR.new([]) }.should raise_error
         | 
| 48 | 
            +
                lambda { MPFR.new(:sym) }.should raise_error
         | 
| 39 49 | 
             
              end
         | 
| 50 | 
            +
            end
         | 
| 40 51 |  | 
| 52 | 
            +
            describe MPFR, 'when creating new objects' do
         | 
| 41 53 | 
             
              it "should duplicate" do
         | 
| 42 54 | 
             
                MPFR.set_default_prec(141)
         | 
| 43 55 | 
             
                for i in 0..1000
         | 
| @@ -68,6 +80,4 @@ describe MPFR, 'when allocating objects from integer' do | |
| 68 80 | 
             
                  b.should == c
         | 
| 69 81 | 
             
                end
         | 
| 70 82 | 
             
              end
         | 
| 71 | 
            -
              
         | 
| 72 83 | 
             
            end
         | 
| 73 | 
            -
             | 
    
        metadata
    CHANGED
    
    | @@ -1,12 +1,8 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification 
         | 
| 2 2 | 
             
            name: ruby-mpfr
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version 
         | 
| 4 | 
            -
              prerelease:  | 
| 5 | 
            -
               | 
| 6 | 
            -
              - 0
         | 
| 7 | 
            -
              - 0
         | 
| 8 | 
            -
              - 10
         | 
| 9 | 
            -
              version: 0.0.10
         | 
| 4 | 
            +
              prerelease: 
         | 
| 5 | 
            +
              version: 0.0.11
         | 
| 10 6 | 
             
            platform: ruby
         | 
| 11 7 | 
             
            authors: 
         | 
| 12 8 | 
             
            - Takayuki YAMAGUCHI
         | 
| @@ -14,39 +10,20 @@ autorequire: | |
| 14 10 | 
             
            bindir: bin
         | 
| 15 11 | 
             
            cert_chain: []
         | 
| 16 12 |  | 
| 17 | 
            -
            date:  | 
| 13 | 
            +
            date: 2011-02-26 00:00:00 +09:00
         | 
| 18 14 | 
             
            default_executable: 
         | 
| 19 15 | 
             
            dependencies: 
         | 
| 20 16 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| 21 | 
            -
              name:  | 
| 17 | 
            +
              name: hoe
         | 
| 22 18 | 
             
              prerelease: false
         | 
| 23 19 | 
             
              requirement: &id001 !ruby/object:Gem::Requirement 
         | 
| 24 20 | 
             
                none: false
         | 
| 25 21 | 
             
                requirements: 
         | 
| 26 22 | 
             
                - - ">="
         | 
| 27 23 | 
             
                  - !ruby/object:Gem::Version 
         | 
| 28 | 
            -
                     | 
| 29 | 
            -
                    - 2
         | 
| 30 | 
            -
                    - 0
         | 
| 31 | 
            -
                    - 4
         | 
| 32 | 
            -
                    version: 2.0.4
         | 
| 24 | 
            +
                    version: 2.9.1
         | 
| 33 25 | 
             
              type: :development
         | 
| 34 26 | 
             
              version_requirements: *id001
         | 
| 35 | 
            -
            - !ruby/object:Gem::Dependency 
         | 
| 36 | 
            -
              name: hoe
         | 
| 37 | 
            -
              prerelease: false
         | 
| 38 | 
            -
              requirement: &id002 !ruby/object:Gem::Requirement 
         | 
| 39 | 
            -
                none: false
         | 
| 40 | 
            -
                requirements: 
         | 
| 41 | 
            -
                - - ">="
         | 
| 42 | 
            -
                  - !ruby/object:Gem::Version 
         | 
| 43 | 
            -
                    segments: 
         | 
| 44 | 
            -
                    - 2
         | 
| 45 | 
            -
                    - 7
         | 
| 46 | 
            -
                    - 0
         | 
| 47 | 
            -
                    version: 2.7.0
         | 
| 48 | 
            -
              type: :development
         | 
| 49 | 
            -
              version_requirements: *id002
         | 
| 50 27 | 
             
            description: |-
         | 
| 51 28 | 
             
              ruby-mpfr is a library to use MPFR[http://www.mpfr.org/] which is a C library for
         | 
| 52 29 | 
             
              multiple-precision floating-point computations.
         | 
| @@ -127,6 +104,7 @@ files: | |
| 127 104 | 
             
            - spec/mpfr_matrix/mpfr_square_matrix_spec.rb
         | 
| 128 105 | 
             
            - spec/mpfr_matrix/spec_helper.rb
         | 
| 129 106 | 
             
            - tasks/extconf.rake
         | 
| 107 | 
            +
            - .gemtest
         | 
| 130 108 | 
             
            has_rdoc: true
         | 
| 131 109 | 
             
            homepage: http://rubyforge.org/projects/ruby-mpfr/
         | 
| 132 110 | 
             
            licenses: []
         | 
| @@ -142,21 +120,17 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 142 120 | 
             
              requirements: 
         | 
| 143 121 | 
             
              - - ">="
         | 
| 144 122 | 
             
                - !ruby/object:Gem::Version 
         | 
| 145 | 
            -
                  segments: 
         | 
| 146 | 
            -
                  - 0
         | 
| 147 123 | 
             
                  version: "0"
         | 
| 148 124 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement 
         | 
| 149 125 | 
             
              none: false
         | 
| 150 126 | 
             
              requirements: 
         | 
| 151 127 | 
             
              - - ">="
         | 
| 152 128 | 
             
                - !ruby/object:Gem::Version 
         | 
| 153 | 
            -
                  segments: 
         | 
| 154 | 
            -
                  - 0
         | 
| 155 129 | 
             
                  version: "0"
         | 
| 156 130 | 
             
            requirements: []
         | 
| 157 131 |  | 
| 158 132 | 
             
            rubyforge_project: ruby-mpfr
         | 
| 159 | 
            -
            rubygems_version: 1. | 
| 133 | 
            +
            rubygems_version: 1.5.2
         | 
| 160 134 | 
             
            signing_key: 
         | 
| 161 135 | 
             
            specification_version: 3
         | 
| 162 136 | 
             
            summary: ruby-mpfr is a library to use MPFR[http://www.mpfr.org/] which is a C library for multiple-precision floating-point computations
         |