ctoolbox/formats/eite/util/
math.rs1pub fn is_nonnegative_i32(n: i32) -> bool {
3 n >= 0
4}
5pub fn is_negative_i32(n: i32) -> bool {
6 n < 0
7}
8pub fn is_positive_i32(n: i32) -> bool {
9 n > 0
10}
11pub fn is_nonpositive_i32(n: i32) -> bool {
12 n <= 0
13}
14pub fn is_even_i32(n: i32) -> bool {
15 n % 2 == 0
16}
17pub fn is_odd_i32(n: i32) -> bool {
18 n % 2 != 0
19}
20
21pub fn int_is_between_i32(n: i32, a: i32, b: i32) -> bool {
22 n >= a && n <= b
23}
24
25pub fn is_nonnegative_u32(_n: u32) -> bool {
27 true
28} pub fn is_negative_u32(_n: u32) -> bool {
30 false
31} pub fn is_positive_u32(n: u32) -> bool {
33 n > 0
34}
35pub fn is_nonpositive_u32(n: u32) -> bool {
36 n == 0
37}
38pub fn is_even_u32(n: u32) -> bool {
39 n.is_multiple_of(2)
40}
41pub fn is_odd_u32(n: u32) -> bool {
42 !n.is_multiple_of(2)
43}
44
45pub fn int_is_between_u32(n: u32, a: u32, b: u32) -> bool {
46 n >= a && n <= b
47}
48
49pub fn ge_int(a: i32, b: i32) -> bool {
54 a >= b
55}
56pub fn le_int(a: i32, b: i32) -> bool {
57 a <= b
58}
59pub fn ngt_int(a: i32, b: i32) -> bool {
60 a <= b
61}
62pub fn nlt_int(a: i32, b: i32) -> bool {
63 a >= b
64}
65pub fn nge_int(a: i32, b: i32) -> bool {
66 a < b
67}
68pub fn nle_int(a: i32, b: i32) -> bool {
69 a > b
70}
71
72#[cfg(test)]
73mod tests {
74 use super::*;
75
76 #[crate::ctb_test]
77 fn test_number_predicates() {
78 assert!(is_nonnegative_u32(0));
79 assert!(!is_negative_u32(0));
80 assert!(is_positive_u32(5));
81 assert!(is_nonpositive_u32(0));
82 assert!(is_even_u32(4));
83 assert!(is_odd_u32(5));
84 assert!(int_is_between_u32(5, 1, 10));
85 assert!(!int_is_between_u32(0, 1, 10));
86
87 assert!(is_nonnegative_i32(0));
88 assert!(is_negative_i32(-1));
89 assert!(!is_negative_i32(0));
90 assert!(is_positive_i32(5));
91 assert!(is_nonpositive_i32(0));
92 assert!(is_even_i32(4));
93 assert!(is_odd_i32(5));
94 assert!(int_is_between_i32(5, 1, 10));
95 assert!(!int_is_between_i32(0, 1, 10));
96 }
97}