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

59 lines
958 B
Rust
Raw Normal View History

2021-04-19 05:02:46 +02:00
use std::{
fs::File,
io::{Read, Write},
os::unix::io::FromRawFd
};
fn fib(n: u64) -> u64 {
let mut y = 0;
let mut y1 = 1;
let mut y2 = 0;
for _ in 0 .. n {
y = y1 + y2;
y2 = y1;
y1 = y;
}
y
}
fn main() {
nested::magic_header();
eprintln!(" Fibonacci Sequence");
nested::magic_header();
eprintln!("
interface (Sequence ) 0 1");
let mut f0 = unsafe { File::from_raw_fd(0) };
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-04-19 05:02:46 +02:00
");
let mut f1 = unsafe { File::from_raw_fd(1) };
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-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
}