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