vdsp 1.6.0 → 1.7.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 +394 -56
  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: 2358672ca07fa482ca8592ac9e49d9c4eca38b7bc2b7d3a137765032fdf4cc8b
4
- data.tar.gz: 9bc65fad63980a3fb482092feea369f89907870c46f30309cbe332f3bdf99744
3
+ metadata.gz: a7d5b3b75d47981cb01b082e4304dacee1c87426407f2220ff538cec98527aeb
4
+ data.tar.gz: '08685f5360f114c1304095d510fb99d4b38fd02bdb70a0ce56e3e7ada8fbfc5c'
5
5
  SHA512:
6
- metadata.gz: 1bf33f3a43ffcabf3407daec1184b21253085e0d1bbf665c4206546f2612ca0b8ab5e3f186c594931102d704c1475da74372efb3d6f86c171a8f3ed1a81a99a0
7
- data.tar.gz: d784d6291d25137935380e3bb719ae530482c785b471d2be91b97fe51fa2868695eb0b7b51383d8b03a2389fa1e6c1262c4f149a776d3bc7660aa77696c609e0
6
+ metadata.gz: 4bca3631c2a829a37884556680d79277eab141d9466f3423c70fd40f5b52c2aa47bbda821640eb5f93796901136c1cb5c1207509ee6e7d15c0b992b9ae3652f1
7
+ data.tar.gz: aa8eeec7c10ff2f94396d600d24dfaf0375cae2d85bfc118c7b8a46bcf4685e2ce36ba116f9682bb4a94e7f635ef9f3529a08ec29e4e118bec2fa87dc209b264
data/ext/vdsp/vdsp.c CHANGED
@@ -423,6 +423,72 @@ VALUE rb_double_array_coerce(VALUE self, VALUE other)
423
423
  return rb_assoc_new(other, self);
424
424
  }
425
425
 
426
+ VALUE rb_double_array_abs(VALUE self)
427
+ {
428
+ VdspArrayNativeResource *_a = get_vdsp_array_native_resource(self);
429
+
430
+ VALUE lenv = LONG2NUM(_a->length);
431
+ VALUE c = rb_class_new_instance(1, &lenv, rb_cDoubleArray);
432
+ VdspArrayNativeResource *_c = get_vdsp_array_native_resource(c);
433
+
434
+ vDSP_vabsD(_a->v.d, 1, _c->v.d, 1, _a->length);
435
+
436
+ return c;
437
+ }
438
+
439
+ VALUE rb_double_array_abs_bang(VALUE self)
440
+ {
441
+ VdspArrayNativeResource *_a = get_vdsp_array_native_resource(self);
442
+
443
+ vDSP_vabsD(_a->v.d, 1, _a->v.d, 1, _a->length);
444
+
445
+ return self;
446
+ }
447
+
448
+ VALUE rb_double_array_nabs(VALUE self)
449
+ {
450
+ VdspArrayNativeResource *_a = get_vdsp_array_native_resource(self);
451
+
452
+ VALUE lenv = LONG2NUM(_a->length);
453
+ VALUE c = rb_class_new_instance(1, &lenv, rb_cDoubleArray);
454
+ VdspArrayNativeResource *_c = get_vdsp_array_native_resource(c);
455
+
456
+ vDSP_vnabsD(_a->v.d, 1, _c->v.d, 1, _a->length);
457
+
458
+ return c;
459
+ }
460
+
461
+ VALUE rb_double_array_nabs_bang(VALUE self)
462
+ {
463
+ VdspArrayNativeResource *_a = get_vdsp_array_native_resource(self);
464
+
465
+ vDSP_vnabsD(_a->v.d, 1, _a->v.d, 1, _a->length);
466
+
467
+ return self;
468
+ }
469
+
470
+ VALUE rb_double_array_negative(VALUE self)
471
+ {
472
+ VdspArrayNativeResource *_a = get_vdsp_array_native_resource(self);
473
+
474
+ VALUE lenv = LONG2NUM(_a->length);
475
+ VALUE c = rb_class_new_instance(1, &lenv, rb_cDoubleArray);
476
+ VdspArrayNativeResource *_c = get_vdsp_array_native_resource(c);
477
+
478
+ vDSP_vnegD(_a->v.d, 1, _c->v.d, 1, _a->length);
479
+
480
+ return c;
481
+ }
482
+
483
+ VALUE rb_double_array_negative_bang(VALUE self)
484
+ {
485
+ VdspArrayNativeResource *_a = get_vdsp_array_native_resource(self);
486
+
487
+ vDSP_vnegD(_a->v.d, 1, _a->v.d, 1, _a->length);
488
+
489
+ return self;
490
+ }
491
+
426
492
  VALUE rb_double_array_vramp(VALUE cls, VALUE a, VALUE b, VALUE n)
427
493
  {
428
494
  double _a = NUM2DBL(a);
@@ -514,14 +580,14 @@ VALUE rb_double_array_hann_window(int argc, VALUE *argv, VALUE cls)
514
580
  return c;
515
581
  }
516
582
 
517
- VALUE rb_double_array_vclr(VALUE self)
583
+ VALUE rb_double_array_clear_bang(VALUE self)
518
584
  {
519
585
  VdspArrayNativeResource *p = get_vdsp_array_native_resource(self);
520
586
  vDSP_vclrD(p->v.d, 1, p->length);
521
587
  return self;
522
588
  }
523
589
 
