-
Notifications
You must be signed in to change notification settings - Fork 8
/
dsp-math.coffee
1756 lines (1336 loc) · 72.3 KB
/
dsp-math.coffee
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
require '../lib/test-tools'
describe "DSP", ->
describe ".acos", ->
it "should provide correct results", ->
dst = F(4)
DSP.acos(dst, F([0.9929446523468466,-0.9994428453422334,-0.4708111937898803,-0.3258771376731108]))
dst.should.be.identicalTo([0.11885839994974795,3.1082098315898414,2.061006356375571,1.902735690106372])
dst = F(4)
DSP.acos(dst, F([-0.448311474332637,0.6207708938804974,0.25794159767894254,-0.6626451739767675]))
dst.should.be.identicalTo([2.0356717788542795,0.9010707129107786,1.3099052290100335,2.295141514596051])
dst = F(4)
DSP.acos(dst, F([0.40879108145370036,-0.9875588085096861,0.12424172174256796,-0.9886894039744994]))
dst.should.be.identicalTo([1.1496673146611625,2.983687146226435,1.4462327315543604,2.991047097915469])
dst = F(4)
DSP.acos(dst, F([-0.2735387533776683,-0.989039004573132,-0.9405653372478469,-0.9999921622013668]))
dst.should.be.identicalTo([1.8478665133714753,2.9933963104105517,2.7950874658110676,3.1376334089972575])
dst = F(4)
DSP.acos(dst, F([-0.4107941656866127,0.7086135281132505,-0.9613443884008407,0.7877251475624599]))
dst.should.be.identicalTo([1.994121273616694,0.7832650247014258,2.86264013493394,0.6636888792457608])
dst = F(4)
DSP.acos(dst, F([-0.9365705773624499,-0.9827242940857904,-0.821714865111734,0.8796223303982956]))
dst.should.be.identicalTo([2.7835101216656755,2.955443906528031,2.5352099199094646,0.4957286795467719])
dst = F(4)
DSP.acos(dst, F([-0.9654167436327685,-0.08653152445311495,-0.973204156150738,0.024231076127558853]))
dst.should.be.identicalTo([2.877833487096579,1.6574362038210313,2.9095737925802188,1.546562878847878])
dst = F(4)
DSP.acos(dst, F([-0.6198560308018666,-0.9027891366138938,-0.3681590220222219,0.9427549831418801]))
dst.should.be.identicalTo([2.239355549968277,2.6970074418369445,1.9478245182115468,0.3399990475974365])
dst = F(4)
DSP.acos(dst, F([-0.9887113376287998,0.2846183781137733,0.9004736892112931,-0.423273976423406]))
dst.should.be.identicalTo([2.9911934147415145,1.2821880085396555,0.4499388720740762,2.0078522630451454])
dst = F(4)
DSP.acos(dst, F([-0.9408537798066261,0.6409264259879875,-0.5458277874780881,0.9751993736528101]))
dst.should.be.identicalTo([2.795937794907629,0.875091759589771,2.148173058191183,0.2231762604150266])
dst = F(4)
DSP.acos(dst, F([0.307226045015203,-0.13160467371306825,0.8744661632956495,0.8018183281029834]))
dst.should.be.identicalTo([1.258519602394046,1.7027838864785463,0.5064621022224518,0.6404644095978613])
dst = F(4)
DSP.acos(dst, F([0.058331311252947014,0.7797357729393741,-0.9590983067522415,0.5746223578105463]))
dst.should.be.identicalTo([1.5124318856687353,0.6765526351951542,2.8545957903773576,0.9586536826225212])
dst = F(4)
DSP.acos(dst, F([0.4971436418475465,-0.8822908592842534,0.4499125561773217,-0.5387479561543759]))
dst.should.be.identicalTo([1.0504926610965584,2.651503419626887,1.10412890361506,2.1397465650879313])
dst = F(4)
DSP.acos(dst, F([-0.030916523594837344,-0.23243465844253144,-0.5051149591538412,0.16365411690839676]))
dst.should.be.identicalTo([1.6017177776735378,1.8053764804822992,2.100311487641299,1.4064027468944333])
dst = F(4)
DSP.acos(dst, F([0.8192538427194298,0.3457691462553629,-0.19208585211258267,-0.9398205896838029]))
dst.should.be.identicalTo([0.6106877355512719,1.217737959328444,1.764083464639216,2.792901151737811])
dst = F(4)
DSP.acos(dst, F([0.013833244592920345,-0.44350026786030594,0.9839250692295352,0.16445941627947744]))
dst.should.be.identicalTo([1.5569626409787987,2.030296597491483,0.17954488896724957,1.4055863865508833])
dst = F(4)
DSP.acos(dst, F([0.9868218651651646,0.9650768315639721,-0.7403732652398136,-0.9817083344985911]))
dst.should.be.identicalTo([0.16252495718707108,0.2650598206801915,2.4044218077436716,2.950032202100031])
dst = F(4)
DSP.acos(dst, F([-0.9826675556926665,-0.996881562655805,-0.3429814323093898,-0.9993246349836802]))
dst.should.be.identicalTo([2.9551375868305843,3.0625982301334242,1.920885350258819,3.1048383055568163])
dst = F(4)
DSP.acos(dst, F([0.9009060428259261,-0.7737632708514651,-0.2833116641798849,-0.47795767024503205]))
dst.should.be.identicalTo([0.4489437257808322,2.4555567932521574,1.858041830225584,2.0691244624278506])
dst = F(4)
DSP.acos(dst, F([0.36626287750950015,-0.9346218642383161,0.03195689725192267,-0.8148159721115656]))
dst.should.be.identicalTo([1.1958066991514658,2.777990656260925,1.5388339877473356,2.5232080080049784])
dst = F(4)
DSP.acos(dst, F([-0.18427189670387253,-0.6294909931238739,-0.8050307382158212,0.5472781505546356]))
dst.should.be.identicalTo([1.756127348526541,2.2516942784406844,2.5065236079202053,0.9916876620379337])
dst = F(4)
DSP.acos(dst, F([-0.9243197914038378,-0.9989929359080945,-0.8685576378158092,0.9326045102220162]))
dst.should.be.identicalTo([2.750045626180892,3.096709846926348,2.6230807776928766,0.3692327787592728])
dst = F(4)
DSP.acos(dst, F([-0.3658808676618273,-0.9460419789936745,0.24141001430364278,0.9114348298569671]))
dst.should.be.identicalTo([1.94537545007523,2.811591528633902,1.3269777486896532,0.42403832585281914])
dst = F(4)
DSP.acos(dst, F([0.1516025941490531,-0.6102609977225272,0.9291305512858778,0.0454340081485777]))
dst.should.be.identicalTo([1.4186069205521874,2.2271863351339656,0.37874191151516196,1.5253466729234113])
dst = F(4)
DSP.acos(dst, F([0.030086439842925566,-0.9956803950190153,0.6086810292622493,-0.7622209268666077]))
dst.should.be.identicalTo([1.5407053460919518,3.0486118125593675,0.9163991950197484,2.437533518504805])
describe ".asin", ->
it "should provide correct results", ->
dst = F(4)
DSP.asin(dst, F([-0.9479498091526298,-0.37975206467687117,-0.9387113206139908,0.1679918140503386]))
dst.should.be.identicalTo([-1.2467342892123465,-0.3895282691242395,-1.2188725629806436,0.16879217704919824])
dst = F(4)
DSP.asin(dst, F([-0.4831377949599484,-0.9913276752954647,-0.6846233130609999,-0.59893564687258]))
dst.should.be.identicalTo([-0.5042350052672603,-1.4390018759005088,-0.7540867830252659,-0.6421713301087575])
dst = F(4)
DSP.asin(dst, F([0.9617468722169011,-0.8925666993613616,0.9751996188409947,0.975028727069863]))
dst.should.be.identicalTo([1.2933092811805045,-1.1030056848636987,1.3476211741861017,1.3468503600979747])
dst = F(4)
DSP.asin(dst, F([-0.38025766248542175,0.9944856892394226,0.48167522551947056,0.9200018393474378]))
dst.should.be.identicalTo([-0.39007487052611095,1.4657307647555573,0.5025653049417934,1.1680851784303818])
dst = F(4)
DSP.asin(dst, F([-0.7963067103714473,0.820192305249968,-0.0018736701219159318,0.9980855435584478]))
dst.should.be.identicalTo([-0.9211647518856684,0.961747084135066,-0.0018736712182144575,1.508908240528725])
dst = F(4)
DSP.asin(dst, F([0.997333744526079,0.9971838140035659,-0.84516426881537,0.13124977566449753]))
dst.should.be.identicalTo([1.4977560483622285,1.4957295724057955,-1.00687242035278,0.13162955624741715])
dst = F(4)
DSP.asin(dst, F([-0.8826949537523946,-0.9876193235088074,-0.7527080983010253,-0.8935400912601609]))
dst.should.be.identicalTo([-1.081566273196768,-1.4132761183769171,-0.8521658984147148,-1.1051690203806062])
dst = F(4)
DSP.asin(dst, F([-0.8194953704135483,0.2770033780857046,0.5836243421915572,-0.9130318370823726]))
dst.should.be.identicalTo([-0.9605299155268071,0.2806740426448157,0.6231849140734963,-1.1506563076268488])
dst = F(4)
DSP.asin(dst, F([-0.20403901441621236,-0.38561246775856967,0.8719820430690555,-0.5770894564008481]))
dst.should.be.identicalTo([-0.20548197015406017,-0.39587153650264767,1.059236640508759,-0.6151603156061715])
dst = F(4)
DSP.asin(dst, F([-0.7568302549804687,0.7203690505836734,-0.9460494826941316,-0.8755911691537562]))
dst.should.be.identicalTo([-0.8584498165792573,0.8043342587942042,-1.2408183590397945,-1.0666582810694543])
dst = F(4)
DSP.asin(dst, F([-0.6910574147096357,-0.6375520997224391,-0.2118078080511138,0.6759394717603218]))
dst.should.be.identicalTo([-0.7629509741779729,-0.6913166609917684,-0.2134243671949203,0.7422387565033095])
dst = F(4)
DSP.asin(dst, F([-0.9091017424250806,-0.9508771853157816,-0.9056919915346261,0.6095344375145716]))
dst.should.be.identicalTo([-1.1411226656819358,-1.2560572514908643,-1.133009186439653,0.6554731900606886])
dst = F(4)
DSP.asin(dst, F([0.763590726866876,0.08093612179962206,0.6693206250206661,0.4768902855731838]))
dst.should.be.identicalTo([0.8688559557114378,0.08102474741191021,0.7332940106120036,0.49711336663078254])
dst = F(4)
DSP.asin(dst, F([0.8657350978118282,0.9826295171979388,-0.8767650179088099,-0.7070317218021696]))
dst.should.be.identicalTo([1.046617230871626,1.3841361757122552,-1.0690937216681853,-0.7852920190311915])
dst = F(4)
DSP.asin(dst, F([-0.9997010347431747,0.8499520437021422,-0.6121646503875597,0.6653585587475722]))
dst.should.be.identicalTo([-1.5463430998210537,1.0158942642928988,-0.6587952326370063,0.7279740196800509])
dst = F(4)
DSP.asin(dst, F([-0.45508200173851265,0.326332588821133,0.6407101883357483,-0.9483405830890917]))
dst.should.be.identicalTo([-0.4724643022326126,0.3324211521247221,0.6954228950096206,-1.2479637684195646])
dst = F(4)
DSP.asin(dst, F([0.1705960226271801,-0.8010443123124644,0.9264258828403749,-0.8720856798322422]))
dst.should.be.identicalTo([0.1714345271660332,-0.9290377637141107,1.1848055507295558,-1.0594483837060193])
dst = F(4)
DSP.asin(dst, F([-0.6978737017355036,-0.60071404977729,-0.6046824393666874,-0.3889313351652019]))
dst.should.be.identicalTo([-0.7724244112076627,-0.6443939700839905,-0.649367095279867,-0.3994713132504718])
dst = F(4)
DSP.asin(dst, F([-0.9565693905015202,-0.9855064704444365,-0.8446439867860192,-0.9279232420310952]))
dst.should.be.identicalTo([-1.2749968283728637,-1.400334155612131,-1.0058997807475183,-1.188802508090647])
dst = F(4)
DSP.asin(dst, F([-0.9855511604520748,0.8946030996535348,0.7599777638279367,0.5143433630673471]))
dst.should.be.identicalTo([-1.4005978011464175,1.1075422163526814,0.86327890215527,0.5402417912395291])
dst = F(4)
DSP.asin(dst, F([-0.07261464635013047,0.9973874525666276,-0.29611613170457285,-0.15136924280212943]))
dst.should.be.identicalTo([-0.07267861304928279,1.498495762566023,-0.3006238457281452,-0.15195333044253456])
dst = F(4)
DSP.asin(dst, F([-0.8771811629748523,-0.7113820920517491,-0.015228577777068554,0.9585588857773442]))
dst.should.be.identicalTo([-1.069959717533591,-0.7914627929919122,-0.015229166447352718,1.2818999864359926])
dst = F(4)
DSP.asin(dst, F([0.34055079545411016,0.15726485843333704,0.9103142692795722,0.8309726509356192]))
dst.should.be.identicalTo([0.3475026471168376,0.15792043311433127,1.144042684397532,0.9808537952484699])
dst = F(4)
DSP.asin(dst, F([-0.6364186777987005,0.5254976054061433,-0.45046978944212995,-0.6282630710379644]))
dst.should.be.identicalTo([-0.689846356534386,0.5532998785703549,-0.46729147199653004,-0.6793186398524178])
dst = F(4)
DSP.asin(dst, F([-0.9960369963639638,-0.7549960497057066,-0.6997628416786279,0.9832005916090601]))
dst.should.be.identicalTo([-1.4817387726839208,-0.8556480952073199,-0.7750654625621188,1.3872389410018093])
describe ".atan", ->
it "should provide correct results", ->
dst = F(4)
DSP.atan(dst, F([0.7044233820823672,0.9897194046961619,0.7749970484411393,0.2356478766691885]))
dst.should.be.identicalTo([0.613688512043791,0.7802313525415834,0.6593082243262487,0.23142584191961307])
dst = F(4)
DSP.atan(dst, F([0.9932008580271017,0.9977777205410825,-0.5047288297329372,-0.8292835920407431]))
dst.should.be.identicalTo([0.7819870091357234,0.7842857881219272,-0.4674235125661746,-0.6923434998923296])
dst = F(4)
DSP.atan(dst, F([-0.9871715127135269,0.996574495497572,0.09893019876378334,-0.6084761153371361]))
dst.should.be.identicalTo([-0.7789426013093715,0.7836824742763765,0.09860933153835007,-0.546628639081709])
dst = F(4)
DSP.atan(dst, F([0.999568786757426,-0.8842700983189585,-0.8778474127716619,0.932829907513454]))
dst.should.be.identicalTo([0.7851825102832644,-0.7240562633733834,-0.7204404197112405,0.7506599430205451])
dst = F(4)
DSP.atan(dst, F([-0.3495603156591442,0.9333078323719332,-0.8370999712422216,0.9672129088525163]))
dst.should.be.identicalTo([-0.33628306472721803,0.7509154334447325,-0.6969570961549597,0.7687329333019656])
dst = F(4)
DSP.atan(dst, F([-0.9857814495708397,-0.9755962394651326,-0.9961518231929152,-0.9044605016928612]))
dst.should.be.identicalTo([-0.7782381068598104,-0.7730461863436461,-0.7834703681289432,-0.735274008714939])
dst = F(4)
DSP.atan(dst, F([-0.9779985599603932,0.1245661977480821,0.6257857525817073,-0.9998090256903287]))
dst.should.be.identicalTo([-0.7742755401603695,0.12392784339557301,0.5591641513775671,-0.7853026671242355])
dst = F(4)
DSP.atan(dst, F([-0.19084069115455005,-0.6728369353360718,0.46336845273217053,-0.19072004942249268]))
dst.should.be.identicalTo([-0.18857322089269288,-0.5922621717080172,0.4339153516050199,-0.18845681596821737])
dst = F(4)
DSP.atan(dst, F([-0.9633456771242336,-0.4257047549460477,-0.9132267436366837,-0.29000695112842434]))
dst.should.be.identicalTo([-0.7667310149414271,-0.40246742974951827,-0.7400748206123393,-0.2822638338581621])
dst = F(4)
DSP.atan(dst, F([0.10654989878292823,-0.8618496923351883,-0.46497162106374496,-0.37614015299769876]))
dst.should.be.identicalTo([0.10614940719903797,-0.7113333216845359,-0.4352343389814558,-0.35976988157848144])
dst = F(4)
DSP.atan(dst, F([0.4337417371496102,0.183022128831384,0.7231881524967428,0.8772524972634802]))
dst.should.be.identicalTo([0.4092516162873005,0.18101867307984076,0.6261195594036234,0.7201043270849657])
dst = F(4)
DSP.atan(dst, F([-0.963800340363927,-0.9660978894744077,-0.9090741547495202,0.8475110942402083]))
dst.should.be.identicalTo([-0.7669667782924564,-0.7681565238872015,-0.7378058868525277,0.7030473503683716])
dst = F(4)
DSP.atan(dst, F([0.8540076616605043,0.4676023633311247,-0.9864574523339102,0.7738793712508963]))
dst.should.be.identicalTo([0.7068161219137324,0.437395248298318,-0.7785808324506542,0.6586095688775367])
dst = F(4)
DSP.atan(dst, F([-0.5884220965928912,-0.9729208747114081,0.9126440031417329,-0.5964920842236224]))
dst.should.be.identicalTo([-0.5318628372026676,-0.7716736266559874,0.7397569825552617,-0.5378361581670953])
dst = F(4)
DSP.atan(dst, F([-0.9897396865604374,0.8422668492145989,0.3581490212995521,0.12947905062488374]))
dst.should.be.identicalTo([-0.7802415981605176,0.6999874044397407,0.3439160005712686,0.12876267832684654])
dst = F(4)
DSP.atan(dst, F([0.9930904786003474,-0.747279946893667,-0.8668075172093552,-0.7396791285103174]))
dst.should.be.identicalTo([0.78193143983729,-0.6417580007220317,-0.7141711279598121,-0.6368629625638381])
dst = F(4)
DSP.atan(dst, F([0.9316084078671587,-0.97940033318491,-0.9546674693932132,-0.511583226177552]))
dst.should.be.identicalTo([0.7500063965047488,-0.7749915150667009,-0.7622103801410874,-0.47287119162072205])
dst = F(4)
DSP.atan(dst, F([0.9776019840161325,-0.9124591364959854,-0.5563744174803251,-0.37902187274364046]))
dst.should.be.identicalTo([0.7740728013992779,-0.7396561141286322,-0.5077240209746818,-0.3622920249706573])
dst = F(4)
DSP.atan(dst, F([0.43738112236160126,0.3782039901034523,0.957313956994985,0.20934657541502408]))
dst.should.be.identicalTo([0.4123106579781163,0.3615766847611778,0.7635931394856545,0.20636628636980817])
dst = F(4)
DSP.atan(dst, F([0.7336827843660122,-0.5491991991888968,0.691913849299138,0.8826369176814224]))
dst.should.be.identicalTo([0.6329760413039638,-0.5022281847531688,0.6052783766558617,0.7231389986323912])
dst = F(4)
DSP.atan(dst, F([-0.2959778813872939,-0.1413446025049259,-0.9680902261535418,-0.8315307373595876]))
dst.should.be.identicalTo([-0.28776270481084465,-0.1404144521956342,-0.7691860112730456,-0.6936735055234134])
dst = F(4)
DSP.atan(dst, F([-0.7585428355959222,0.8130770346731154,0.9779316310769419,-0.9524847527216302]))
dst.should.be.identicalTo([-0.6489461418505614,0.6826640352621832,0.7742413302107644,-0.7610671817840188])
dst = F(4)
DSP.atan(dst, F([-0.4430071142331583,-0.9853734920093773,0.3586839198507034,-0.32624246687199665]))
dst.should.be.identicalTo([-0.4170234447380066,-0.7780311649752342,0.34439000711409373,-0.3153552571265634])
dst = F(4)
DSP.atan(dst, F([0.7068244688911104,-0.020591335097834448,-0.9736005316993576,0.3380868343101937]))
dst.should.be.identicalTo([0.6152914754249521,-0.020588425574811397,-0.7720226633738263,0.3260225871164791])
dst = F(4)
DSP.atan(dst, F([0.05077490753194591,-0.698602793840273,0.6560451572535058,-0.9503625445177465]))
dst.should.be.identicalTo([0.05073134078885238,-0.6097876264793345,0.5806131599279432,-0.7599532825458551])
describe ".abs", ->
it "should provide correct results", ->
dst = F(4)
DSP.abs(dst, F([119,844,770,695]))
dst.should.be.identicalTo([119,844,770,695])
dst = F(4)
DSP.abs(dst, F([291,686,59,885]))
dst.should.be.identicalTo([291,686,59,885])
dst = F(4)
DSP.abs(dst, F([200,298,817,623]))
dst.should.be.identicalTo([200,298,817,623])
dst = F(4)
DSP.abs(dst, F([486,707,158,217]))
dst.should.be.identicalTo([486,707,158,217])
dst = F(4)
DSP.abs(dst, F([50,541,951,767]))
dst.should.be.identicalTo([50,541,951,767])
dst = F(4)
DSP.abs(dst, F([558,358,494,139]))
dst.should.be.identicalTo([558,358,494,139])
dst = F(4)
DSP.abs(dst, F([794,673,3,244]))
dst.should.be.identicalTo([794,673,3,244])
dst = F(4)
DSP.abs(dst, F([517,522,707,270]))
dst.should.be.identicalTo([517,522,707,270])
dst = F(4)
DSP.abs(dst, F([118,137,51,634]))
dst.should.be.identicalTo([118,137,51,634])
it "should be able to deal with negative values", ->
dst = F(4)
DSP.abs(dst, F([650,610,-273,310]))
dst.should.be.identicalTo([650,610,273,310])
dst = F(4)
DSP.abs(dst, F([-774,901,446,752]))
dst.should.be.identicalTo([774,901,446,752])
dst = F(4)
DSP.abs(dst, F([308,802,-818,-262]))
dst.should.be.identicalTo([308,802,818,262])
dst = F(4)
DSP.abs(dst, F([-166,847,-736,154]))
dst.should.be.identicalTo([166,847,736,154])
dst = F(4)
DSP.abs(dst, F([309,-784,-478,-355]))
dst.should.be.identicalTo([309,784,478,355])
dst = F(4)
DSP.abs(dst, F([-757,-496,880,401]))
dst.should.be.identicalTo([757,496,880,401])
dst = F(4)
DSP.abs(dst, F([779,-738,75,-427]))
dst.should.be.identicalTo([779,738,75,427])
dst = F(4)
DSP.abs(dst, F([-522,24,645,-359]))
dst.should.be.identicalTo([522,24,645,359])
dst = F(4)
DSP.abs(dst, F([311,815,193,-401]))
dst.should.be.identicalTo([311,815,193,401])
it "should be able to deal with decimal values", ->
dst = F(4)
DSP.abs(dst, F([-113.94355306401849,713.2789045572281,89.32031504809856,-936.2620343454182]))
dst.should.be.identicalTo([113.94355306401849,713.2789045572281,89.32031504809856,936.2620343454182])
dst = F(4)
DSP.abs(dst, F([-885.4275494813919,475.5735225044191,-537.9812950268388,803.5572706721723]))
dst.should.be.identicalTo([885.4275494813919,475.5735225044191,537.9812950268388,803.5572706721723])
dst = F(4)
DSP.abs(dst, F([-507.0505612529814,-486.62449372932315,132.51455454155803,637.1953813359141]))
dst.should.be.identicalTo([507.0505612529814,486.62449372932315,132.51455454155803,637.1953813359141])
dst = F(4)
DSP.abs(dst, F([269.3535001017153,745.7673884928226,557.4304079636931,609.7808037884533]))
dst.should.be.identicalTo([269.3535001017153,745.7673884928226,557.4304079636931,609.7808037884533])
dst = F(4)
DSP.abs(dst, F([-100.9902530349791,43.80371142178774,359.90449599921703,-460.75081871822476]))
dst.should.be.identicalTo([100.9902530349791,43.80371142178774,359.90449599921703,460.75081871822476])
dst = F(4)
DSP.abs(dst, F([-182.88179533556104,134.11732064560056,-189.2410754226148,-527.1865129470825]))
dst.should.be.identicalTo([182.88179533556104,134.11732064560056,189.2410754226148,527.1865129470825])
dst = F(4)
DSP.abs(dst, F([443.70697252452374,493.02905052900314,-635.1478728465736,-135.9188798815012]))
dst.should.be.identicalTo([443.70697252452374,493.02905052900314,635.1478728465736,135.9188798815012])
dst = F(4)
DSP.abs(dst, F([444.7514293715358,-995.5495134927332,122.36624909564853,192.73309223353863]))
dst.should.be.identicalTo([444.7514293715358,995.5495134927332,122.36624909564853,192.73309223353863])
dst = F(4)
DSP.abs(dst, F([-675.3329848870635,-550.5720665678382,-849.9420965090394,660.9326498582959]))
dst.should.be.identicalTo([675.3329848870635,550.5720665678382,849.9420965090394,660.9326498582959])
describe ".cos", ->
it "should provide correct results", ->
dst = F(4)
DSP.cos(dst, F([492,24,6,933]))
dst.should.be.identicalTo([-0.3341937939677003,0.424179007336997,0.960170286650366,-0.998594868867907])
dst = F(4)
DSP.cos(dst, F([5,840,821,947]))
dst.should.be.identicalTo([0.28366218546322625,-0.3672352549023715,-0.5024921955433742,-0.18904061881620535])
dst = F(4)
DSP.cos(dst, F([485,789,377,672]))
dst.should.be.identicalTo([0.36726329284539677,-0.895944170184236,0.9999605591233189,0.9550915099898928])
dst = F(4)
DSP.cos(dst, F([806,340,728,605]))
dst.should.be.identicalTo([-0.18048974819626606,0.7596683100072248,0.660361983093894,-0.24101756111533412])
dst = F(4)
DSP.cos(dst, F([693,236,48,672]))
dst.should.be.identicalTo([-0.2752212989629269,-0.9284601245807608,-0.6401443394691997,0.9550915099898928])
dst = F(4)
DSP.cos(dst, F([305,92,55,159]))
dst.should.be.identicalTo([-0.9649581189333869,-0.626444447910339,0.022126756261955736,-0.34249477911590703])
dst = F(4)
DSP.cos(dst, F([102,646,941,816]))
dst.should.be.identicalTo([0.10158570369662134,0.39191269689736824,0.09286624723928816,0.6865303881402984])
dst = F(4)
DSP.cos(dst, F([470,159,111,319]))
dst.should.be.identicalTo([0.3258383046087229,-0.34249477911590703,-0.5025443191453852,0.12799358610147818])
dst = F(4)
DSP.cos(dst, F([588,455,371,701]))
dst.should.be.identicalTo([-0.8667370227056902,-0.8623341359607118,0.9576508012289697,-0.9111054141383427])
it "should be able to deal with negative values", ->
dst = F(4)
DSP.cos(dst, F([-775,385,-785,-864]))
dst.should.be.identicalTo([-0.5625036986477305,-0.1542812333919083,0.9217746469028693,-0.9980773599075725])
dst = F(4)
DSP.cos(dst, F([-373,-960,-349,-16]))
dst.should.be.identicalTo([-0.6603393459690063,0.24104681672640127,-0.9601618634146094,-0.9576594803233847])
dst = F(4)
DSP.cos(dst, F([-660,263,-914,679]))
dst.should.be.identicalTo([0.9649502084978204,0.6264679441263539,-0.9793728734041286,0.9147179972350201])
dst = F(4)
DSP.cos(dst, F([357,-841,-242,-269]))
dst.should.be.identicalTo([0.4161742465410129,0.5842577465661262,-0.9952637062792294,0.3837262818331512])
dst = F(4)
DSP.cos(dst, F([-870,-187,190,251]))
dst.should.be.identicalTo([-0.9756425398872068,0.07516615000819327,0.06630685835171127,0.9468777054203809])
dst = F(4)
DSP.cos(dst, F([-900,674,-900,744]))
dst.should.be.identicalTo([0.06624670220315812,-0.12802348245924622,0.06624670220315812,-0.8486021709533231])
dst = F(4)
DSP.cos(dst, F([858,-426,-733,-859]))
dst.should.be.identicalTo([-0.941005909636182,0.3090513969532009,-0.5327820018313022,-0.2236821894224926])
dst = F(4)
DSP.cos(dst, F([-813,-435,621,219]))
dst.should.be.identicalTo([-0.7822684476443909,0.11035728365811025,0.5102288964866329,0.6125720663156844])
dst = F(4)
DSP.cos(dst, F([-835,224,678,-842]))
dst.should.be.identicalTo([0.7877516509952246,-0.5841843515845697,0.8342566037918699,0.9985868702843739])
it "should be able to deal with decimal values", ->
dst = F(4)
DSP.cos(dst, F([844.3818856030703,-320.0954329222441,429.24825102090836,504.6162735670805]))
dst.should.be.identicalTo([-0.7606138373400368,0.9403911430868874,-0.408539905065236,-0.38079199072659525])
dst = F(4)
DSP.cos(dst, F([69.8436489328742,62.79047764837742,-456.74877567216754,-747.4366035312414]))
dst.should.be.identicalTo([0.7461002621591252,0.9991441592735656,-0.3456725516263838,0.965757743928139])
dst = F(4)
DSP.cos(dst, F([-592.5780958496034,970.2469585463405,-789.9478864856064,583.7955288589001]))
dst.should.be.identicalTo([-0.3782273548206674,-0.8750915307301325,-0.16194947890201802,0.8573461522600682])
dst = F(4)
DSP.cos(dst, F([80.4069060832262,891.5754174813628,-496.85776652768254,595.2363135293126]))
dst.should.be.identicalTo([0.291977150441925,0.8039455033868513,0.8841488488683404,-0.09534925400942637])
dst = F(4)
DSP.cos(dst, F([-950.5765712819993,464.03735876083374,325.9277939796448,806.877076625824]))
dst.should.be.identicalTo([-0.2423560552284239,0.6071289191158032,0.6982531448357409,-0.8716510826777756])
dst = F(4)
DSP.cos(dst, F([517.4345709383488,526.5646995976567,-399.2929388768971,-894.4794745184481]))
dst.should.be.identicalTo([-0.5992623964805077,0.3409526867815226,-0.9521283949052936,-0.6414329076814927])
dst = F(4)
DSP.cos(dst, F([-856.6298885270953,627.8368611820042,795.668562874198,271.88490983098745]))
dst.should.be.identicalTo([-0.5191793106461041,0.8862227300183668,-0.6632662783240657,-0.13671577580227892])
dst = F(4)
DSP.cos(dst, F([887.111690826714,606.3749794848263,370.75244123116136,-387.12996942922473]))
dst.should.be.identicalTo([0.3785542600789093,-0.9988674603563733,0.9990096776800208,-0.7557006493556656])
dst = F(4)
DSP.cos(dst, F([169.3766093812883,442.7466136403382,145.50076937302947,-103.40725351125002]))
dst.should.be.identicalTo([0.9639323819127266,-0.976342657605048,0.5507721091314198,-0.9650128208686024])
describe ".sin", ->
it "should provide correct results", ->
dst = F(4)
DSP.sin(dst, F([708,875,43,886]))
dst.should.be.identicalTo([-0.9093225141277265,0.9977932782684322,-0.8317747426285983,0.07081237357015184])
dst = F(4)
DSP.sin(dst, F([228,637,459,429]))
dst.should.be.identicalTo([0.9726230624856244,0.6767275715505089,0.32165094574030556,0.9851410837124249])
dst = F(4)
DSP.sin(dst, F([101,314,780,947]))
dst.should.be.identicalTo([0.45202578717835057,-0.15859290602857282,0.773928862147125,-0.9819692685810417])
dst = F(4)
DSP.sin(dst, F([412,968,427,779]))
dst.should.be.identicalTo([-0.43619188095326605,0.3796914013979365,-0.2537942055031938,-0.11472492335334811])
dst = F(4)
DSP.sin(dst, F([477,904,549,998]))
dst.should.be.identicalTo([-0.4986870255363352,-0.7023434147360162,0.7023648723213674,-0.8554731519696874])
dst = F(4)
DSP.sin(dst, F([970,717,558,553]))
dst.should.be.identicalTo([0.6831956801127874,0.6570320493166915,-0.9332988757369771,0.07960864038153331])
dst = F(4)
DSP.sin(dst, F([31,346,754,371]))
dst.should.be.identicalTo([-0.404037645323065,0.412145950487085,0.01776220433321534,0.28793218456003195])
dst = F(4)
DSP.sin(dst, F([653,977,258,279]))
dst.should.be.identicalTo([-0.43611050264796214,0.03530792620481886,0.37963562682930313,0.5660827877060441])
dst = F(4)
DSP.sin(dst, F([824,46,385,113]))
dst.should.be.identicalTo([0.7850177373512154,0.9017883476488092,0.9880269738337468,-0.09718190589320902])
it "should be able to deal with negative values", ->
dst = F(4)
DSP.sin(dst, F([-443,-398,588,-163]))
dst.should.be.identicalTo([0.035428428178979524,-0.8317580087191733,-0.49876540925697305,0.35491017584493534])
dst = F(4)
DSP.sin(dst, F([715,-840,683,228]))
dst.should.be.identicalTo([-0.9589071712941251,0.9301280920157128,-0.9563935393373727,0.9726230624856244])
dst = F(4)
DSP.sin(dst, F([-719,-985,513,653]))
dst.should.be.identicalTo([-0.41206355362767066,0.9938786672030538,-0.7958423494121123,-0.43611050264796214])
dst = F(4)
DSP.sin(dst, F([-768,-829,-102,-373]))
dst.should.be.identicalTo([-0.9928798314963556,0.3713481244279862,-0.9948267913584063,-0.7509673416102893])
dst = F(4)
DSP.sin(dst, F([801,128,-420,169]))
dst.should.be.identicalTo([0.10592756243034339,0.7210377105017316,0.8268117243068012,-0.6019998676776046])
dst = F(4)
DSP.sin(dst, F([-354,753,-714,417]))
dst.should.be.identicalTo([-0.8414546973619527,-0.8317412740539448,0.7568419012610816,0.7391603938754915])
dst = F(4)
DSP.sin(dst, F([-900,-909,169,-351]))
dst.should.be.identicalTo([-0.9978032744219705,0.8818272681692509,-0.6019998676776046,0.7567827912998033])
dst = F(4)
DSP.sin(dst, F([-924,334,-698,-875]))
dst.should.be.identicalTo([-0.3632556223924401,0.8366721491002946,-0.5366237918890951,-0.9977932782684322])
dst = F(4)
DSP.sin(dst, F([334,-733,473,286]))
dst.should.be.identicalTo([0.8366721491002946,0.8462525264509585,0.9819464674138593,-0.11481475884166603])
it "should be able to deal with decimal values", ->
dst = F(4)
DSP.sin(dst, F([-604.3019876815379,424.8524666763842,-991.2007269449532,326.91611954942346]))
dst.should.be.identicalTo([-0.8984375603847213,-0.6724088750135231,0.9996011439225351,0.18933374663949218])
dst = F(4)
DSP.sin(dst, F([-311.73825543373823,-453.05589586496353,-261.2135475501418,-230.05362274125218]))
dst.should.be.identicalTo([0.6598226585033741,-0.6182810578121639,0.44516391167250696,0.6573968777869129])
dst = F(4)
DSP.sin(dst, F([763.5352071374655,-752.0521180704236,706.3925098627806,-256.47495640441775]))
dst.should.be.identicalTo([-0.1278415003742643,0.936135287203824,0.4491709470862156,0.9068046551045192])
dst = F(4)
DSP.sin(dst, F([249.78634249418974,717.3138982616365,-339.17331555858254,-366.48403014987707]))
dst.should.be.identicalTo([-0.9995581991292518,0.8576968130096599,0.11841254750372664,-0.883044371564514])
dst = F(4)
DSP.sin(dst, F([662.4544677324593,-555.7371713221073,-810.5952558107674,-532.6331648975611]))
dst.should.be.identicalTo([0.40920460857045,-0.3190513573505676,-0.06430677994937578,0.9911406451063676])
dst = F(4)
DSP.sin(dst, F([-663.7307615019381,874.4604736566544,-429.449949413538,-729.3360601179302]))
dst.should.be.identicalTo([0.754381627722623,0.8901690040394954,-0.812392890503447,-0.4675918491097961])
dst = F(4)
DSP.sin(dst, F([-178.64432092756033,-427.73232609033585,-679.3876402080059,-145.33906476572156]))
dst.should.be.identicalTo([-0.41365075613475716,-0.4579832438316917,-0.7198783447781426,-0.7350922236205412])
dst = F(4)
DSP.sin(dst, F([258.7075945921242,-836.8011326529086,535.6880147010088,984.0003657154739]))
dst.should.be.identicalTo([0.8898411934796204,-0.9075811283412465,0.9989205909337815,-0.6302422129033677])
dst = F(4)
DSP.sin(dst, F([-788.5672757402062,845.3683708794415,285.1157356053591,-55.89685356244445]))
dst.should.be.identicalTo([0.027516215703538204,-0.27630477354165645,0.6955577210562959,0.6066296659664036])
describe ".tan", ->
it "should provide correct results", ->
dst = F(4)
DSP.tan(dst, F([275,770,148,149]))
dst.should.be.identicalTo([-9.001181796296159,0.3201068544908864,0.3595365943310712,4.356147801749622])
dst = F(4)
DSP.tan(dst, F([751,304,701,205]))
dst.should.be.identicalTo([0.1607185440726435,-0.9030314218446068,0.4523882845627775,1.0224078883216963])
dst = F(4)
DSP.tan(dst, F([620,881,664,741]))
dst.should.be.identicalTo([1.995500735812638,4.541363517789569,2.086936354817569,-0.44162351920876836])
dst = F(4)
DSP.tan(dst, F([200,123,156,375]))
dst.should.be.identicalTo([-1.7925274837903817,0.5179274715856552,-1.8695649970375994,2.237341969931419])
dst = F(4)
DSP.tan(dst, F([343,605,157,215]))
dst.should.be.identicalTo([0.6359022617264883,-4.026763652295865,-0.07980143414928566,4.956141532909058])
dst = F(4)
DSP.tan(dst, F([664,928,772,636]))
dst.should.be.identicalTo([2.086936354817569,2.8213130272354316,-1.0973768793308942,5.739067843398197])
dst = F(4)
DSP.tan(dst, F([616,461,322,410]))
dst.should.be.identicalTo([0.25304224479821735,-1.059159264606733,75.48441435187762,-45.12160146956503])
dst = F(4)
DSP.tan(dst, F([619,302,720,314]))
dst.should.be.identicalTo([0.10664884614245267,0.4311939452941943,0.6484464631832305,-0.1606257764339343])
dst = F(4)
DSP.tan(dst, F([652,790,839,492]))
dst.should.be.identicalTo([-8.326614466827094,9.008605273835942,0.1972620050231449,-2.8202330442490084])
it "should be able to deal with negative values", ->
dst = F(4)
DSP.tan(dst, F([946,36,869,257]))
dst.should.be.identicalTo([0.400121680243227,7.750470905699148,-2.74265124607259,-0.699808745845877])
dst = F(4)
DSP.tan(dst, F([-913,-280,-598,176]))
dst.should.be.identicalTo([2.598756603035475,-0.42073643065214333,-1.9521670049279674,0.07092999229222396])
dst = F(4)
DSP.tan(dst, F([498,186,-663,-517]))
dst.should.be.identicalTo([-17.352653686610658,0.7539643023649815,-0.12458879220310769,4.737959216732927])
dst = F(4)
DSP.tan(dst, F([523,-956,726,195]))
dst.should.be.identicalTo([13.276903737429045,-1.4157647677287177,0.30069798080014576,0.22493805080802215])
dst = F(4)
DSP.tan(dst, F([383,589,81,775]))
dst.should.be.identicalTo([-0.2813970729750388,20.550379697659352,-0.8109944158318942,-1.4698477011970232])
dst = F(4)
DSP.tan(dst, F([-115,-283,-618,-209]))
dst.should.be.identicalTo([2.9018013542793097,-0.26244959793717443,1.2441164414887007,11.864184723669519])
dst = F(4)
DSP.tan(dst, F([46,979,500,-684]))
dst.should.be.identicalTo([-2.086613531121382,-2.4061155904969183,0.52924386474448,1.1786095069932414])
dst = F(4)
DSP.tan(dst, F([466,-703,-480,-296]))
dst.should.be.identicalTo([1.72046803088796,0.8713419150447788,0.7820119884475774,-0.8258247103286473])
dst = F(4)
DSP.tan(dst, F([-926,435,562,-435]))
dst.should.be.identicalTo([0.9693439870669377,9.006129437754185,-0.3594685137860881,-9.006129437754185])
it "should be able to deal with decimal values", ->
dst = F(4)
DSP.tan(dst, F([-951.8575337715447,-826.2337702326477,-995.2531554736197,-655.4719307459891]))
dst.should.be.identicalTo([0.0450707475089533,0.005097705624625973,0.7317458255103366,2.0708844769112904])
dst = F(4)
DSP.tan(dst, F([473.98962173610926,667.8984928876162,-223.60834013670683,-568.4714294038713]))
dst.should.be.identicalTo([-0.4120710584477723,-3.1212248123091104,-0.620368317372616,0.15813972391172926])
dst = F(4)
DSP.tan(dst, F([-760.2012329734862,-975.1751283183694,16.28387486562133,699.6691273525357]))
dst.should.be.identicalTo([0.06427749935091098,-3.358530562052588,0.6493406950355178,-1.2758950907594622])
dst = F(4)
DSP.tan(dst, F([438.8169292360544,77.93682534247637,239.2899221740663,-741.4051597006619]))
dst.should.be.identicalTo([-1.5783025021621577,-0.6885367379431789,0.5844141764536659,0.010706955645702926])
dst = F(4)
DSP.tan(dst, F([-541.8548490852118,-635.8599653467536,980.138429440558,572.8894108906388]))
dst.should.be.identicalTo([-14.286194727473747,-3.094651555429499,-0.038497481038395585,2.063575939676104])
dst = F(4)
DSP.tan(dst, F([657.2020566090941,-815.0726808235049,297.7706794627011,-397.94842433184385]))
dst.should.be.identicalTo([0.6977168559910942,-5.804243934350636,-0.8096916797066775,1.6798359926582447])
dst = F(4)
DSP.tan(dst, F([44.606460724025965,-248.20736004039645,769.5927764289081,75.34832367673516]))
dst.should.be.identicalTo([0.7202133883616942,-0.021543738926051565,-0.09773310368014967,-0.049941467902984184])
dst = F(4)
DSP.tan(dst, F([-929.0948798879981,-120.98976643756032,-110.95599830150604,465.11333528906107]))
dst.should.be.identicalTo([1.0643189937895943,25.99547549349939,-1.5582830389778979,0.1589410329517878])
dst = F(4)
DSP.tan(dst, F([-619.2412306554615,669.570249505341,281.52328543365,650.3844116814435]))
dst.should.be.identicalTo([-0.36217295650042713,0.435837631434111,-2.7332063640739666,0.07487182491120592])
describe ".floor", ->
it "should provide correct results", ->
dst = F(4)
DSP.floor(dst, F([37,42,342,762]))
dst.should.be.identicalTo([37,42,342,762])
dst = F(4)
DSP.floor(dst, F([39,186,190,754]))
dst.should.be.identicalTo([39,186,190,754])
dst = F(4)
DSP.floor(dst, F([997,588,175,528]))
dst.should.be.identicalTo([997,588,175,528])
dst = F(4)
DSP.floor(dst, F([497,458,290,911]))
dst.should.be.identicalTo([497,458,290,911])
dst = F(4)
DSP.floor(dst, F([959,873,818,977]))
dst.should.be.identicalTo([959,873,818,977])
dst = F(4)
DSP.floor(dst, F([910,204,493,227]))
dst.should.be.identicalTo([910,204,493,227])
dst = F(4)
DSP.floor(dst, F([792,933,933,634]))
dst.should.be.identicalTo([792,933,933,634])
dst = F(4)
DSP.floor(dst, F([510,144,534,646]))
dst.should.be.identicalTo([510,144,534,646])
dst = F(4)
DSP.floor(dst, F([284,954,13,703]))
dst.should.be.identicalTo([284,954,13,703])
it "should be able to deal with negative values", ->
dst = F(4)
DSP.floor(dst, F([-948,-467,904,-850]))
dst.should.be.identicalTo([-948,-467,904,-850])
dst = F(4)
DSP.floor(dst, F([331,-24,-193,655]))
dst.should.be.identicalTo([331,-24,-193,655])
dst = F(4)
DSP.floor(dst, F([-396,305,58,-225]))
dst.should.be.identicalTo([-396,305,58,-225])
dst = F(4)
DSP.floor(dst, F([-889,-989,-580,197]))
dst.should.be.identicalTo([-889,-989,-580,197])
dst = F(4)
DSP.floor(dst, F([-441,805,507,507]))
dst.should.be.identicalTo([-441,805,507,507])
dst = F(4)
DSP.floor(dst, F([783,241,914,716]))
dst.should.be.identicalTo([783,241,914,716])
dst = F(4)
DSP.floor(dst, F([741,-316,385,-785]))
dst.should.be.identicalTo([741,-316,385,-785])
dst = F(4)
DSP.floor(dst, F([-854,-494,-539,377]))
dst.should.be.identicalTo([-854,-494,-539,377])
dst = F(4)
DSP.floor(dst, F([-67,549,-4,520]))
dst.should.be.identicalTo([-67,549,-4,520])
it "should be able to deal with decimal values", ->
dst = F(4)
DSP.floor(dst, F([-964.3439133651555,-776.8948446027935,299.41705195233226,-971.3707431219518]))
dst.should.be.identicalTo([-965,-777,299,-972])
dst = F(4)
DSP.floor(dst, F([205.30538819730282,-532.3934159241617,-664.634273853153,-878.9872764609754]))
dst.should.be.identicalTo([205,-533,-665,-879])
dst = F(4)
DSP.floor(dst, F([166.76875622943044,347.96174615621567,-606.1405916698277,-459.3151812441647]))
dst.should.be.identicalTo([166,347,-607,-460])
dst = F(4)
DSP.floor(dst, F([-661.070007365197,-171.40982998535037,-246.10135378316045,768.7861816957593]))
dst.should.be.identicalTo([-662,-172,-247,768])
dst = F(4)
DSP.floor(dst, F([-422.8514195419848,856.6253883764148,437.8657825291157,-50.09121634066105]))
dst.should.be.identicalTo([-423,856,437,-51])
dst = F(4)
DSP.floor(dst, F([-593.0654439143836,381.7968210205436,-247.2262061201036,847.7158448658884]))
dst.should.be.identicalTo([-594,381,-248,847])
dst = F(4)
DSP.floor(dst, F([-206.87677338719368,-836.1881747841835,861.7155225947499,-271.3405159302056]))
dst.should.be.identicalTo([-207,-837,861,-272])
dst = F(4)
DSP.floor(dst, F([300.4317134618759,-9.783496614545584,627.0715612918139,-957.7022567391396]))
dst.should.be.identicalTo([300,-10,627,-958])
dst = F(4)
DSP.floor(dst, F([-343.6468131840229,-437.77259066700935,832.6526107266545,-295.6105708144605]))
dst.should.be.identicalTo([-344,-438,832,-296])
describe ".ceil", ->
it "should provide correct results", ->
dst = F(4)
DSP.ceil(dst, F([260,658,245,510]))
dst.should.be.identicalTo([260,658,245,510])
dst = F(4)
DSP.ceil(dst, F([695,854,303,609]))
dst.should.be.identicalTo([695,854,303,609])
dst = F(4)
DSP.ceil(dst, F([294,544,663,379]))
dst.should.be.identicalTo([294,544,663,379])
dst = F(4)
DSP.ceil(dst, F([726,385,463,845]))
dst.should.be.identicalTo([726,385,463,845])
dst = F(4)
DSP.ceil(dst, F([571,99,490,897]))
dst.should.be.identicalTo([571,99,490,897])
dst = F(4)
DSP.ceil(dst, F([690,41,545,190]))
dst.should.be.identicalTo([690,41,545,190])
dst = F(4)
DSP.ceil(dst, F([426,843,394,737]))
dst.should.be.identicalTo([426,843,394,737])
dst = F(4)
DSP.ceil(dst, F([3,616,424,828]))
dst.should.be.identicalTo([3,616,424,828])
dst = F(4)
DSP.ceil(dst, F([996,394,578,908]))
dst.should.be.identicalTo([996,394,578,908])
it "should be able to deal with negative values", ->
dst = F(4)
DSP.ceil(dst, F([-749,-710,-998,-854]))
dst.should.be.identicalTo([-749,-710,-998,-854])
dst = F(4)
DSP.ceil(dst, F([-741,-712,-68,363]))
dst.should.be.identicalTo([-741,-712,-68,363])
dst = F(4)
DSP.ceil(dst, F([334,-613,-207,-305]))
dst.should.be.identicalTo([334,-613,-207,-305])
dst = F(4)
DSP.ceil(dst, F([643,464,802,-726]))
dst.should.be.identicalTo([643,464,802,-726])
dst = F(4)
DSP.ceil(dst, F([208,-50,-372,612]))
dst.should.be.identicalTo([208,-50,-372,612])
dst = F(4)
DSP.ceil(dst, F([-874,-478,-515,494]))
dst.should.be.identicalTo([-874,-478,-515,494])
dst = F(4)
DSP.ceil(dst, F([-832,253,-251,-459]))
dst.should.be.identicalTo([-832,253,-251,-459])
dst = F(4)
DSP.ceil(dst, F([97,191,-151,-883]))
dst.should.be.identicalTo([97,191,-151,-883])
dst = F(4)
DSP.ceil(dst, F([426,389,-325,-722]))
dst.should.be.identicalTo([426,389,-325,-722])
it "should be able to deal with decimal values", ->
dst = F(4)
DSP.ceil(dst, F([71.55867060646415,-214.71129171550274,-786.2984924577177,613.5131972841918]))
dst.should.be.identicalTo([72,-214,-786,614])
dst = F(4)
DSP.ceil(dst, F([393.80055852234364,-337.00432162731886,-27.298009023070335,-385.6712277047336]))
dst.should.be.identicalTo([394,-337,-27,-385])
dst = F(4)
DSP.ceil(dst, F([825.4248979501426,671.7203631997108,277.31309505179524,113.80593897774816]))
dst.should.be.identicalTo([826,672,278,114])
dst = F(4)
DSP.ceil(dst, F([-569.5767854340374,143.2151896879077,-675.8078564889729,931.5523034892976]))
dst.should.be.identicalTo([-569,144,-675,932])
dst = F(4)
DSP.ceil(dst, F([-328.63991474732757,-942.4290177412331,-901.5754787251353,872.3218995146453]))
dst.should.be.identicalTo([-328,-942,-901,873])
dst = F(4)
DSP.ceil(dst, F([656.5065430477262,581.8843049928546,-181.67387694120407,-572.1365846693516]))
dst.should.be.identicalTo([657,582,-181,-572])
dst = F(4)
DSP.ceil(dst, F([-84.53815151005983,656.3626183196902,-751.9896333105862,210.12438833713531]))
dst.should.be.identicalTo([-84,657,-751,211])
dst = F(4)
DSP.ceil(dst, F([521.8214965425432,-223.2564021833241,500.8180630393326,-981.6649639979005]))
dst.should.be.identicalTo([522,-223,501,-981])
dst = F(4)
DSP.ceil(dst, F([7.189578376710415,240.08653359487653,-74.68059659004211,305.92996114864945]))
dst.should.be.identicalTo([8,241,-74,306])
describe ".round", ->
it "should provide correct results", ->
dst = F(4)
DSP.round(dst, F([989,995,624,906]))
dst.should.be.identicalTo([989,995,624,906])
dst = F(4)
DSP.round(dst, F([724,939,687,264]))
dst.should.be.identicalTo([724,939,687,264])
dst = F(4)
DSP.round(dst, F([704,803,350,228]))
dst.should.be.identicalTo([704,803,350,228])
dst = F(4)
DSP.round(dst, F([557,814,472,634]))
dst.should.be.identicalTo([557,814,472,634])
dst = F(4)