vdsp 1.9.0 → 1.10.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ext/vdsp/vdsp.c +35 -1
- data/lib/vdsp/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7cd18e0b6e9eef27106756446b21cadd2e1cb8f2a2bfada08e4651aab9c6fd34
|
4
|
+
data.tar.gz: 6576aa464cdaaace4c13a6bab237c7dd36f2f057955527c995d723bb7ac86f6a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c60da222d0d562ed6b093af5a07888bd528157c742c9402b0b9563c1061af21f1a9a5f0d34b39d084365348e9ff190b2590f6a80652bc247b4264dfba69354a1
|
7
|
+
data.tar.gz: 4747c95fc60e550c82590ff00a0fe2990ae095226cbb0ff298bab037fdf2b06aaf7d0502ade4d46092e4d1c2aab074df8b780a7c6df15800c6063e4eb1cd9924
|
data/ext/vdsp/vdsp.c
CHANGED
@@ -524,7 +524,9 @@ VALUE double_array_aset2(VALUE self, long beg, long len, VALUE val)
|
|
524
524
|
long new_len = alen - len + _b->length;
|
525
525
|
|
526
526
|
bool after_resize = false;
|
527
|
+
bool rear_move = true;
|
527
528
|
if (alen==new_len) {
|
529
|
+
rear_move = false;
|
528
530
|
} else if (alen<new_len) {
|
529
531
|
double_array_resize(_a, new_len);
|
530
532
|
_a->length = new_len;
|
@@ -532,7 +534,9 @@ VALUE double_array_aset2(VALUE self, long beg, long len, VALUE val)
|
|
532
534
|
after_resize = true;
|
533
535
|
}
|
534
536
|
|
535
|
-
|
537
|
+
if (rear_move) {
|
538
|
+
memmove(_a->v.d+beg+_b->length, _a->v.d+beg+len, sizeof(double) * (alen-beg-len));
|
539
|
+
}
|
536
540
|
memcpy(_a->v.d+beg, _b->v.d, sizeof(double) * _b->length);
|
537
541
|
|
538
542
|
if (after_resize) {
|
@@ -1076,6 +1080,35 @@ VALUE rb_double_biquad_apply(VALUE self, VALUE x)
|
|
1076
1080
|
|
1077
1081
|
// Vdsp static method
|
1078
1082
|
|
1083
|
+
// c[i] = a[i]
|
1084
|
+
VALUE rb_double_copy(
|
1085
|
+
VALUE cls,
|
1086
|
+
VALUE a, VALUE a_offset, VALUE a_stride,
|
1087
|
+
VALUE c, VALUE c_offset, VALUE c_stride,
|
1088
|
+
VALUE n)
|
1089
|
+
{
|
1090
|
+
VdspArrayParam _a;
|
1091
|
+
VdspArrayParam _c;
|
1092
|
+
|
1093
|
+
array_param(&_a, a, a_offset, a_stride);
|
1094
|
+
array_param(&_c, c, c_offset, c_stride);
|
1095
|
+
|
1096
|
+
vDSP_Length _n = NUM2LONG(n);
|
1097
|
+
|
1098
|
+
if (_a.stride==1 && _c.stride==1) {
|
1099
|
+
memmove(_c.res0->v.d+_c.offset, _a.res0->v.d+_a.offset, sizeof(double) * _n);
|
1100
|
+
} else {
|
1101
|
+
double _b = 0;
|
1102
|
+
vDSP_vsaddD(
|
1103
|
+
_a.res0->v.d+_a.offset, _a.stride,
|
1104
|
+
&_b,
|
1105
|
+
_c.res0->v.d+_c.offset, _c.stride,
|
1106
|
+
_n);
|
1107
|
+
}
|
1108
|
+
|
1109
|
+
return c;
|
1110
|
+
}
|
1111
|
+
|
1079
1112
|
// c[i] = a[i] + b
|
1080
1113
|
VALUE rb_double_vsadd(
|
1081
1114
|
VALUE cls,
|
@@ -2800,6 +2833,7 @@ void Init_vdsp()
|
|
2800
2833
|
|
2801
2834
|
// Vdsp::UnsafeDouble
|
2802
2835
|
rb_mUnsafeDouble = rb_define_module_under(rb_mVdsp, "UnsafeDouble");
|
2836
|
+
rb_define_singleton_method(rb_mUnsafeDouble, "copy", rb_double_copy, 7);
|
2803
2837
|
|
2804
2838
|
// Vdsp::UnsafeDouble Vector-based Arithmetic
|
2805
2839
|
rb_define_singleton_method(rb_mUnsafeDouble, "vsadd", rb_double_vsadd, 8);
|
data/lib/vdsp/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vdsp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.10.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yoshida Tetsuya
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-10-
|
11
|
+
date: 2019-10-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|