about summary refs log tree commit diff
path: root/src/libcore/num
diff options
context:
space:
mode:
authorKang Seonghoon <public+git@mearie.org>2015-04-23 18:37:39 +0900
committerKang Seonghoon <public+git@mearie.org>2015-05-06 14:22:26 +0900
commita641b05fda448d3388347838076e3c583a5f8fa4 (patch)
tree8ec983e0bbaa717babdf6b36b78e362c17da81e9 /src/libcore/num
parent97ea7c14bae496d6444752be570dd41cf1a507bd (diff)
downloadrust-a641b05fda448d3388347838076e3c583a5f8fa4.tar.gz
rust-a641b05fda448d3388347838076e3c583a5f8fa4.zip
core: updated for the master changes.
The master no longer has `std::num::Float`, so a generic `ldexp` is
not readily available. `DecodableFloat::ldexpi` works around this.
Diffstat (limited to 'src/libcore/num')
-rw-r--r--src/libcore/num/flt2dec/decoder.rs5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/libcore/num/flt2dec/decoder.rs b/src/libcore/num/flt2dec/decoder.rs
index d4473e6bc0c..f98bc11a315 100644
--- a/src/libcore/num/flt2dec/decoder.rs
+++ b/src/libcore/num/flt2dec/decoder.rs
@@ -53,15 +53,20 @@ pub enum FullDecoded {
 
 /// A floating point type which can be `decode`d.
 pub trait DecodableFloat: Float + Copy {
+    /// Returns `x * 2^exp`. Almost same to `std::{f32,f64}::ldexp`.
+    /// This is used for testing.
+    fn ldexpi(f: i64, exp: isize) -> Self;
     /// The minimum positive normalized value.
     fn min_pos_norm_value() -> Self;
 }
 
 impl DecodableFloat for f32 {
+    fn ldexpi(f: i64, exp: isize) -> Self { f as Self * (exp as Self).exp2() }
     fn min_pos_norm_value() -> Self { f32::MIN_POSITIVE }
 }
 
 impl DecodableFloat for f64 {
+    fn ldexpi(f: i64, exp: isize) -> Self { f as Self * (exp as Self).exp2() }
     fn min_pos_norm_value() -> Self { f64::MIN_POSITIVE }
 }