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.
- data/ext/mpc.c +32 -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
|
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
|
-
|
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.
|
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
|