lib-nested/math/fib/src/main.rs

63 lines
997 B
Rust
Raw Normal View History

2021-04-19 05:02:46 +02:00
use std::{
fs::File,
io::{Read, Write},
2021-11-19 12:19:52 +01:00
os::unix::io::FromRawFd,
2021-04-19 05:02:46 +02:00
};
fn fib(n: u64) -> u64 {
let mut y = 0;
let mut y1 = 1;
let mut y2 = 0;
2021-11-19 12:19:52 +01:00
for _ in 0..n {
2021-04-19 05:02:46 +02:00
y = y1 + y2;
y2 = y1;
y1 = y;
}
y
}
fn main() {
nested::magic_header();
eprintln!(" Fibonacci Sequence");
nested::magic_header();
2021-11-19 12:19:52 +01:00
eprintln!(
"
interface (Sequence ) 0 1"
);
2021-04-19 05:02:46 +02:00
let mut f0 = unsafe { File::from_raw_fd(0) };
2021-11-19 12:19:52 +01:00
eprintln!(
"
2021-05-13 16:22:30 +02:00
>0: n
2021-04-19 05:02:46 +02:00
( )
( MachineInt )
( MachineWord )
2021-05-13 16:22:30 +02:00
( Stream MachineSyllab )
2021-11-19 12:19:52 +01:00
"
);
2021-04-19 05:02:46 +02:00
let mut f1 = unsafe { File::from_raw_fd(1) };
2021-11-19 12:19:52 +01:00
eprintln!(
"
2021-05-13 16:22:30 +02:00
<1: n'th fibonacci number
2021-04-19 05:02:46 +02:00
( )
( MachineInt )
( MachineWord )
2021-05-13 16:22:30 +02:00
( Stream MachineSyllab )
2021-11-19 12:19:52 +01:00
"
);
2021-04-19 05:02:46 +02:00
nested::magic_header();
let mut bytes = [0 as u8; 8];
2021-05-13 16:22:30 +02:00
f0.read_exact(&mut bytes).expect("");
2021-04-19 05:02:46 +02:00
let n = u64::from_le_bytes(bytes);
bytes = fib(n).to_le_bytes();
2021-05-13 16:22:30 +02:00
f1.write(&bytes).expect("");
2021-04-19 05:02:46 +02:00
}