524
- VALUE rb_double_array_vfill(VALUE self, VALUE a)
590
+ VALUE rb_double_array_fill_bang(VALUE self, VALUE a)
525
591
  {
526
592
  double _a = NUM2DBL(a);
527
593
  VdspArrayNativeResource *p = get_vdsp_array_native_resource(self);
@@ -792,7 +858,7 @@ VALUE rb_double_vsadd(
792
858
  double _b = NUM2DBL(b);
793
859
  array_param(&_c, c, c_offset, c_stride);
794
860
 
795
- vDSP_Stride _n = NUM2LONG(n);
861
+ vDSP_Length _n = NUM2LONG(n);
796
862
 
797
863
  vDSP_vsaddD(
798
864
  _a.res0->v.d+_a.offset, _a.stride,
@@ -819,7 +885,7 @@ VALUE rb_double_vadd(
819
885
  array_param(&_b, b, b_offset, b_stride);
820
886
  array_param(&_c, c, c_offset, c_stride);
821
887
 
822
- vDSP_Stride _n = NUM2LONG(n);
888
+ vDSP_Length _n = NUM2LONG(n);
823
889
 
824
890
  vDSP_vaddD(
825
891
  _a.res0->v.d+_a.offset, _a.stride,
@@ -845,7 +911,7 @@ VALUE rb_double_vsub(
845
911
  array_param(&_b, b, b_offset, b_stride);
846
912
  array_param(&_a, a, a_offset, a_stride);
847
913
  array_param(&_c, c, c_offset, c_stride);
848
- vDSP_Stride _n = NUM2LONG(n);
914
+ vDSP_Length _n = NUM2LONG(n);
849
915
 
850
916
  vDSP_vsubD(
851
917
  _b.res0->v.d+_b.offset, _b.stride,
@@ -871,7 +937,7 @@ VALUE rb_double_vsmul(
871
937
  double _b = NUM2DBL(b);
872
938
  array_param(&_c, c, c_offset, c_stride);
873
939
 
874
- vDSP_Stride _n = NUM2LONG(n);
940
+ vDSP_Length _n = NUM2LONG(n);
875
941
 
876
942
  vDSP_vsmulD(
877
943
  _a.res0->v.d+_a.offset, _a.stride,
@@ -898,7 +964,7 @@ VALUE rb_double_vmul(
898
964
  array_param(&_b, b, b_offset, b_stride);
899
965
  array_param(&_c, c, c_offset, c_stride);
900
966
 
901
- vDSP_Stride _n = NUM2LONG(n);
967
+ vDSP_Length _n = NUM2LONG(n);
902
968
 
903
969
  vDSP_vmulD(
904
970
  _a.res0->v.d+_a.offset, _a.stride,
@@ -924,7 +990,7 @@ VALUE rb_double_vsdiv(
924
990
  double _b = NUM2DBL(b);
925
991
  array_param(&_c, c, c_offset, c_stride);
926
992
 
927
- vDSP_Stride _n = NUM2LONG(n);
993
+ vDSP_Length _n = NUM2LONG(n);
928
994
 
929
995
  vDSP_vsdivD(
930
996
  _a.res0->v.d+_a.offset, _a.stride,
@@ -950,7 +1016,7 @@ VALUE rb_double_svdiv(
950
1016
  array_param(&_b, b, b_offset, b_stride);
951
1017
  array_param(&_c, c, c_offset, c_stride);
952
1018
 
953
- vDSP_Stride _n = NUM2LONG(n);
1019
+ vDSP_Length _n = NUM2LONG(n);
954
1020
 
955
1021
  vDSP_svdivD(
956
1022
  &_a,
@@ -981,7 +1047,7 @@ VALUE rb_double_vaddsub(
981
1047
  array_param(&_o0, o0, o0_offset, o0_stride);
982
1048
  array_param(&_o1, o1, o1_offset, o1_stride);
983
1049
 
984
- vDSP_Stride _n = NUM2LONG(n);
1050
+ vDSP_Length _n = NUM2LONG(n);
985
1051
 
986
1052
  vDSP_vaddsubD(
987
1053
  _i0.res0->v.d+_i0.offset, _i0.stride,
@@ -1009,7 +1075,7 @@ VALUE rb_double_vdiv(
1009
1075
  array_param(&_a, a, a_offset, a_stride);
1010
1076
  array_param(&_c, c, c_offset, c_stride);
1011
1077
 
1012
- vDSP_Stride _n = NUM2LONG(n);
1078
+ vDSP_Length _n = NUM2LONG(n);
1013
1079
 
1014
1080
  vDSP_vdivD(
1015
1081
  _b.res0->v.d+_b.offset, _c.stride,
@@ -1038,7 +1104,7 @@ VALUE rb_double_vasm(
1038
1104
  double _c = NUM2DBL(c);
1039
1105
  array_param(&_d, d, d_offset, d_stride);
1040
1106
 
1041
- vDSP_Stride _n = NUM2LONG(n);
1107
+ vDSP_Length _n = NUM2LONG(n);
1042
1108
 
1043
1109
  vDSP_vasmD(
1044
1110
  _a.res0->v.d+_a.offset, _a.stride,
@@ -1069,7 +1135,7 @@ VALUE rb_double_vam(
1069
1135
  array_param(&_c, c, c_offset, c_stride);
1070
1136
  array_param(&_d, d, d_offset, d_stride);
1071
1137
 
1072
- vDSP_Stride _n = NUM2LONG(n);
1138
+ vDSP_Length _n = NUM2LONG(n);
1073
1139
 
1074
1140
  vDSP_vamD(
1075
1141
  _a.res0->v.d+_a.offset, _a.stride,
@@ -1099,7 +1165,7 @@ VALUE rb_double_vsbsm(
1099
1165
  double _c = NUM2DBL(c);
1100
1166
  array_param(&_d, d, d_offset, d_stride);
1101
1167
 
1102
- vDSP_Stride _n = NUM2LONG(n);
1168
+ vDSP_Length _n = NUM2LONG(n);
1103
1169
 
1104
1170
  vDSP_vsbsmD(
1105
1171
  _a.res0->v.d+_a.offset, _a.stride,
@@ -1130,7 +1196,7 @@ VALUE rb_double_vsbm(
1130
1196
  array_param(&_c, c, c_offset, c_stride);
1131
1197
  array_param(&_d, d, d_offset, d_stride);
1132
1198
 
1133
- vDSP_Stride _n = NUM2LONG(n);
1199
+ vDSP_Length _n = NUM2LONG(n);
1134
1200
 
1135
1201
  vDSP_vsbmD(
1136
1202
  _a.res0->v.d+_a.offset, _a.stride,
@@ -1160,7 +1226,7 @@ VALUE rb_double_vmsa(
1160
1226
  double _c = NUM2DBL(c);
1161
1227
  array_param(&_d, d, d_offset, d_stride);
1162
1228
 
1163
- vDSP_Stride _n = NUM2LONG(n);
1229
+ vDSP_Length _n = NUM2LONG(n);
1164
1230
 
1165
1231
  vDSP_vmsaD(
1166
1232
  _a.res0->v.d+_a.offset, _a.stride,
@@ -1190,7 +1256,7 @@ VALUE rb_double_vsma(
1190
1256
  array_param(&_c, c, c_offset, c_stride);
1191
1257
  array_param(&_d, d, d_offset, d_stride);
1192
1258
 
1193
- vDSP_Stride _n = NUM2LONG(n);
1259
+ vDSP_Length _n = NUM2LONG(n);
1194
1260
 
1195
1261
  vDSP_vsmaD(
1196
1262
  _a.res0->v.d+_a.offset, _a.stride,
@@ -1221,7 +1287,7 @@ VALUE rb_double_vma(
1221
1287
  array_param(&_c, c, c_offset, c_stride);
1222
1288
  array_param(&_d, d, d_offset, d_stride);
1223
1289
 
1224
- vDSP_Stride _n = NUM2LONG(n);
1290
+ vDSP_Length _n = NUM2LONG(n);
1225
1291
 
1226
1292
  vDSP_vmaD(
1227
1293
  _a.res0->v.d+_a.offset, _a.stride,
@@ -1252,7 +1318,7 @@ VALUE rb_double_vmsb(
1252
1318
  array_param(&_c, c, c_offset, c_stride);
1253
1319
  array_param(&_d, d, d_offset, d_stride);
1254
1320
 
1255
- vDSP_Stride _n = NUM2LONG(n);
1321
+ vDSP_Length _n = NUM2LONG(n);
1256
1322
 
1257
1323
  vDSP_vmsbD(
1258
1324
  _a.res0->v.d+_a.offset, _a.stride,
@@ -1284,7 +1350,7 @@ VALUE rb_double_vsmsma(
1284
1350
  double _d = NUM2DBL(d);
1285
1351
  array_param(&_e, e, e_offset, e_stride);
1286
1352
 
1287
- vDSP_Stride _n = NUM2LONG(n);
1353
+ vDSP_Length _n = NUM2LONG(n);
1288
1354
 
1289
1355
  vDSP_vsmsmaD(
1290
1356
  _a.res0->v.d+_a.offset, _a.stride,
@@ -1332,7 +1398,7 @@ VALUE rb_double_vaam(int argc, VALUE *argv, VALUE cls)
1332
1398
  array_param(&_d, d, d_offset, d_stride);
1333
1399
  array_param(&_e, e, e_offset, e_stride);
1334
1400
 
1335
- vDSP_Stride _n = NUM2LONG(n);
1401
+ vDSP_Length _n = NUM2LONG(n);
1336
1402
 
1337
1403
  vDSP_vaamD(
1338
1404
  _a.res0->v.d+_a.offset, _a.stride,
@@ -1380,7 +1446,7 @@ VALUE rb_double_vmmsb(int argc, VALUE *argv, VALUE cls)
1380
1446
  array_param(&_d, d, d_offset, d_stride);
1381
1447
  array_param(&_e, e, e_offset, e_stride);
1382
1448
 
1383
- vDSP_Stride _n = NUM2LONG(n);
1449
+ vDSP_Length _n = NUM2LONG(n);
1384
1450
 
1385
1451
  vDSP_vmmsbD(
1386
1452
  _a.res0->v.d+_a.offset, _a.stride,
@@ -1428,7 +1494,7 @@ VALUE rb_double_vsbsbm(int argc, VALUE *argv, VALUE cls)
1428
1494
  array_param(&_d, d, d_offset, d_stride);
1429
1495
  array_param(&_e, e, e_offset, e_stride);
1430
1496
 
1431
- vDSP_Stride _n = NUM2LONG(n);
1497
+ vDSP_Length _n = NUM2LONG(n);
1432
1498
 
1433
1499
  vDSP_vsbsbmD(
1434
1500
  _a.res0->v.d+_a.offset, _a.stride,
@@ -1476,7 +1542,7 @@ VALUE rb_double_vasbm(int argc, VALUE *argv, VALUE cls)
1476
1542
  array_param(&_d, d, d_offset, d_stride);
1477
1543
  array_param(&_e, e, e_offset, e_stride);
1478
1544
 
1479
- vDSP_Stride _n = NUM2LONG(n);
1545
+ vDSP_Length _n = NUM2LONG(n);
1480
1546
 
1481
1547
  vDSP_vasbmD(
1482
1548
  _a.res0->v.d+_a.offset, _a.stride,
@@ -1504,7 +1570,7 @@ VALUE rb_double_vramp(
1504
1570
  double _b = NUM2DBL(b);
1505
1571
  array_param(&_c, c, c_offset, c_stride);
1506
1572
 
1507
- vDSP_Stride _n = NUM2LONG(n);
1573
+ vDSP_Length _n = NUM2LONG(n);
1508
1574
 
1509
1575
  vDSP_vrampD(
1510
1576
  &_a,
@@ -1528,7 +1594,7 @@ VALUE rb_double_vgen(
1528
1594
  double _b = NUM2DBL(b);
1529
1595
  array_param(&_c, c, c_offset, c_stride);
1530
1596
 
1531
- vDSP_Stride _n = NUM2LONG(n);
1597
+ vDSP_Length _n = NUM2LONG(n);
1532
1598
 
1533
1599
  vDSP_vgenD(
1534
1600
  &_a,
@@ -1555,7 +1621,7 @@ VALUE rb_double_vrampmul(
1555
1621
  double _step = NUM2DBL(step);
1556
1622
  array_param(&_o, o, o_offset, o_stride);
1557
1623
 
1558
- vDSP_Stride _n = NUM2LONG(n);
1624
+ vDSP_Length _n = NUM2LONG(n);
1559
1625
 
1560
1626
  vDSP_vrampmulD(
1561
1627
  _i.res0->v.d+_i.offset, _i.stride,
@@ -1584,7 +1650,7 @@ VALUE rb_double_vrampmul2(
1584
1650
  double _step = NUM2DBL(step);
1585
1651
  array_param2(&_o, o0, o1, o_offset, o_stride);
1586
1652
 
1587
- vDSP_Stride _n = NUM2LONG(n);
1653
+ vDSP_Length _n = NUM2LONG(n);
1588
1654
 
1589
1655
  vDSP_vrampmul2D(
1590
1656
  _i.res0->v.d+_i.offset, _i.res1->v.d+_i.offset, _i.stride,
@@ -1613,7 +1679,7 @@ VALUE rb_double_vrampmuladd(
1613
1679
  double _step = NUM2DBL(step);
1614
1680
  array_param(&_o, o, o_offset, o_stride);
1615
1681
 
1616
- vDSP_Stride _n = NUM2LONG(n);
1682
+ vDSP_Length _n = NUM2LONG(n);
1617
1683
 
1618
1684
  vDSP_vrampmuladdD(
1619
1685
  _i.res0->v.d+_i.offset, _i.stride,
@@ -1642,7 +1708,7 @@ VALUE rb_double_vrampmuladd2(
1642
1708
  double _step = NUM2DBL(step);
1643
1709
  array_param2(&_o, o0, o1, o_offset, o_stride);
1644
1710
 
1645
- vDSP_Stride _n = NUM2LONG(n);
1711
+ vDSP_Length _n = NUM2LONG(n);
1646
1712
 
1647
1713
  vDSP_vrampmuladd2D(
1648
1714
  _i.res0->v.d+_i.offset, _i.res1->v.d+_i.offset, _i.stride,
@@ -1671,8 +1737,8 @@ VALUE rb_double_vgenp(
1671
1737
  array_param(&_b, b, b_offset, b_stride);
1672
1738
  array_param(&_c, c, c_offset, c_stride);
1673
1739
 
1674
- vDSP_Stride _n = NUM2LONG(n);
1675
- vDSP_Stride _m = NUM2LONG(m);
1740
+ vDSP_Length _n = NUM2LONG(n);
1741
+ vDSP_Length _m = NUM2LONG(m);
1676
1742
 
1677
1743
  vDSP_vgenpD(
1678
1744
  _a.res0->v.d+_a.offset, _a.stride,
@@ -1703,8 +1769,8 @@ VALUE rb_double_vtabi(
1703
1769
  double _s2 = NUM2DBL(s2);
1704
1770
  VdspArrayNativeResource *_c = get_vdsp_array_native_resource(c);
1705
1771
 
1706
- vDSP_Stride _m = NUM2LONG(m);
1707
- vDSP_Stride _n = NUM2LONG(n);
1772
+ vDSP_Length _m = NUM2LONG(m);
1773
+ vDSP_Length _n = NUM2LONG(n);
1708
1774
 
1709
1775
  array_param(&_d, d, d_offset, d_stride);
1710
1776
 
@@ -1724,7 +1790,7 @@ VALUE rb_double_vtabi(
1724
1790
  VALUE rb_double_blkman_window(VALUE cls, VALUE c, VALUE n, VALUE flag)
1725
1791
  {
1726
1792
  VdspArrayNativeResource *_c = get_vdsp_array_native_resource(c);
1727
- vDSP_Stride _n = NUM2LONG(n);
1793
+ vDSP_Length _n = NUM2LONG(n);
1728
1794
  int _flag = (int)NUM2LONG(flag);
1729
1795
 
1730
1796
  vDSP_blkman_windowD(_c->v.d, _n, _flag);
@@ -1735,7 +1801,7 @@ VALUE rb_double_blkman_window(VALUE cls, VALUE c, VALUE n, VALUE flag)
1735
1801
  VALUE rb_double_hamm_window(VALUE cls, VALUE c, VALUE n, VALUE flag)
1736
1802
  {
1737
1803
  VdspArrayNativeResource *_c = get_vdsp_array_native_resource(c);
1738
- vDSP_Stride _n = NUM2LONG(n);
1804
+ vDSP_Length _n = NUM2LONG(n);
1739
1805
  int _flag = (int)NUM2LONG(flag);
1740
1806
 
1741
1807
  vDSP_hamm_windowD(_c->v.d, _n, _flag);
@@ -1746,7 +1812,7 @@ VALUE rb_double_hamm_window(VALUE cls, VALUE c, VALUE n, VALUE flag)
1746
1812
  VALUE rb_double_hann_window(VALUE cls, VALUE c, VALUE n, VALUE flag)
1747
1813
  {
1748
1814
  VdspArrayNativeResource *_c = get_vdsp_array_native_resource(c);
1749
- vDSP_Stride _n = NUM2LONG(n);
1815
+ vDSP_Length _n = NUM2LONG(n);
1750
1816
  int _flag = (int)NUM2LONG(flag);
1751
1817
 
1752
1818
  vDSP_hann_windowD(_c->v.d, _n, _flag);
@@ -1762,7 +1828,7 @@ VALUE rb_double_vclr(
1762
1828
  VdspArrayParam _c;
1763
1829
 
1764
1830
  array_param(&_c, c, c_offset, c_stride);
1765
- vDSP_Stride _n = NUM2LONG(n);
1831
+ vDSP_Length _n = NUM2LONG(n);
1766
1832
 
1767
1833
  vDSP_vclrD(
1768
1834
  _c.res0->v.d+_c.offset, _c.stride,
@@ -1782,7 +1848,7 @@ VALUE rb_double_vfill(
1782
1848
 
1783
1849
  double _a = NUM2DBL(a);
1784
1850
  array_param(&_c, c, c_offset, c_stride);
1785
- vDSP_Stride _n = NUM2LONG(n);
1851
+ vDSP_Length _n = NUM2LONG(n);
1786
1852
 
1787
1853
  vDSP_vfillD(
1788
1854
  &_a,
@@ -1802,7 +1868,7 @@ VALUE rb_double_maxv(
1802
1868
  double _c;
1803
1869
 
1804
1870
  array_param(&_a, a, a_offset, a_stride);
1805
- vDSP_Stride _n = NUM2LONG(n);
1871
+ vDSP_Length _n = NUM2LONG(n);
1806
1872
 
1807
1873
  vDSP_maxvD(
1808
1874
  _a.res0->v.d+_a.offset, _a.stride,
@@ -1822,7 +1888,7 @@ VALUE rb_double_maxmgv(
1822
1888
  double _c;
1823
1889
 
1824
1890
  array_param(&_a, a, a_offset, a_stride);
1825
- vDSP_Stride _n = NUM2LONG(n);
1891
+ vDSP_Length _n = NUM2LONG(n);
1826
1892
 
1827
1893
  vDSP_maxmgvD(
1828
1894
  _a.res0->v.d+_a.offset, _a.stride,
@@ -1842,7 +1908,7 @@ VALUE rb_double_minv(
1842
1908
  double _c;
1843
1909
 
1844
1910
  array_param(&_a, a, a_offset, a_stride);
1845
- vDSP_Stride _n = NUM2LONG(n);
1911
+ vDSP_Length _n = NUM2LONG(n);
1846
1912
 
1847
1913
  vDSP_minvD(
1848
1914
  _a.res0->v.d+_a.offset, _a.stride,
@@ -1862,7 +1928,7 @@ VALUE rb_double_minmgv(
1862
1928
  double _c;
1863
1929
 
1864
1930
  array_param(&_a, a, a_offset, a_stride);
1865
- vDSP_Stride _n = NUM2LONG(n);
1931
+ vDSP_Length _n = NUM2LONG(n);
1866
1932
 
1867
1933
  vDSP_minmgvD(
1868
1934
  _a.res0->v.d+_a.offset, _a.stride,
@@ -1882,7 +1948,7 @@ VALUE rb_double_meanv(
1882
1948
  double _c;
1883
1949
 
1884
1950
  array_param(&_a, a, a_offset, a_stride);
1885
- vDSP_Stride _n = NUM2LONG(n);
1951
+ vDSP_Length _n = NUM2LONG(n);
1886
1952
 
1887
1953
  vDSP_meanvD(
1888
1954
  _a.res0->v.d+_a.offset, _a.stride,
@@ -1902,7 +1968,7 @@ VALUE rb_double_meamgv(
1902
1968
  double _c;
1903
1969
 
1904
1970
  array_param(&_a, a, a_offset, a_stride);
1905
- vDSP_Stride _n = NUM2LONG(n);
1971
+ vDSP_Length _n = NUM2LONG(n);
1906
1972
 
1907
1973
  vDSP_meamgvD(
1908
1974
  _a.res0->v.d+_a.offset, _a.stride,
@@ -1922,7 +1988,7 @@ VALUE rb_double_measqv(
1922
1988
  double _c;
1923
1989
 
1924
1990
  array_param(&_a, a, a_offset, a_stride);
1925
- vDSP_Stride _n = NUM2LONG(n);
1991
+ vDSP_Length _n = NUM2LONG(n);
1926
1992
 
1927
1993
  vDSP_measqvD(
1928
1994
  _a.res0->v.d+_a.offset, _a.stride,
@@ -1942,7 +2008,7 @@ VALUE rb_double_mvessq(
1942
2008
  double _c;
1943
2009
 
1944
2010
  array_param(&_a, a, a_offset, a_stride);
1945
- vDSP_Stride _n = NUM2LONG(n);
2011
+ vDSP_Length _n = NUM2LONG(n);
1946
2012
 
1947
2013
  vDSP_mvessqD(
1948
2014
  _a.res0->v.d+_a.offset, _a.stride,
@@ -1962,7 +2028,7 @@ VALUE rb_double_rmsqv(
1962
2028
  double _c;
1963
2029
 
1964
2030
  array_param(&_a, a, a_offset, a_stride);
1965
- vDSP_Stride _n = NUM2LONG(n);
2031
+ vDSP_Length _n = NUM2LONG(n);
1966
2032
 
1967
2033
  vDSP_rmsqvD(
1968
2034
  _a.res0->v.d+_a.offset, _a.stride,
@@ -1982,7 +2048,7 @@ VALUE rb_double_sve(
1982
2048
  double _c;
1983
2049
 
1984
2050
  array_param(&_a, a, a_offset, a_stride);
1985
- vDSP_Stride _n = NUM2LONG(n);
2051
+ vDSP_Length _n = NUM2LONG(n);
1986
2052
 
1987
2053
  vDSP_sveD(
1988
2054
  _a.res0->v.d+_a.offset, _a.stride,
@@ -2002,7 +2068,7 @@ VALUE rb_double_svemg(
2002
2068
  double _c;
2003
2069
 
2004
2070
  array_param(&_a, a, a_offset, a_stride);
2005
- vDSP_Stride _n = NUM2LONG(n);
2071
+ vDSP_Length _n = NUM2LONG(n);
2006
2072
 
2007
2073
  vDSP_svemgD(
2008
2074
  _a.res0->v.d+_a.offset, _a.stride,
@@ -2022,7 +2088,7 @@ VALUE rb_double_svesq(
2022
2088
  double _c;
2023
2089
 
2024
2090
  array_param(&_a, a, a_offset, a_stride);
2025
- vDSP_Stride _n = NUM2LONG(n);
2091
+ vDSP_Length _n = NUM2LONG(n);
2026
2092
 
2027
2093
  vDSP_svesqD(
2028
2094
  _a.res0->v.d+_a.offset, _a.stride,
@@ -2043,7 +2109,7 @@ VALUE rb_double_sve_svesq(
2043
2109
  double _sum_of_squares;
2044
2110
 
2045
2111
  array_param(&_a, a, a_offset, a_stride);
2046
- vDSP_Stride _n = NUM2LONG(n);
2112
+ vDSP_Length _n = NUM2LONG(n);
2047
2113
 
2048
2114
  vDSP_sve_svesqD(
2049
2115
  _a.res0->v.d+_a.offset, _a.stride,
@@ -2064,7 +2130,7 @@ VALUE rb_double_svs(
2064
2130
  double _c;
2065
2131
 
2066
2132
  array_param(&_a, a, a_offset, a_stride);
2067
- vDSP_Stride _n = NUM2LONG(n);
2133
+ vDSP_Length _n = NUM2LONG(n);
2068
2134
 
2069
2135
  vDSP_svsD(
2070
2136
  _a.res0->v.d+_a.offset, _a.stride,
@@ -2088,7 +2154,7 @@ VALUE rb_double_biquad(
2088
2154
  VdspBiquadNativeResource *_b = get_vdsp_biquad_native_resource(biquad);
2089
2155
  array_param(&_x, x, x_offset, x_stride);
2090
2156
  array_param(&_y, y, y_offset, y_stride);
2091
- vDSP_Stride _n = NUM2LONG(n);
2157
+ vDSP_Length _n = NUM2LONG(n);
2092
2158
 
2093
2159
  vDSP_biquadD(
2094
2160
  _b->setup.d,
@@ -2100,6 +2166,256 @@ VALUE rb_double_biquad(
2100
2166
  return y;
2101
2167
  }
2102
2168
 
2169
+ VALUE rb_double_vabs(
2170
+ VALUE cls,
2171
+ VALUE a, VALUE a_offset, VALUE a_stride,
2172
+ VALUE c, VALUE c_offset, VALUE c_stride,
2173
+ VALUE n)
2174
+ {
2175
+ VdspArrayParam _a;
2176
+ VdspArrayParam _c;
2177
+
2178
+ array_param(&_a, a, a_offset, a_stride);
2179
+ array_param(&_c, c, c_offset, c_stride);
2180
+ vDSP_Length _n = NUM2LONG(n);
2181
+
2182
+ vDSP_vabsD(
2183
+ _a.res0->v.d+_a.offset, _a.stride,
2184
+ _c.res0->v.d+_c.offset, _c.stride,
2185
+ _n);
2186
+
2187
+ return c;
2188
+ }
2189
+
2190
+ VALUE rb_double_vnabs(
2191
+ VALUE cls,
2192
+ VALUE a, VALUE a_offset, VALUE a_stride,
2193
+ VALUE c, VALUE c_offset, VALUE c_stride,
2194
+ VALUE n)
2195
+ {
2196
+ VdspArrayParam _a;
2197
+ VdspArrayParam _c;
2198
+
2199
+ array_param(&_a, a, a_offset, a_stride);
2200
+ array_param(&_c, c, c_offset, c_stride);
2201
+ vDSP_Length _n = NUM2LONG(n);
2202
+
2203
+ vDSP_vnabsD(
2204
+ _a.res0->v.d+_a.offset, _a.stride,
2205
+ _c.res0->v.d+_c.offset, _c.stride,
2206
+ _n);
2207
+
2208
+ return c;
2209
+ }
2210
+
2211
+ VALUE rb_double_vneg(
2212
+ VALUE cls,
2213
+ VALUE a, VALUE a_offset, VALUE a_stride,
2214
+ VALUE c, VALUE c_offset, VALUE c_stride,
2215
+ VALUE n)
2216
+ {
2217
+ VdspArrayParam _a;
2218
+ VdspArrayParam _c;
2219
+
2220
+ array_param(&_a, a, a_offset, a_stride);
2221
+ array_param(&_c, c, c_offset, c_stride);
2222
+ vDSP_Length _n = NUM2LONG(n);
2223
+
2224
+ vDSP_vnegD(
2225
+ _a.res0->v.d+_a.offset, _a.stride,
2226
+ _c.res0->v.d+_c.offset, _c.stride,
2227
+ _n);
2228
+
2229
+ return c;
2230
+ }
2231
+
2232
+ VALUE rb_double_vclip(
2233
+ VALUE cls,
2234
+ VALUE a, VALUE a_offset, VALUE a_stride,
2235
+ VALUE b,
2236
+ VALUE c,
2237
+ VALUE d, VALUE d_offset, VALUE d_stride,
2238
+ VALUE n)
2239
+ {
2240
+ VdspArrayParam _a;
2241
+ VdspArrayParam _d;
2242
+
2243
+ array_param(&_a, a, a_offset, a_stride);
2244
+ array_param(&_d, d, d_offset, d_stride);
2245
+ double _b = NUM2DBL(b);
2246
+ double _c = NUM2DBL(c);
2247
+ vDSP_Length _n = NUM2LONG(n);
2248
+
2249
+ vDSP_vclipD(
2250
+ _a.res0->v.d+_a.offset, _a.stride,
2251
+ &_b,
2252
+ &_c,
2253
+ _d.res0->v.d+_d.offset, _d.stride,
2254
+ _n);
2255
+
2256
+ return d;
2257
+ }
2258
+
2259
+ VALUE rb_double_vclipc(
2260
+ VALUE cls,
2261
+ VALUE a, VALUE a_offset, VALUE a_stride,
2262
+ VALUE b,
2263
+ VALUE c,
2264
+ VALUE d, VALUE d_offset, VALUE d_stride,
2265
+ VALUE n)
2266
+ {
2267
+ VdspArrayParam _a;
2268
+ VdspArrayParam _d;
2269
+ vDSP_Length _n_low = 0;
2270
+ vDSP_Length _n_high = 0;
2271
+
2272
+ array_param(&_a, a, a_offset, a_stride);
2273
+ array_param(&_d, d, d_offset, d_stride);
2274
+ double _b = NUM2DBL(b);
2275
+ double _c = NUM2DBL(c);
2276
+ vDSP_Length _n = NUM2LONG(n);
2277
+
2278
+ vDSP_vclipcD(
2279
+ _a.res0->v.d+_a.offset, _a.stride,
2280
+ &_b,
2281
+ &_c,
2282
+ _d.res0->v.d+_d.offset, _d.stride,
2283
+ _n,
2284
+ &_n_low,
2285
+ &_n_high);
2286
+
2287
+ return rb_ary_new3(3, d, LONG2NUM(_n_low), LONG2NUM(_n_high));
2288
+ }
2289
+
2290
+ VALUE rb_double_viclip(
2291
+ VALUE cls,
2292
+ VALUE a, VALUE a_offset, VALUE a_stride,
2293
+ VALUE b,
2294
+ VALUE c,
2295
+ VALUE d, VALUE d_offset, VALUE d_stride,
2296
+ VALUE n)
2297
+ {
2298
+ VdspArrayParam _a;
2299
+ VdspArrayParam _d;
2300
+
2301
+ array_param(&_a, a, a_offset, a_stride);
2302
+ array_param(&_d, d, d_offset, d_stride);
2303
+ double _b = NUM2DBL(b);
2304
+ double _c = NUM2DBL(c);
2305
+ vDSP_Length _n = NUM2LONG(n);
2306
+
2307
+ vDSP_viclipD(
2308
+ _a.res0->v.d+_a.offset, _a.stride,
2309
+ &_b,
2310
+ &_c,
2311
+ _d.res0->v.d+_d.offset, _d.stride,
2312
+ _n);
2313
+
2314
+ return d;
2315
+ }
2316
+
2317
+ VALUE rb_double_vthr(
2318
+ VALUE cls,
2319
+ VALUE a, VALUE a_offset, VALUE a_stride,
2320
+ VALUE b,
2321
+ VALUE c, VALUE c_offset, VALUE c_stride,
2322
+ VALUE n)
2323
+ {
2324
+ VdspArrayParam _a;
2325
+ VdspArrayParam _c;
2326
+
2327
+ array_param(&_a, a, a_offset, a_stride);
2328
+ array_param(&_c, c, c_offset, c_stride);
2329
+ double _b = NUM2DBL(b);
2330
+ vDSP_Length _n = NUM2LONG(n);
2331
+
2332
+ vDSP_vthrD(
2333
+ _a.res0->v.d+_a.offset, _a.stride,
2334
+ &_b,
2335
+ _c.res0->v.d+_c.offset, _c.stride,
2336
+ _n);
2337
+
2338
+ return c;
2339
+ }
2340
+
2341
+ VALUE rb_double_vlim(
2342
+ VALUE cls,
2343
+ VALUE a, VALUE a_offset, VALUE a_stride,
2344
+ VALUE b,
2345
+ VALUE c,
2346
+ VALUE d, VALUE d_offset, VALUE d_stride,
2347
+ VALUE n)
2348
+ {
2349
+ VdspArrayParam _a;
2350
+ VdspArrayParam _d;
2351
+
2352
+ array_param(&_a, a, a_offset, a_stride);
2353
+ array_param(&_d, d, d_offset, d_stride);
2354
+ double _b = NUM2DBL(b);
2355
+ double _c = NUM2DBL(c);
2356
+ vDSP_Length _n = NUM2LONG(n);
2357
+
2358
+ vDSP_vlimD(
2359
+ _a.res0->v.d+_a.offset, _a.stride,
2360
+ &_b,
2361
+ &_c,
2362
+ _d.res0->v.d+_d.offset, _d.stride,
2363
+ _n);
2364
+
2365
+ return d;
2366
+ }
2367
+
2368
+ VALUE rb_double_vthres(
2369
+ VALUE cls,
2370
+ VALUE a, VALUE a_offset, VALUE a_stride,
2371
+ VALUE b,
2372
+ VALUE c, VALUE c_offset, VALUE c_stride,
2373
+ VALUE n)
2374
+ {
2375
+ VdspArrayParam _a;
2376
+ VdspArrayParam _c;
2377
+
2378
+ array_param(&_a, a, a_offset, a_stride);
2379
+ array_param(&_c, c, c_offset, c_stride);
2380
+ double _b = NUM2DBL(b);
2381
+ vDSP_Length _n = NUM2LONG(n);
2382
+
2383
+ vDSP_vthresD(
2384
+ _a.res0->v.d+_a.offset, _a.stride,
2385
+ &_b,
2386
+ _c.res0->v.d+_c.offset, _c.stride,
2387
+ _n);
2388
+
2389
+ return c;
2390
+ }
2391
+
2392
+ VALUE rb_double_vthrsc(
2393
+ VALUE cls,
2394
+ VALUE a, VALUE a_offset, VALUE a_stride,
2395
+ VALUE b,
2396
+ VALUE c,
2397
+ VALUE d, VALUE d_offset, VALUE d_stride,
2398
+ VALUE n)
2399
+ {
2400
+ VdspArrayParam _a;
2401
+ VdspArrayParam _d;
2402
+
2403
+ array_param(&_a, a, a_offset, a_stride);
2404
+ array_param(&_d, d, d_offset, d_stride);
2405
+ double _b = NUM2DBL(b);
2406
+ double _c = NUM2DBL(c);
2407
+ vDSP_Length _n = NUM2LONG(n);
2408
+
2409
+ vDSP_vthrscD(
2410
+ _a.res0->v.d+_a.offset, _a.stride,
2411
+ &_b,
2412
+ &_c,
2413
+ _d.res0->v.d+_d.offset, _d.stride,
2414
+ _n);
2415
+
2416
+ return d;
2417
+ }
2418
+
2103
2419
 
2104
2420
  // Init
2105
2421
 
@@ -2144,6 +2460,14 @@ void Init_vdsp()
2144
2460
  rb_define_method(rb_cDoubleArray, "each", rb_double_array_each, 0);
2145
2461
  rb_define_method(rb_cDoubleArray, "to_a", rb_double_array_get_values, 0);
2146
2462
  rb_define_method(rb_cDoubleArray, "coerce", rb_double_array_coerce, 1);
2463
+ rb_define_method(rb_cDoubleArray, "abs", rb_double_array_abs, 0);
2464
+ rb_define_method(rb_cDoubleArray, "abs!", rb_double_array_abs_bang, 0);
2465
+ rb_define_method(rb_cDoubleArray, "nabs", rb_double_array_nabs, 0);
2466
+ rb_define_method(rb_cDoubleArray, "nabs!", rb_double_array_nabs_bang, 0);
2467
+ rb_define_method(rb_cDoubleArray, "negative", rb_double_array_negative, 0);
2468
+ rb_define_alias(rb_cDoubleArray, "neg", "negative");
2469
+ rb_define_method(rb_cDoubleArray, "negative!", rb_double_array_negative_bang, 0);
2470
+ rb_define_alias(rb_cDoubleArray, "neg!", "negative!");
2147
2471
 
2148
2472
  // Vdsp::DoubleArray Vector Generation
2149
2473
  rb_define_singleton_method(rb_cDoubleArray, "vramp", rb_double_array_vramp, 3);
@@ -2153,8 +2477,8 @@ void Init_vdsp()
2153
2477
  rb_define_singleton_method(rb_cDoubleArray, "hann_window", rb_double_array_hann_window, -1);
2154
2478
 
2155
2479
  // Vdsp::DoubleArray Vector Clear and Fill Functions
2156
- rb_define_method(rb_cDoubleArray, "vclr", rb_double_array_vclr, 0);
2157
- rb_define_method(rb_cDoubleArray, "vfill", rb_double_array_vfill, 1);
2480
+ rb_define_method(rb_cDoubleArray, "clear!", rb_double_array_clear_bang, 0);
2481
+ rb_define_method(rb_cDoubleArray, "fill!", rb_double_array_fill_bang, 1);
2158
2482
 
2159
2483
  // Vdsp::DoubleArray Vector Extrema Calculation
2160
2484
  rb_define_method(rb_cDoubleArray, "maxv", rb_double_array_maxv, 0);
@@ -2256,4 +2580,18 @@ void Init_vdsp()
2256
2580
 
2257
2581
  // Vdsp::UnsafeDouble Biquadratic IIR Filters
2258
2582
  rb_define_singleton_method(rb_mUnsafeDouble, "biquad", rb_double_biquad, 8);
2583
+
2584
+ // Vdsp::UnsafeDouble Absolute and Negation Functions
2585
+ rb_define_singleton_method(rb_mUnsafeDouble, "vabs", rb_double_vabs, 7);
2586
+ rb_define_singleton_method(rb_mUnsafeDouble, "vnabs", rb_double_vnabs, 7);
2587
+ rb_define_singleton_method(rb_mUnsafeDouble, "vneg", rb_double_vneg, 7);
2588
+
2589
+ // Vdsp::UnsafeDouble Clipping, Limit, and Threshold Operations
2590
+ rb_define_singleton_method(rb_mUnsafeDouble, "vclip", rb_double_vclip, 9);
2591
+ rb_define_singleton_method(rb_mUnsafeDouble, "vclipc", rb_double_vclipc, 9);
2592
+ rb_define_singleton_method(rb_mUnsafeDouble, "viclip", rb_double_viclip, 9);
2593
+ rb_define_singleton_method(rb_mUnsafeDouble, "vthr", rb_double_vthr, 8);
2594
+ rb_define_singleton_method(rb_mUnsafeDouble, "vlim", rb_double_vlim, 9);
2595
+ rb_define_singleton_method(rb_mUnsafeDouble, "vthres", rb_double_vthres, 8);
2596
+ rb_define_singleton_method(rb_mUnsafeDouble, "vthrsc", rb_double_vthrsc, 9);
2259
2597
  }
data/lib/vdsp/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Vdsp
2
- VERSION = "1.6.0"
2
+ VERSION = "1.7.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.6.0
4
+ version: 1.7.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-02 00:00:00.000000000 Z
11
+ date: 2019-10-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler