Skip to content

Commit 0c7e3f6

Browse files
authored
Merge pull request #24 from antoyo/fix/conversions
Fix/conversions
2 parents f8cecd3 + e44da27 commit 0c7e3f6

File tree

3 files changed

+167
-64
lines changed

3 files changed

+167
-64
lines changed

Cargo.lock

Lines changed: 107 additions & 50 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

gcc-test-backend/src/main.rs

Lines changed: 45 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ fn main() {
2424
//println!("{}", (-0.0_f64).to_bits());
2525

2626
// FIXME: seems like the asm is calling comisd which seems to convert -0.0 to 0.
27-
assert!((-0.0_f64).to_bits() & 0x8000_0000_0000_0000 != 0);
28-
println!("1");
27+
/*assert!((-0.0_f64).to_bits() & 0x8000_0000_0000_0000 != 0);
28+
println!("1");*/
2929
//println!("{}", float);
3030
//std::process::exit(float as i32)
3131

@@ -214,4 +214,47 @@ fn main() {
214214
assert_eq!(r.saturating_pow(2), 4 as i128);
215215
assert_eq!(r.saturating_pow(3), -8 as i128);
216216
assert_eq!(r.saturating_pow(0), 1 as i128);*/
217+
218+
fn max64() -> i128 {
219+
18446744073709551615_i128
220+
//18446744073709551615_u64 as i128
221+
222+
/*println!("{}", u64::MAX);
223+
u64::MAX as i128*/
224+
}
225+
226+
println!("1. {}", max64());
227+
228+
/*use std::convert::TryFrom;
229+
230+
fn try_from(u: i128) -> Option<u64> {
231+
let min = u64::MIN as i128;
232+
let max = u64::MAX as i128;
233+
/*println!("{} < {} == {}", u, min, u < min);
234+
println!("{} > {} == {}", u, max, u > max);*/
235+
if u < min || u > max {
236+
None
237+
} else {
238+
Some(u as u64)
239+
}
240+
}
241+
242+
let max = <i128>::MAX;
243+
let min = <i128>::MIN;
244+
let zero: i128 = 0;
245+
let t_max = <u64>::MAX;
246+
let t_min = <u64>::MIN;
247+
assert!(<u64 as TryFrom<i128>>::try_from(max).is_err());
248+
assert!(<u64 as TryFrom<i128>>::try_from(min).is_err());
249+
println!("{:?}", try_from(zero));
250+
println!("{:?}", <u64 as TryFrom<i128>>::try_from(zero));
251+
assert_eq!(<u64 as TryFrom<i128>>::try_from(zero).unwrap(), zero as u64);
252+
assert_eq!(
253+
<u64 as TryFrom<i128>>::try_from(t_max as i128).unwrap(),
254+
t_max as u64
255+
);
256+
assert_eq!(
257+
<u64 as TryFrom<i128>>::try_from(t_min as i128).unwrap(),
258+
t_min as u64
259+
);*/
217260
}

0 commit comments

Comments
 (0)