gnu_mpc 0.8.1 → 0.8.2

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.
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