Revert "Merge Exponential and Hyperbolic traits"

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.
This commit is contained in:
Brendan Zabarauskas 2013-04-29 23:38:58 +10:00
parent d3f494f5c3
commit 500078e147
6 changed files with 11 additions and 5 deletions

View File

@ -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};

View File

@ -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) }

View File

@ -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) }

View File

@ -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

View File

@ -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;
@ -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;

View File

@ -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};