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.
- checksums.yaml +4 -4
- data/ext/vdsp/vdsp.c +394 -56
- 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: a7d5b3b75d47981cb01b082e4304dacee1c87426407f2220ff538cec98527aeb
|
4
|
+
data.tar.gz: '08685f5360f114c1304095d510fb99d4b38fd02bdb70a0ce56e3e7ada8fbfc5c'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
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
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
1675
|
-
|
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
|
-
|
1707
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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, "
|
2157
|
-
rb_define_method(rb_cDoubleArray, "
|
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
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.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-
|
11
|
+
date: 2019-10-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|