Skip to content

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

License

Notifications You must be signed in to change notification settings

nathanielknight/iter-rationals

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

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

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Languages