24 days of Rust - the glorious tau

Important note: this article is outdated! Go to http://zsiciarz.github.io/24daysofrust/ for a recent version of all of 24 days of Rust articles. The blogpost here is kept as it is for historical reasons.

τ (tau) is one of the most important mathematical constants (if not the most important), relating circle's circumference to it's radius. See the tau manifesto for the long explanation if you're still an unbeliever. Can we use it in Rust? Of course, there's a crate for that!

Let's see this amazing number in full glory:

extern crate tau;

fn main() {
    println!("τ = {}", tau::TAU);
$ cargo run
τ = 6.283185

We can do all sorts of important calculations with τ, just look:

extern crate num;

use std::num::FloatMath;
use num::complex::{Complex, Complex64};

let radius: f64 = 15.0;
println!("circle circumference = τ * r = {}", tau::TAU * radius);
let c: Complex64 = Complex::from_polar(&1.0, &tau::TAU);
println!("Euler's identity: exp(i * τ) = {}", c);
println!("Trigonometry: sin(τ) = {}, cos(τ) = {}", tau::TAU.sin(), tau::TAU.cos());

And if someone really, I mean really needs to refer to that other mathematical constant, it is (regrettably) possible as well.

println!("That other constant = {}", tau::TAU / 2.0);

Here's the output:

$ cargo run
circle circumference = τ * r = 94.24778
Euler's identity: exp(i * τ) = 1-0i
Trigonometry: sin(τ) = -0, cos(τ) = 1
That other constant = 3.141593

Code examples in this article were built with rustc 0.13.0-nightly and tau 1.0.0.

The header photo (taken by me) shows Warsaw skyline from the Siekierkowski bridge.