vdsp 1.9.0 → 1.10.0

Sign up to get free protection for your applications and to get access to all the features.
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