diff options
| author | Daniel Micay <danielmicay@gmail.com> | 2013-09-26 02:26:09 -0400 |
|---|---|---|
| committer | Daniel Micay <danielmicay@gmail.com> | 2013-10-01 14:54:10 -0400 |
| commit | c9d4ad07c4c166d655f11862e03c10100dcb704b (patch) | |
| tree | 53a506f27ce5d9e192ef540ae3ad4010eba10fee /doc/tutorial-tasks.md | |
| parent | 24a253778aa26222cae97e3b57f85e5054a39977 (diff) | |
| download | rust-c9d4ad07c4c166d655f11862e03c10100dcb704b.tar.gz rust-c9d4ad07c4c166d655f11862e03c10100dcb704b.zip | |
remove the `float` type
It is simply defined as `f64` across every platform right now. A use case hasn't been presented for a `float` type defined as the highest precision floating point type implemented in hardware on the platform. Performance-wise, using the smallest precision correct for the use case greatly saves on cache space and allows for fitting more numbers into SSE/AVX registers. If there was a use case, this could be implemented as simply a type alias or a struct thanks to `#[cfg(...)]`. Closes #6592 The mailing list thread, for reference: https://mail.mozilla.org/pipermail/rust-dev/2013-July/004632.html
Diffstat (limited to 'doc/tutorial-tasks.md')
| -rw-r--r-- | doc/tutorial-tasks.md | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/doc/tutorial-tasks.md b/doc/tutorial-tasks.md index 09d3469871f..dedbc8ae593 100644 --- a/doc/tutorial-tasks.md +++ b/doc/tutorial-tasks.md @@ -331,12 +331,12 @@ a single large vector of floats. Each task needs the full vector to perform its # use std::rand; use extra::arc::Arc; -fn pnorm(nums: &~[float], p: uint) -> float { - nums.iter().fold(0.0, |a,b| a+(*b).pow(&(p as float)) ).pow(&(1f / (p as float))) +fn pnorm(nums: &~[f64], p: uint) -> f64 { + nums.iter().fold(0.0, |a,b| a+(*b).pow(&(p as f64)) ).pow(&(1.0 / (p as f64))) } fn main() { - let numbers = vec::from_fn(1000000, |_| rand::random::<float>()); + let numbers = vec::from_fn(1000000, |_| rand::random::<f64>()); println!("Inf-norm = {}", *numbers.iter().max().unwrap()); let numbers_arc = Arc::new(numbers); @@ -346,7 +346,7 @@ fn main() { chan.send(numbers_arc.clone()); do spawn { - let local_arc : Arc<~[float]> = port.recv(); + let local_arc : Arc<~[f64]> = port.recv(); let task_numbers = local_arc.get(); println!("{}-norm = {}", num, pnorm(task_numbers, num)); } @@ -361,7 +361,7 @@ created by the line # use extra::arc::Arc; # use std::vec; # use std::rand; -# let numbers = vec::from_fn(1000000, |_| rand::random::<float>()); +# let numbers = vec::from_fn(1000000, |_| rand::random::<f64>()); let numbers_arc=Arc::new(numbers); ~~~ and a clone of it is sent to each task @@ -369,7 +369,7 @@ and a clone of it is sent to each task # use extra::arc::Arc; # use std::vec; # use std::rand; -# let numbers=vec::from_fn(1000000, |_| rand::random::<float>()); +# let numbers=vec::from_fn(1000000, |_| rand::random::<f64>()); # let numbers_arc = Arc::new(numbers); # let (port, chan) = stream(); chan.send(numbers_arc.clone()); @@ -381,11 +381,11 @@ Each task recovers the underlying data by # use extra::arc::Arc; # use std::vec; # use std::rand; -# let numbers=vec::from_fn(1000000, |_| rand::random::<float>()); +# let numbers=vec::from_fn(1000000, |_| rand::random::<f64>()); # let numbers_arc=Arc::new(numbers); # let (port, chan) = stream(); # chan.send(numbers_arc.clone()); -# let local_arc : Arc<~[float]> = port.recv(); +# let local_arc : Arc<~[f64]> = port.recv(); let task_numbers = local_arc.get(); ~~~ and can use it as if it were local. |
