diff --git a/hercules_cg/src/cpu.rs b/hercules_cg/src/cpu.rs index d5bc730eb9c24b178895011fb9bb3c0a2aedd169..7d87170baa08322ba44bec42f34b6a132ecd8a35 100644 --- a/hercules_cg/src/cpu.rs +++ b/hercules_cg/src/cpu.rs @@ -265,8 +265,8 @@ impl<'a> CPUContext<'a> { Constant::UnsignedInteger32(val) => write!(body, "i32 {} to i32\n", val)?, Constant::UnsignedInteger64(val) => write!(body, "i64 {} to i64\n", val)?, Constant::Float32(val) => { - write!(body, "float 0x{:08x}00000000 to float\n", unsafe { - transmute::<f32, u32>(*val) + write!(body, "float 0x{:016x} to float\n", unsafe { + transmute::<f64, u64>(*val as f64) })?; } Constant::Float64(val) => { diff --git a/juno_samples/casts_and_intrinsics/src/casts_and_intrinsics.jn b/juno_samples/casts_and_intrinsics/src/casts_and_intrinsics.jn index 5261063353496496e3e994a91620073438528ccd..06798f43b2499199b42d11d865a1517b6797a532 100644 --- a/juno_samples/casts_and_intrinsics/src/casts_and_intrinsics.jn +++ b/juno_samples/casts_and_intrinsics/src/casts_and_intrinsics.jn @@ -1,5 +1,5 @@ #[entry] fn casts_and_intrinsics(input : f32) -> i32 { - let sqrt = sqrt!::<f32>(input); + let sqrt = sqrt!::<f32>(input + 0.3); return sqrt as i32; } diff --git a/juno_samples/casts_and_intrinsics/src/main.rs b/juno_samples/casts_and_intrinsics/src/main.rs index 6b27c60cf8bf814f1d49de9d76b9a90647932de3..d0f7c8727976c2379a1517e0eb289a11520a1556 100644 --- a/juno_samples/casts_and_intrinsics/src/main.rs +++ b/juno_samples/casts_and_intrinsics/src/main.rs @@ -7,7 +7,7 @@ juno_build::juno!("casts_and_intrinsics"); fn main() { async_std::task::block_on(async { let mut r = runner!(casts_and_intrinsics); - let output = r.run(16.0).await; + let output = r.run(15.7).await; println!("{}", output); assert_eq!(output, 4); });