vdsp 1.9.0 → 1.10.0

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 (4) hide show
  1. checksums.yaml +4 -4
  2. data/ext/vdsp/vdsp.c +35 -1
  3. data/lib/vdsp/version.rb +1 -1
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5c68d2c6fcfd278007d16c59196ef9bc72c6f43119db2a3018230c3f18e16653
4
- data.tar.gz: cab3b5e5630378581854a1a5e86b1d1bacb2ba9fb17fb5514cced0027d518085
3
+ metadata.gz: 7cd18e0b6e9eef27106756446b21cadd2e1cb8f2a2bfada08e4651aab9c6fd34
4
+ data.tar.gz: 6576aa464cdaaace4c13a6bab237c7dd36f2f057955527c995d723bb7ac86f6a
5
5
  SHA512:
6
- metadata.gz: ee4fc1111d826dbc9a8e7cae82700f69fb692c6e06a3ca6cd0e5fa46eca99f9fbc119742f9ebdeacc725b755980c0d55d40789555f7e4c8e78b30af226f4f8e0
7
- data.tar.gz: '08c66b9d34da6f64c4e7138ca883dc8fc76ec286cd4d84f0bd323fe4867d179d9434b7f94cff1dfbe50601395be7e3186757a79cf456ebd33f427e7df413b0f0'
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
- memmove(_a->v.d+beg+_b->length, _a->v.d+beg+len, sizeof(double) * (alen-beg-len));
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
@@ -1,3 +1,3 @@
1
1
  module Vdsp
2
- VERSION = "1.9.0"
2
+ VERSION = "1.10.0"
3
3
  end
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.9.0
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-16 00:00:00.000000000 Z
11
+ date: 2019-10-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler