Skip to content

Commit 0232fed

Browse files
committed
Merge some numeric traits with Real and don't re-export RealExt
The methods contained in `std::num::{Algebraic, Trigonometric, Exponential, Hyperbolic}` have now been moved into `std::num::Real`. This is part of an ongoing effort to simplify `std::num` (see issue #10387). `std::num::RealExt` has also been removed from the prelude because it is not a commonly used trait.
1 parent 9dece60 commit 0232fed

File tree

10 files changed

+245
-289
lines changed

10 files changed

+245
-289
lines changed

src/libextra/num/complex.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111

1212
//! Complex numbers.
1313
14-
1514
use std::num::{Zero,One,ToStrRadix};
1615

1716
// FIXME #1284: handle complex NaN & infinity etc. This
@@ -78,15 +77,15 @@ impl<T: Clone + Num> Cmplx<T> {
7877
}
7978
}
8079

81-
impl<T: Clone + Algebraic + Num> Cmplx<T> {
80+
impl<T: Clone + Real> Cmplx<T> {
8281
/// Calculate |self|
8382
#[inline]
8483
pub fn norm(&self) -> T {
8584
self.re.hypot(&self.im)
8685
}
8786
}
8887

89-
impl<T: Clone + Trigonometric + Algebraic + Num> Cmplx<T> {
88+
impl<T: Clone + Real> Cmplx<T> {
9089
/// Calculate the principal Arg of self.
9190
#[inline]
9291
pub fn arg(&self) -> T {

src/libextra/num/rational.rs

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,12 @@ impl<T: Clone + Integer + Ord>
105105
ret.reduce();
106106
ret
107107
}
108+
109+
/// Return the reciprocal
110+
#[inline]
111+
pub fn recip(&self) -> Ratio<T> {
112+
Ratio::new_raw(self.denom.clone(), self.numer.clone())
113+
}
108114
}
109115

110116
impl Ratio<BigInt> {
@@ -288,13 +294,6 @@ impl<T: Clone + Integer + Ord>
288294
}
289295
}
290296

291-
impl<T: Clone + Integer + Ord> Fractional for Ratio<T> {
292-
#[inline]
293-
fn recip(&self) -> Ratio<T> {
294-
Ratio::new_raw(self.denom.clone(), self.numer.clone())
295-
}
296-
}
297-
298297
/* String conversions */
299298
impl<T: ToStr> ToStr for Ratio<T> {
300299
/// Renders as `numer/denom`.

src/libstd/num/f32.rs

Lines changed: 69 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -347,13 +347,79 @@ impl Round for f32 {
347347
fn fract(&self) -> f32 { *self - self.trunc() }
348348
}
349349

350-
impl Fractional for f32 {
350+
impl Real for f32 {
351+
/// Archimedes' constant
352+
#[inline]
353+
fn pi() -> f32 { 3.14159265358979323846264338327950288 }
354+
355+
/// 2.0 * pi
356+
#[inline]
357+
fn two_pi() -> f32 { 6.28318530717958647692528676655900576 }
358+
359+
/// pi / 2.0
360+
#[inline]
361+
fn frac_pi_2() -> f32 { 1.57079632679489661923132169163975144 }
362+
363+
/// pi / 3.0
364+
#[inline]
365+
fn frac_pi_3() -> f32 { 1.04719755119659774615421446109316763 }
366+
367+
/// pi / 4.0
368+
#[inline]
369+
fn frac_pi_4() -> f32 { 0.785398163397448309615660845819875721 }
370+
371+
/// pi / 6.0
372+
#[inline]
373+
fn frac_pi_6() -> f32 { 0.52359877559829887307710723054658381 }
374+
375+
/// pi / 8.0
376+
#[inline]
377+
fn frac_pi_8() -> f32 { 0.39269908169872415480783042290993786 }
378+
379+
/// 1 .0/ pi
380+
#[inline]
381+
fn frac_1_pi() -> f32 { 0.318309886183790671537767526745028724 }
382+
383+
/// 2.0 / pi
384+
#[inline]
385+
fn frac_2_pi() -> f32 { 0.636619772367581343075535053490057448 }
386+
387+
/// 2.0 / sqrt(pi)
388+
#[inline]
389+
fn frac_2_sqrtpi() -> f32 { 1.12837916709551257389615890312154517 }
390+
391+
/// sqrt(2.0)
392+
#[inline]
393+
fn sqrt2() -> f32 { 1.41421356237309504880168872420969808 }
394+
395+
/// 1.0 / sqrt(2.0)
396+
#[inline]
397+
fn frac_1_sqrt2() -> f32 { 0.707106781186547524400844362104849039 }
398+
399+
/// Euler's number
400+
#[inline]
401+
fn e() -> f32 { 2.71828182845904523536028747135266250 }
402+
403+
/// log2(e)
404+
#[inline]
405+
fn log2_e() -> f32 { 1.44269504088896340735992468100189214 }
406+
407+
/// log10(e)
408+
#[inline]
409+
fn log10_e() -> f32 { 0.434294481903251827651128918916605082 }
410+
411+
/// ln(2.0)
412+
#[inline]
413+
fn ln_2() -> f32 { 0.693147180559945309417232121458176568 }
414+
415+
/// ln(10.0)
416+
#[inline]
417+
fn ln_10() -> f32 { 2.30258509299404568401799145468436421 }
418+
351419
/// The reciprocal (multiplicative inverse) of the number
352420
#[inline]
353421
fn recip(&self) -> f32 { 1.0 / *self }
354-
}
355422

356-
impl Algebraic for f32 {
357423
#[inline]
358424
fn pow(&self, n: &f32) -> f32 { pow(*self, *n) }
359425

@@ -368,9 +434,7 @@ impl Algebraic for f32 {
368434

369435
#[inline]
370436
fn hypot(&self, other: &f32) -> f32 { hypot(*self, *other) }
371-
}
372437

373-
impl Trigonometric for f32 {
374438
#[inline]
375439
fn sin(&self) -> f32 { sin(*self) }
376440

@@ -397,9 +461,7 @@ impl Trigonometric for f32 {
397461
fn sin_cos(&self) -> (f32, f32) {
398462
(self.sin(), self.cos())
399463
}
400-
}
401464

402-
impl Exponential for f32 {
403465
/// Returns the exponential of the number
404466
#[inline]
405467
fn exp(&self) -> f32 { exp(*self) }
@@ -423,9 +485,7 @@ impl Exponential for f32 {
423485
/// Returns the base 10 logarithm of the number
424486
#[inline]
425487
fn log10(&self) -> f32 { log10(*self) }
426-
}
427488

428-
impl Hyperbolic for f32 {
429489
#[inline]
430490
fn sinh(&self) -> f32 { sinh(*self) }
431491

@@ -485,76 +545,6 @@ impl Hyperbolic for f32 {
485545
fn atanh(&self) -> f32 {
486546
0.5 * ((2.0 * *self) / (1.0 - *self)).ln_1p()
487547
}
488-
}
489-
490-
impl Real for f32 {
491-
/// Archimedes' constant
492-
#[inline]
493-
fn pi() -> f32 { 3.14159265358979323846264338327950288 }
494-
495-
/// 2.0 * pi
496-
#[inline]
497-
fn two_pi() -> f32 { 6.28318530717958647692528676655900576 }
498-
499-
/// pi / 2.0
500-
#[inline]
501-
fn frac_pi_2() -> f32 { 1.57079632679489661923132169163975144 }
502-
503-
/// pi / 3.0
504-
#[inline]
505-
fn frac_pi_3() -> f32 { 1.04719755119659774615421446109316763 }
506-
507-
/// pi / 4.0
508-
#[inline]
509-
fn frac_pi_4() -> f32 { 0.785398163397448309615660845819875721 }
510-
511-
/// pi / 6.0
512-
#[inline]
513-
fn frac_pi_6() -> f32 { 0.52359877559829887307710723054658381 }
514-
515-
/// pi / 8.0
516-
#[inline]
517-
fn frac_pi_8() -> f32 { 0.39269908169872415480783042290993786 }
518-
519-
/// 1 .0/ pi
520-
#[inline]
521-
fn frac_1_pi() -> f32 { 0.318309886183790671537767526745028724 }
522-
523-
/// 2.0 / pi
524-
#[inline]
525-
fn frac_2_pi() -> f32 { 0.636619772367581343075535053490057448 }
526-
527-
/// 2.0 / sqrt(pi)
528-
#[inline]
529-
fn frac_2_sqrtpi() -> f32 { 1.12837916709551257389615890312154517 }
530-
531-
/// sqrt(2.0)
532-
#[inline]
533-
fn sqrt2() -> f32 { 1.41421356237309504880168872420969808 }
534-
535-
/// 1.0 / sqrt(2.0)
536-
#[inline]
537-
fn frac_1_sqrt2() -> f32 { 0.707106781186547524400844362104849039 }
538-
539-
/// Euler's number
540-
#[inline]
541-
fn e() -> f32 { 2.71828182845904523536028747135266250 }
542-
543-
/// log2(e)
544-
#[inline]
545-
fn log2_e() -> f32 { 1.44269504088896340735992468100189214 }
546-
547-
/// log10(e)
548-
#[inline]
549-
fn log10_e() -> f32 { 0.434294481903251827651128918916605082 }
550-
551-
/// ln(2.0)
552-
#[inline]
553-
fn ln_2() -> f32 { 0.693147180559945309417232121458176568 }
554-
555-
/// ln(10.0)
556-
#[inline]
557-
fn ln_10() -> f32 { 2.30258509299404568401799145468436421 }
558548

559549
/// Converts to degrees, assuming the number is in radians
560550
#[inline]

0 commit comments

Comments
 (0)