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