Skip to content

Commit 3079333

Browse files
committed
New "collatz" test
1 parent 8d2fc10 commit 3079333

File tree

7 files changed

+48
-0
lines changed

7 files changed

+48
-0
lines changed

src/lower1/control_flow/rvalue.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,11 @@ pub fn handle_rvalue<'a>(
4545
op1: oomir_op1,
4646
op2: oomir_op2,
4747
}),
48+
BinOp::Div => instructions.push(oomir::Instruction::Div {
49+
dest,
50+
op1: oomir_op1,
51+
op2: oomir_op2,
52+
}),
4853
BinOp::Eq => instructions.push(oomir::Instruction::Eq {
4954
dest,
5055
op1: oomir_op1,
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../../../../config.toml

tests/binary/collatz/Cargo.lock

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/binary/collatz/Cargo.toml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
[package]
2+
name = "collatz"
3+
version = "0.1.0"
4+
edition = "2024"
5+
6+
[dependencies]
File renamed without changes.

tests/binary/collatz/no_jvm_target.flag

Whitespace-only changes.

tests/binary/collatz/src/main.rs

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
fn collatz(n: u32) -> u32 {
2+
if n == 1 {
3+
1
4+
} else if n % 2 == 0 {
5+
collatz(n / 2)
6+
} else {
7+
collatz(3 * n + 1)
8+
}
9+
}
10+
11+
fn check_up_to(current: u32, limit: u32) {
12+
if current > limit {
13+
return;
14+
} else {
15+
let result = collatz(current);
16+
if result != 1 {
17+
panic!("The collatz conjecture broke? This shouldn't happen.");
18+
}
19+
check_up_to(current + 1, limit);
20+
}
21+
}
22+
23+
fn main() {
24+
// test check_up_to a few times
25+
check_up_to(1, 10);
26+
check_up_to(70, 100);
27+
check_up_to(1000, 1010);
28+
check_up_to(10000, 10010);
29+
}

0 commit comments

Comments
 (0)