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:
parent
d3f494f5c3
commit
500078e147
|
@ -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};
|
||||
|
|
|
@ -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) }
|
||||
|
||||
|
|
|
@ -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) }
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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};
|
||||
|
|
Loading…
Reference in New Issue