Skip to content

Commit

Permalink
Revert "Merge Exponential and Hyperbolic traits"
Browse files Browse the repository at this point in the history
After discussions on IRC and #4819, we have decided to revert this change. This is due to the traits expressing different ideas and because hyperbolic functions are not trivially implementable from exponential functions for floating-point types.
  • Loading branch information
brendanzab committed Apr 29, 2013
1 parent d3f494f commit 500078e
Show file tree
Hide file tree
Showing 6 changed files with 11 additions and 5 deletions.
2 changes: 1 addition & 1 deletion src/libcore/core.rc
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ pub use iter::{ExtendedMutableIter};

pub use num::{Num, NumCast};
pub use num::{Orderable, Signed, Unsigned, Round};
pub use num::{Algebraic, Trigonometric, Exponential};
pub use num::{Algebraic, Trigonometric, Exponential, Hyperbolic};
pub use num::{Integer, Fractional, Real, RealExt};
pub use num::{Bitwise, BitCount, Bounded};
pub use num::{Primitive, Int, Float};
Expand Down
2 changes: 2 additions & 0 deletions src/libcore/num/f32.rs
Original file line number Diff line number Diff line change
Expand Up @@ -425,7 +425,9 @@ impl Exponential for f32 {

#[inline(always)]
fn log10(&self) -> f32 { log10(*self) }
}

impl Hyperbolic for f32 {
#[inline(always)]
fn sinh(&self) -> f32 { sinh(*self) }

Expand Down
2 changes: 2 additions & 0 deletions src/libcore/num/f64.rs
Original file line number Diff line number Diff line change
Expand Up @@ -437,7 +437,9 @@ impl Exponential for f64 {

#[inline(always)]
fn log10(&self) -> f64 { log10(*self) }
}

impl Hyperbolic for f64 {
#[inline(always)]
fn sinh(&self) -> f64 { sinh(*self) }

Expand Down
2 changes: 2 additions & 0 deletions src/libcore/num/float.rs
Original file line number Diff line number Diff line change
Expand Up @@ -547,7 +547,9 @@ impl Exponential for float {
fn log10(&self) -> float {
(*self as f64).log10() as float
}
}

impl Hyperbolic for float {
#[inline(always)]
fn sinh(&self) -> float {
(*self as f64).sinh() as float
Expand Down
6 changes: 3 additions & 3 deletions src/libcore/num/num.rs
Original file line number Diff line number Diff line change
Expand Up @@ -131,9 +131,9 @@ pub trait Exponential {
fn log(&self) -> Self;
fn log2(&self) -> Self;
fn log10(&self) -> Self;
}

// The Hyperbolic Functions are trivially implemented in terms of `exp`, so it's simpler
// to group them within this trait. In the future these would have default implementations.
pub trait Hyperbolic: Exponential {
fn sinh(&self) -> Self;
fn cosh(&self) -> Self;
fn tanh(&self) -> Self;
Expand All @@ -146,7 +146,7 @@ pub trait Real: Signed
+ Fractional
+ Algebraic
+ Trigonometric
+ Exponential {
+ Hyperbolic {
// Common Constants
// FIXME (#5527): These should be associated constants
fn pi() -> Self;
Expand Down
2 changes: 1 addition & 1 deletion src/libcore/prelude.rs
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ pub use iter::{CopyableIter, CopyableOrderedIter, CopyableNonstrictIter};
pub use iter::{Times, ExtendedMutableIter};
pub use num::{Num, NumCast};
pub use num::{Orderable, Signed, Unsigned, Round};
pub use num::{Algebraic, Trigonometric, Exponential};
pub use num::{Algebraic, Trigonometric, Exponential, Hyperbolic};
pub use num::{Integer, Fractional, Real, RealExt};
pub use num::{Bitwise, BitCount, Bounded};
pub use num::{Primitive, Int, Float};
Expand Down

5 comments on commit 500078e

@bors
Copy link
Contributor

@bors bors commented on 500078e Apr 29, 2013

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

saw approval from pcwalton
at brendanzab@500078e

@bors
Copy link
Contributor

@bors bors commented on 500078e Apr 29, 2013

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

merging bjz/rust/numeric-traits = 500078e into auto

@bors
Copy link
Contributor

@bors bors commented on 500078e Apr 29, 2013

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

bjz/rust/numeric-traits = 500078e merged ok, testing candidate = dbcc3fe

@bors
Copy link
Contributor

@bors bors commented on 500078e Apr 29, 2013

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@bors
Copy link
Contributor

@bors bors commented on 500078e Apr 29, 2013

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fast-forwarding incoming to auto = dbcc3fe

Please sign in to comment.