vdsp 1.6.0 → 1.7.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 +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