1use melodium_core::*;
2use melodium_macro::{check, mel_function, mel_treatment};
3
4#[mel_function(
8 generic F (Float)
9)]
10pub fn is_nan(value: F) -> bool {
11 value.float_is_nan()
12}
13
14#[mel_treatment(
18 generic F (Float)
19 input value Stream<F>
20 output nan Stream<bool>
21)]
22pub async fn is_nan() {
23 while let Ok(values) = value
24 .recv_many()
25 .await
26 .map(|values| Into::<VecDeque<Value>>::into(values))
27 {
28 check!(
29 nan.send_many(TransmissionValue::Bool(
30 values.into_iter().map(|val| val.float_is_nan()).collect()
31 ))
32 .await
33 )
34 }
35}
36
37#[mel_function(
41 generic F (Float)
42)]
43pub fn is_finite(value: F) -> bool {
44 value.float_is_finite()
45}
46
47#[mel_treatment(
51 generic F (Float)
52 input value Stream<F>
53 output finite Stream<bool>
54)]
55pub async fn is_finite() {
56 while let Ok(values) = value
57 .recv_many()
58 .await
59 .map(|values| Into::<VecDeque<Value>>::into(values))
60 {
61 check!(
62 finite
63 .send_many(TransmissionValue::Bool(
64 values
65 .into_iter()
66 .map(|val| val.float_is_finite())
67 .collect()
68 ))
69 .await
70 )
71 }
72}
73
74#[mel_function(
76 generic F (Float)
77)]
78pub fn is_infinite(value: F) -> bool {
79 value.float_is_infinite()
80}
81
82#[mel_treatment(
84 generic F (Float)
85 input value Stream<F>
86 output infinite Stream<bool>
87)]
88pub async fn is_infinite() {
89 while let Ok(values) = value
90 .recv_many()
91 .await
92 .map(|values| Into::<VecDeque<Value>>::into(values))
93 {
94 check!(
95 infinite
96 .send_many(TransmissionValue::Bool(
97 values
98 .into_iter()
99 .map(|val| val.float_is_infinite())
100 .collect()
101 ))
102 .await
103 )
104 }
105}
106
107#[mel_function(
111 generic F (Float)
112)]
113pub fn is_normal(value: F) -> bool {
114 value.float_is_normal()
115}
116
117#[mel_treatment(
121 generic F (Float)
122 input value Stream<F>
123 output normal Stream<bool>
124)]
125pub async fn is_normal() {
126 while let Ok(values) = value
127 .recv_many()
128 .await
129 .map(|values| Into::<VecDeque<Value>>::into(values))
130 {
131 check!(
132 normal
133 .send_many(TransmissionValue::Bool(
134 values
135 .into_iter()
136 .map(|val| val.float_is_normal())
137 .collect()
138 ))
139 .await
140 )
141 }
142}
143
144#[mel_function(
148 generic F (Float)
149)]
150pub fn is_subnormal(value: F) -> bool {
151 value.float_is_subnormal()
152}
153
154#[mel_treatment(
158 generic F (Float)
159 input value Stream<F>
160 output subnormal Stream<bool>
161)]
162pub async fn is_subnormal() {
163 while let Ok(values) = value
164 .recv_many()
165 .await
166 .map(|values| Into::<VecDeque<Value>>::into(values))
167 {
168 check!(
169 subnormal
170 .send_many(TransmissionValue::Bool(
171 values
172 .into_iter()
173 .map(|val| val.float_is_subnormal())
174 .collect()
175 ))
176 .await
177 )
178 }
179}
180
181#[mel_function(
183 generic F (Float)
184)]
185pub fn floor(val: F) -> F {
186 val.float_floor()
187}
188
189#[mel_treatment(
191 generic F (Float)
192 input value Stream<F>
193 output floor Stream<F>
194)]
195pub async fn floor() {
196 while let Ok(values) = value
197 .recv_many()
198 .await
199 .map(|values| Into::<VecDeque<Value>>::into(values))
200 {
201 check!(
202 floor
203 .send_many(TransmissionValue::Other(
204 values.into_iter().map(|val| val.float_floor()).collect()
205 ))
206 .await
207 )
208 }
209}
210#[mel_function(
212 generic F (Float)
213)]
214pub fn ceil(val: F) -> F {
215 val.float_ceil()
216}
217
218#[mel_treatment(
220 generic F (Float)
221 input value Stream<F>
222 output ceil Stream<F>
223)]
224pub async fn ceil() {
225 while let Ok(values) = value
226 .recv_many()
227 .await
228 .map(|values| Into::<VecDeque<Value>>::into(values))
229 {
230 check!(
231 ceil.send_many(TransmissionValue::Other(
232 values.into_iter().map(|val| val.float_ceil()).collect()
233 ))
234 .await
235 )
236 }
237}
238#[mel_function(
240 generic F (Float)
241)]
242pub fn round(val: F) -> F {
243 val.float_round()
244}
245
246#[mel_treatment(
248 generic F (Float)
249 input value Stream<F>
250 output round Stream<F>
251)]
252pub async fn round() {
253 while let Ok(values) = value
254 .recv_many()
255 .await
256 .map(|values| Into::<VecDeque<Value>>::into(values))
257 {
258 check!(
259 round
260 .send_many(TransmissionValue::Other(
261 values.into_iter().map(|val| val.float_round()).collect()
262 ))
263 .await
264 )
265 }
266}
267#[mel_function(
269 generic F (Float)
270)]
271pub fn trunc(val: F) -> F {
272 val.float_trunc()
273}
274
275#[mel_treatment(
277 generic F (Float)
278 input value Stream<F>
279 output trunc Stream<F>
280)]
281pub async fn trunc() {
282 while let Ok(values) = value
283 .recv_many()
284 .await
285 .map(|values| Into::<VecDeque<Value>>::into(values))
286 {
287 check!(
288 trunc
289 .send_many(TransmissionValue::Other(
290 values.into_iter().map(|val| val.float_trunc()).collect()
291 ))
292 .await
293 )
294 }
295}
296#[mel_function(
298 generic F (Float)
299)]
300pub fn fract(val: F) -> F {
301 val.float_fract()
302}
303
304#[mel_treatment(
306 generic F (Float)
307 input value Stream<F>
308 output fract Stream<F>
309)]
310pub async fn fract() {
311 while let Ok(values) = value
312 .recv_many()
313 .await
314 .map(|values| Into::<VecDeque<Value>>::into(values))
315 {
316 check!(
317 fract
318 .send_many(TransmissionValue::Other(
319 values.into_iter().map(|val| val.float_fract()).collect()
320 ))
321 .await
322 )
323 }
324}
325#[mel_function(
327 generic F (Float)
328)]
329pub fn recip(val: F) -> F {
330 val.float_recip()
331}
332
333#[mel_treatment(
335 generic F (Float)
336 input value Stream<F>
337 output recip Stream<F>
338)]
339pub async fn recip() {
340 while let Ok(values) = value
341 .recv_many()
342 .await
343 .map(|values| Into::<VecDeque<Value>>::into(values))
344 {
345 check!(
346 recip
347 .send_many(TransmissionValue::Other(
348 values.into_iter().map(|val| val.float_recip()).collect()
349 ))
350 .await
351 )
352 }
353}
354
355#[mel_function(
357 generic F (Float)
358)]
359pub fn pow(val: F, exp: F) -> F {
360 val.float_pow(&exp)
361}
362
363#[mel_treatment(
365 generic F (Float)
366 input value Stream<F>
367 output pow Stream<F>
368)]
369pub async fn pow(exp: F) {
370 while let Ok(values) = value
371 .recv_many()
372 .await
373 .map(|values| Into::<VecDeque<Value>>::into(values))
374 {
375 check!(
376 pow.send_many(TransmissionValue::Other(
377 values.into_iter().map(|val| val.float_pow(&exp)).collect()
378 ))
379 .await
380 )
381 }
382}
383
384#[mel_function(
386 generic F (Float)
387)]
388pub fn sqrt(val: F) -> F {
389 val.float_sqrt()
390}
391
392#[mel_treatment(
394 generic F (Float)
395 input value Stream<F>
396 output sqrt Stream<F>
397)]
398pub async fn sqrt() {
399 while let Ok(values) = value
400 .recv_many()
401 .await
402 .map(|values| Into::<VecDeque<Value>>::into(values))
403 {
404 check!(
405 sqrt.send_many(TransmissionValue::Other(
406 values.into_iter().map(|val| val.float_sqrt()).collect()
407 ))
408 .await
409 )
410 }
411}
412#[mel_function(
414 generic F (Float)
415)]
416pub fn exp(val: F) -> F {
417 val.float_exp()
418}
419
420#[mel_treatment(
422 generic F (Float)
423 input value Stream<F>
424 output exp Stream<F>
425)]
426pub async fn exp() {
427 while let Ok(values) = value
428 .recv_many()
429 .await
430 .map(|values| Into::<VecDeque<Value>>::into(values))
431 {
432 check!(
433 exp.send_many(TransmissionValue::Other(
434 values.into_iter().map(|val| val.float_exp()).collect()
435 ))
436 .await
437 )
438 }
439}
440#[mel_function(
442 generic F (Float)
443)]
444pub fn exp2(val: F) -> F {
445 val.float_exp2()
446}
447
448#[mel_treatment(
450 generic F (Float)
451 input value Stream<F>
452 output exp2 Stream<F>
453)]
454pub async fn exp2() {
455 while let Ok(values) = value
456 .recv_many()
457 .await
458 .map(|values| Into::<VecDeque<Value>>::into(values))
459 {
460 check!(
461 exp2.send_many(TransmissionValue::Other(
462 values.into_iter().map(|val| val.float_exp2()).collect()
463 ))
464 .await
465 )
466 }
467}
468#[mel_function(
470 generic F (Float)
471)]
472pub fn ln(val: F) -> F {
473 val.float_ln()
474}
475
476#[mel_treatment(
478 generic F (Float)
479 input value Stream<F>
480 output ln Stream<F>
481)]
482pub async fn ln() {
483 while let Ok(values) = value
484 .recv_many()
485 .await
486 .map(|values| Into::<VecDeque<Value>>::into(values))
487 {
488 check!(
489 ln.send_many(TransmissionValue::Other(
490 values.into_iter().map(|val| val.float_ln()).collect()
491 ))
492 .await
493 )
494 }
495}
496
497#[mel_function(
499 generic F (Float)
500)]
501pub fn log(val: F, base: F) -> F {
502 val.float_log(&base)
503}
504
505#[mel_treatment(
507 generic F (Float)
508 input value Stream<F>
509 output log Stream<F>
510)]
511pub async fn log(base: F) {
512 while let Ok(values) = value
513 .recv_many()
514 .await
515 .map(|values| Into::<VecDeque<Value>>::into(values))
516 {
517 check!(
518 log.send_many(TransmissionValue::Other(
519 values.into_iter().map(|val| val.float_log(&base)).collect()
520 ))
521 .await
522 )
523 }
524}
525
526#[mel_function(
528 generic F (Float)
529)]
530pub fn log2(val: F) -> F {
531 val.float_log2()
532}
533
534#[mel_treatment(
536 generic F (Float)
537 input value Stream<F>
538 output log2 Stream<F>
539)]
540pub async fn log2() {
541 while let Ok(values) = value
542 .recv_many()
543 .await
544 .map(|values| Into::<VecDeque<Value>>::into(values))
545 {
546 check!(
547 log2.send_many(TransmissionValue::Other(
548 values.into_iter().map(|val| val.float_log2()).collect()
549 ))
550 .await
551 )
552 }
553}
554#[mel_function(
556 generic F (Float)
557)]
558pub fn log10(val: F) -> F {
559 val.float_log10()
560}
561
562#[mel_treatment(
564 generic F (Float)
565 input value Stream<F>
566 output log10 Stream<F>
567)]
568pub async fn log10() {
569 while let Ok(values) = value
570 .recv_many()
571 .await
572 .map(|values| Into::<VecDeque<Value>>::into(values))
573 {
574 check!(
575 log10
576 .send_many(TransmissionValue::Other(
577 values.into_iter().map(|val| val.float_log10()).collect()
578 ))
579 .await
580 )
581 }
582}
583#[mel_function(
585 generic F (Float)
586)]
587pub fn cbrt(val: F) -> F {
588 val.float_cbrt()
589}
590
591#[mel_treatment(
593 generic F (Float)
594 input value Stream<F>
595 output cbrt Stream<F>
596)]
597pub async fn cbrt() {
598 while let Ok(values) = value
599 .recv_many()
600 .await
601 .map(|values| Into::<VecDeque<Value>>::into(values))
602 {
603 check!(
604 cbrt.send_many(TransmissionValue::Other(
605 values.into_iter().map(|val| val.float_cbrt()).collect()
606 ))
607 .await
608 )
609 }
610}
611
612#[mel_function(
614 generic F (Float)
615)]
616pub fn hypot(val: F, n: F) -> F {
617 val.float_hypot(&n)
618}
619
620#[mel_treatment(
622 generic F (Float)
623 input value Stream<F>
624 output hypot Stream<F>
625)]
626pub async fn hypot(n: F) {
627 while let Ok(values) = value
628 .recv_many()
629 .await
630 .map(|values| Into::<VecDeque<Value>>::into(values))
631 {
632 check!(
633 hypot
634 .send_many(TransmissionValue::Other(
635 values.into_iter().map(|val| val.float_hypot(&n)).collect()
636 ))
637 .await
638 )
639 }
640}
641
642#[mel_function(
644 generic F (Float)
645)]
646pub fn sin(val: F) -> F {
647 val.float_sin()
648}
649
650#[mel_treatment(
652 generic F (Float)
653 input value Stream<F>
654 output sin Stream<F>
655)]
656pub async fn sin() {
657 while let Ok(values) = value
658 .recv_many()
659 .await
660 .map(|values| Into::<VecDeque<Value>>::into(values))
661 {
662 check!(
663 sin.send_many(TransmissionValue::Other(
664 values.into_iter().map(|val| val.float_sin()).collect()
665 ))
666 .await
667 )
668 }
669}
670#[mel_function(
672 generic F (Float)
673)]
674pub fn cos(val: F) -> F {
675 val.float_cos()
676}
677
678#[mel_treatment(
680 generic F (Float)
681 input value Stream<F>
682 output cos Stream<F>
683)]
684pub async fn cos() {
685 while let Ok(values) = value
686 .recv_many()
687 .await
688 .map(|values| Into::<VecDeque<Value>>::into(values))
689 {
690 check!(
691 cos.send_many(TransmissionValue::Other(
692 values.into_iter().map(|val| val.float_cos()).collect()
693 ))
694 .await
695 )
696 }
697}
698#[mel_function(
700 generic F (Float)
701)]
702pub fn tan(val: F) -> F {
703 val.float_tan()
704}
705
706#[mel_treatment(
708 generic F (Float)
709 input value Stream<F>
710 output tan Stream<F>
711)]
712pub async fn tan() {
713 while let Ok(values) = value
714 .recv_many()
715 .await
716 .map(|values| Into::<VecDeque<Value>>::into(values))
717 {
718 check!(
719 tan.send_many(TransmissionValue::Other(
720 values.into_iter().map(|val| val.float_tan()).collect()
721 ))
722 .await
723 )
724 }
725}
726#[mel_function(
728 generic F (Float)
729)]
730pub fn asin(val: F) -> F {
731 val.float_asin()
732}
733
734#[mel_treatment(
736 generic F (Float)
737 input value Stream<F>
738 output asin Stream<F>
739)]
740pub async fn asin() {
741 while let Ok(values) = value
742 .recv_many()
743 .await
744 .map(|values| Into::<VecDeque<Value>>::into(values))
745 {
746 check!(
747 asin.send_many(TransmissionValue::Other(
748 values.into_iter().map(|val| val.float_asin()).collect()
749 ))
750 .await
751 )
752 }
753}
754#[mel_function(
756 generic F (Float)
757)]
758pub fn acos(val: F) -> F {
759 val.float_acos()
760}
761
762#[mel_treatment(
764 generic F (Float)
765 input value Stream<F>
766 output acos Stream<F>
767)]
768pub async fn acos() {
769 while let Ok(values) = value
770 .recv_many()
771 .await
772 .map(|values| Into::<VecDeque<Value>>::into(values))
773 {
774 check!(
775 acos.send_many(TransmissionValue::Other(
776 values.into_iter().map(|val| val.float_acos()).collect()
777 ))
778 .await
779 )
780 }
781}
782#[mel_function(
784 generic F (Float)
785)]
786pub fn atan(val: F) -> F {
787 val.float_atan()
788}
789
790#[mel_treatment(
792 generic F (Float)
793 input value Stream<F>
794 output atan Stream<F>
795)]
796pub async fn atan() {
797 while let Ok(values) = value
798 .recv_many()
799 .await
800 .map(|values| Into::<VecDeque<Value>>::into(values))
801 {
802 check!(
803 atan.send_many(TransmissionValue::Other(
804 values.into_iter().map(|val| val.float_atan()).collect()
805 ))
806 .await
807 )
808 }
809}
810
811#[mel_function(
813 generic F (Float)
814)]
815pub fn atan2(val: F, n: F) -> F {
816 val.float_atan2(&n)
817}
818
819#[mel_treatment(
821 generic F (Float)
822 input value Stream<F>
823 output atan2 Stream<F>
824)]
825pub async fn atan2(n: F) {
826 while let Ok(values) = value
827 .recv_many()
828 .await
829 .map(|values| Into::<VecDeque<Value>>::into(values))
830 {
831 check!(
832 atan2
833 .send_many(TransmissionValue::Other(
834 values.into_iter().map(|val| val.float_atan2(&n)).collect()
835 ))
836 .await
837 )
838 }
839}
840
841#[mel_function(
843 generic F (Float)
844)]
845pub fn sinh(val: F) -> F {
846 val.float_sinh()
847}
848
849#[mel_treatment(
851 generic F (Float)
852 input value Stream<F>
853 output sinh Stream<F>
854)]
855pub async fn sinh() {
856 while let Ok(values) = value
857 .recv_many()
858 .await
859 .map(|values| Into::<VecDeque<Value>>::into(values))
860 {
861 check!(
862 sinh.send_many(TransmissionValue::Other(
863 values.into_iter().map(|val| val.float_sinh()).collect()
864 ))
865 .await
866 )
867 }
868}
869#[mel_function(
871 generic F (Float)
872)]
873pub fn cosh(val: F) -> F {
874 val.float_cosh()
875}
876
877#[mel_treatment(
879 generic F (Float)
880 input value Stream<F>
881 output cosh Stream<F>
882)]
883pub async fn cosh() {
884 while let Ok(values) = value
885 .recv_many()
886 .await
887 .map(|values| Into::<VecDeque<Value>>::into(values))
888 {
889 check!(
890 cosh.send_many(TransmissionValue::Other(
891 values.into_iter().map(|val| val.float_cosh()).collect()
892 ))
893 .await
894 )
895 }
896}
897#[mel_function(
899 generic F (Float)
900)]
901pub fn tanh(val: F) -> F {
902 val.float_tanh()
903}
904
905#[mel_treatment(
907 generic F (Float)
908 input value Stream<F>
909 output tanh Stream<F>
910)]
911pub async fn tanh() {
912 while let Ok(values) = value
913 .recv_many()
914 .await
915 .map(|values| Into::<VecDeque<Value>>::into(values))
916 {
917 check!(
918 tanh.send_many(TransmissionValue::Other(
919 values.into_iter().map(|val| val.float_tanh()).collect()
920 ))
921 .await
922 )
923 }
924}
925#[mel_function(
927 generic F (Float)
928)]
929pub fn asinh(val: F) -> F {
930 val.float_asinh()
931}
932
933#[mel_treatment(
935 generic F (Float)
936 input value Stream<F>
937 output asinh Stream<F>
938)]
939pub async fn asinh() {
940 while let Ok(values) = value
941 .recv_many()
942 .await
943 .map(|values| Into::<VecDeque<Value>>::into(values))
944 {
945 check!(
946 asinh
947 .send_many(TransmissionValue::Other(
948 values.into_iter().map(|val| val.float_asinh()).collect()
949 ))
950 .await
951 )
952 }
953}
954#[mel_function(
956 generic F (Float)
957)]
958pub fn acosh(val: F) -> F {
959 val.float_acosh()
960}
961
962#[mel_treatment(
964 generic F (Float)
965 input value Stream<F>
966 output acosh Stream<F>
967)]
968pub async fn acosh() {
969 while let Ok(values) = value
970 .recv_many()
971 .await
972 .map(|values| Into::<VecDeque<Value>>::into(values))
973 {
974 check!(
975 acosh
976 .send_many(TransmissionValue::Other(
977 values.into_iter().map(|val| val.float_acosh()).collect()
978 ))
979 .await
980 )
981 }
982}
983#[mel_function(
985 generic F (Float)
986)]
987pub fn atanh(val: F) -> F {
988 val.float_atanh()
989}
990
991#[mel_treatment(
993 generic F (Float)
994 input value Stream<F>
995 output atanh Stream<F>
996)]
997pub async fn atanh() {
998 while let Ok(values) = value
999 .recv_many()
1000 .await
1001 .map(|values| Into::<VecDeque<Value>>::into(values))
1002 {
1003 check!(
1004 atanh
1005 .send_many(TransmissionValue::Other(
1006 values.into_iter().map(|val| val.float_atanh()).collect()
1007 ))
1008 .await
1009 )
1010 }
1011}
1012#[mel_function(
1014 generic F (Float)
1015)]
1016pub fn to_degrees(val: F) -> F {
1017 val.float_to_degrees()
1018}
1019
1020#[mel_treatment(
1022 generic F (Float)
1023 input value Stream<F>
1024 output to_degrees Stream<F>
1025)]
1026pub async fn to_degrees() {
1027 while let Ok(values) = value
1028 .recv_many()
1029 .await
1030 .map(|values| Into::<VecDeque<Value>>::into(values))
1031 {
1032 check!(
1033 to_degrees
1034 .send_many(TransmissionValue::Other(
1035 values
1036 .into_iter()
1037 .map(|val| val.float_to_degrees())
1038 .collect()
1039 ))
1040 .await
1041 )
1042 }
1043}
1044#[mel_function(
1046 generic F (Float)
1047)]
1048pub fn to_radians(val: F) -> F {
1049 val.float_to_radians()
1050}
1051
1052#[mel_treatment(
1054 generic F (Float)
1055 input value Stream<F>
1056 output to_radians Stream<F>
1057)]
1058pub async fn to_radians() {
1059 while let Ok(values) = value
1060 .recv_many()
1061 .await
1062 .map(|values| Into::<VecDeque<Value>>::into(values))
1063 {
1064 check!(
1065 to_radians
1066 .send_many(TransmissionValue::Other(
1067 values
1068 .into_iter()
1069 .map(|val| val.float_to_radians())
1070 .collect()
1071 ))
1072 .await
1073 )
1074 }
1075}