Skip to content

Commit 1b0f5b2

Browse files
committed
auto merge of #11412 : bjz/rust/num-cleanups, r=alexcrichton
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. r? @alexcrichton
2 parents ab9ec6d + 0232fed commit 1b0f5b2

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
@@ -331,13 +331,79 @@ impl Round for f32 {
331331
fn fract(&self) -> f32 { *self - self.trunc() }
332332
}
333333

334-
impl Fractional for f32 {
334+
impl Real for f32 {
335+
/// Archimedes' constant
336+
#[inline]
337+
fn pi() -> f32 { 3.14159265358979323846264338327950288 }
338+
339+
/// 2.0 * pi
340+
#[inline]
341+
fn two_pi() -> f32 { 6.28318530717958647692528676655900576 }
342+
343+
/// pi / 2.0
344+
#[inline]
345+
fn frac_pi_2() -> f32 { 1.57079632679489661923132169163975144 }
346+
347+
/// pi / 3.0
348+
#[inline]
349+
fn frac_pi_3() -> f32 { 1.04719755119659774615421446109316763 }
350+
351+
/// pi / 4.0
352+
#[inline]
353+
fn frac_pi_4() -> f32 { 0.785398163397448309615660845819875721 }
354+
355+
/// pi / 6.0
356+
#[inline]
357+
fn frac_pi_6() -> f32 { 0.52359877559829887307710723054658381 }
358+
359+
/// pi / 8.0
360+
#[inline]
361+
fn frac_pi_8() -> f32 { 0.39269908169872415480783042290993786 }
362+
363+
/// 1 .0/ pi
364+
#[inline]
365+
fn frac_1_pi() -> f32 { 0.318309886183790671537767526745028724 }
366+
367+
/// 2.0 / pi
368+
#[inline]
369+
fn frac_2_pi() -> f32 { 0.636619772367581343075535053490057448 }
370+
371+
/// 2.0 / sqrt(pi)
372+
#[inline]
373+
fn frac_2_sqrtpi() -> f32 { 1.12837916709551257389615890312154517 }
374+
375+
/// sqrt(2.0)
376+
#[inline]
377+
fn sqrt2() -> f32 { 1.41421356237309504880168872420969808 }
378+
379+
/// 1.0 / sqrt(2.0)
380+
#[inline]
381+
fn frac_1_sqrt2() -> f32 { 0.707106781186547524400844362104849039 }
382+
383+
/// Euler's number
384+
#[inline]
385+
fn e() -> f32 { 2.71828182845904523536028747135266250 }
386+
387+
/// log2(e)
388+
#[inline]
389+
fn log2_e() -> f32 { 1.44269504088896340735992468100189214 }
390+
391+
/// log10(e)
392+
#[inline]
393+
fn log10_e() -> f32 { 0.434294481903251827651128918916605082 }
394+
395+
/// ln(2.0)
396+
#[inline]
397+
fn ln_2() -> f32 { 0.693147180559945309417232121458176568 }
398+
399+
/// ln(10.0)
400+
#[inline]
401+
fn ln_10() -> f32 { 2.30258509299404568401799145468436421 }
402+
335403
/// The reciprocal (multiplicative inverse) of the number
336404
#[inline]
337405
fn recip(&self) -> f32 { 1.0 / *self }
338-
}
339406

340-
impl Algebraic for f32 {
341407
#[inline]
342408
fn pow(&self, n: &f32) -> f32 { pow(*self, *n) }
343409

@@ -352,9 +418,7 @@ impl Algebraic for f32 {
352418

353419
#[inline]
354420
fn hypot(&self, other: &f32) -> f32 { hypot(*self, *other) }
355-
}
356421

357-
impl Trigonometric for f32 {
358422
#[inline]
359423
fn sin(&self) -> f32 { sin(*self) }
360424

@@ -381,9 +445,7 @@ impl Trigonometric for f32 {
381445
fn sin_cos(&self) -> (f32, f32) {
382446
(self.sin(), self.cos())
383447
}
384-
}
385448

386-
impl Exponential for f32 {
387449
/// Returns the exponential of the number
388450
#[inline]
389451
fn exp(&self) -> f32 { exp(*self) }
@@ -407,9 +469,7 @@ impl Exponential for f32 {
407469
/// Returns the base 10 logarithm of the number
408470
#[inline]
409471
fn log10(&self) -> f32 { log10(*self) }
410-
}
411472

412-
impl Hyperbolic for f32 {
413473
#[inline]
414474
fn sinh(&self) -> f32 { sinh(*self) }
415475

@@ -469,76 +529,6 @@ impl Hyperbolic for f32 {
469529
fn atanh(&self) -> f32 {
470530
0.5 * ((2.0 * *self) / (1.0 - *self)).ln_1p()
471531
}
472-
}
473-
474-
impl Real for f32 {
475-
/// Archimedes' constant
476-
#[inline]
477-
fn pi() -> f32 { 3.14159265358979323846264338327950288 }
478-
479-
/// 2.0 * pi
480-
#[inline]
481-
fn two_pi() -> f32 { 6.28318530717958647692528676655900576 }
482-
483-
/// pi / 2.0
484-
#[inline]
485-
fn frac_pi_2() -> f32 { 1.57079632679489661923132169163975144 }
486-
487-
/// pi / 3.0
488-
#[inline]
489-
fn frac_pi_3() -> f32 { 1.04719755119659774615421446109316763 }
490-
491-
/// pi / 4.0
492-
#[inline]
493-
fn frac_pi_4() -> f32 { 0.785398163397448309615660845819875721 }
494-
495-
/// pi / 6.0
496-
#[inline]
497-
fn frac_pi_6() -> f32 { 0.52359877559829887307710723054658381 }
498-
499-
/// pi / 8.0
500-
#[inline]
501-
fn frac_pi_8() -> f32 { 0.39269908169872415480783042290993786 }
502-
503-
/// 1 .0/ pi
504-
#[inline]
505-
fn frac_1_pi() -> f32 { 0.318309886183790671537767526745028724 }
506-
507-
/// 2.0 / pi
508-
#[inline]
509-
fn frac_2_pi() -> f32 { 0.636619772367581343075535053490057448 }
510-
511-
/// 2.0 / sqrt(pi)
512-
#[inline]
513-
fn frac_2_sqrtpi() -> f32 { 1.12837916709551257389615890312154517 }
514-
515-
/// sqrt(2.0)
516-
#[inline]
517-
fn sqrt2() -> f32 { 1.41421356237309504880168872420969808 }
518-
519-
/// 1.0 / sqrt(2.0)
520-
#[inline]
521-
fn frac_1_sqrt2() -> f32 { 0.707106781186547524400844362104849039 }
522-
523-
/// Euler's number
524-
#[inline]
525-
fn e() -> f32 { 2.71828182845904523536028747135266250 }
526-
527-
/// log2(e)
528-
#[inline]
529-
fn log2_e() -> f32 { 1.44269504088896340735992468100189214 }
530-
531-
/// log10(e)
532-
#[inline]
533-
fn log10_e() -> f32 { 0.434294481903251827651128918916605082 }
534-
535-
/// ln(2.0)
536-
#[inline]
537-
fn ln_2() -> f32 { 0.693147180559945309417232121458176568 }
538-
539-
/// ln(10.0)
540-
#[inline]
541-
fn ln_10() -> f32 { 2.30258509299404568401799145468436421 }
542532

543533
/// Converts to degrees, assuming the number is in radians
544534
#[inline]

0 commit comments

Comments
 (0)