gnu_mpc 0.8.1 → 0.8.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/ext/mpc.c +32 -2
  2. metadata +18 -2
data/ext/mpc.c CHANGED
@@ -769,7 +769,7 @@ VALUE r_mpc_mul(int argc, VALUE *argv, VALUE self_val)
769
769
  {
770
770
  MP_COMPLEX *self;
771
771
  VALUE rnd_mode_val;
772
- VALUE res_real_prec_val, res_imag_prec_val;
772
+ VALUE res_real_prec_val, res_imag_prec_val;
773
773
  VALUE arg_val;
774
774
 
775
775
  mpfr_prec_t real_prec, imag_prec;
@@ -850,6 +850,36 @@ VALUE r_mpc_mul_do_the_work(VALUE self_val, VALUE arg_val, mpc_rnd_t rnd_mode, m
850
850
  return res_val;
851
851
  }
852
852
 
853
+ VALUE r_mpc_mul_i(int argc, VALUE *argv, VALUE self_val)
854
+ {
855
+ MP_COMPLEX *self, *res;
856
+ VALUE rnd_mode_val;
857
+ VALUE res_real_prec_val, res_imag_prec_val;
858
+ VALUE sign_val, res_val;
859
+
860
+ mpfr_prec_t real_prec, imag_prec;
861
+ mpfr_prec_t res_real_prec, res_imag_prec;
862
+ mpc_rnd_t rnd_mode;
863
+
864
+ mpc_get_struct(self_val,self);
865
+ real_prec = mpfr_get_prec(mpc_realref(self));
866
+ imag_prec = mpfr_get_prec(mpc_imagref(self));
867
+
868
+ rb_scan_args (argc, argv, "13", &sign_val, &rnd_mode_val, &res_real_prec_val, &res_imag_prec_val);
869
+
870
+ r_mpc_set_default_args (rnd_mode_val, res_real_prec_val, res_imag_prec_val,
871
+ &rnd_mode, &res_real_prec, &res_imag_prec,
872
+ real_prec, imag_prec);
873
+
874
+ if (! FIXNUM_P (sign_val))
875
+ typeerror(X);
876
+
877
+ mpc_make_struct_init3 (res_val, res, res_real_prec, res_imag_prec);
878
+ mpc_mul_i (res, self, FIX2INT(sign_val), rnd_mode);
879
+
880
+ return res_val;
881
+ }
882
+
853
883
  VALUE r_mpc_div_do_the_work(VALUE self_val, VALUE arg_val, mpc_rnd_t rnd_mode, mpfr_prec_t res_real_prec, mpfr_prec_t res_imag_prec);
854
884
  VALUE r_mpc_div(int argc, VALUE *argv, VALUE self_val)
855
885
  {
@@ -1088,7 +1118,7 @@ void Init_mpc() {
1088
1118
  rb_define_method (cMPC, "-@", r_mpc_neg2, 0);
1089
1119
  rb_define_method (cMPC, "mul", r_mpc_mul, -1);
1090
1120
  rb_define_method (cMPC, "*", r_mpc_mul2, 1);
1091
- // TODO rb_define_method (cMPC, "mul_i", r_mpc_mul_i, -1);
1121
+ rb_define_method (cMPC, "mul_i", r_mpc_mul_i, -1);
1092
1122
  rb_define_method (cMPC, "sqr", r_mpc_sqr, -1);
1093
1123
  // TODO rb_define_method (cMPC, "fma", r_mpc_fma, 2);
1094
1124
  rb_define_method (cMPC, "div", r_mpc_div, -1);
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gnu_mpc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.1
4
+ version: 0.8.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,23 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
  date: 2012-10-26 00:00:00.000000000 Z
13
- dependencies: []
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: gmp
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 0.5.47
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 0.5.47
14
30
  description: gnu_mpc - providing Ruby bindings to the MPC library.
15
31
  email:
16
32
  - sam.rawlins@gmail.com