#rational #rational-numbers #iterator #fixed #fixed-size

no-std bin+lib iter-rationals

A fixed size, linear time, no-std iterator over the rational numbers

3 unstable releases

0.2.1 Mar 8, 2023
0.2.0 Aug 30, 2022
0.1.0 Aug 30, 2022

#1228 in Math

MPL-2.0 license

9KB
100 lines

iter-rationals

crate documentation main

This crate implements an iterator over the rational numbers which:

  • yields each number once-and-only-once,
  • requires only a fixed amount of memory, and
  • yields successive values with a fixed amount of arithmetic operations.

The algorithm is described in Functional Pearl: Enumerating the Rationals by Gibbons, Lester, and Bird; see the paper for an explanation of how it works.

Usage

use iter_rationals::Rationals;

fn main() {
    let rs = Rationals::<u32>::new();

    for r in rs.take(20) {
        println!("{r}");
    }
}

Installation

Add this dependency to your Cargo.toml:

iter-rationals = "0.1"

or on the command line:

cargo add iter-rationals

License

Dependencies

~590KB
~13K SLoC