diff options
| author | Ginger Bill <bill@gingerbill.org> | 2017-06-14 14:58:48 +0100 |
|---|---|---|
| committer | Ginger Bill <bill@gingerbill.org> | 2017-06-14 14:58:48 +0100 |
| commit | a134307dcde9aac03323c15f8dfc5642f438fe56 (patch) | |
| tree | e00bf06006d2789f931376abb34fb516698cf43f /src/integer128.cpp | |
| parent | c3b510c2d9adf1a9281285fc711a28187288af75 (diff) | |
Fix issue #72 - 128-bit literal corruption
Diffstat (limited to 'src/integer128.cpp')
| -rw-r--r-- | src/integer128.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/integer128.cpp b/src/integer128.cpp index 35023a220..3ebd811c6 100644 --- a/src/integer128.cpp +++ b/src/integer128.cpp @@ -40,10 +40,12 @@ i128 i128_from_string(String string); u64 u128_to_u64(u128 a); i64 u128_to_i64(u128 a); f64 u128_to_f64(u128 a); +i128 u128_to_i128(u128 a); u64 i128_to_u64(i128 a); i64 i128_to_i64(i128 a); f64 i128_to_f64(i128 a); +u128 i128_to_u128(i128 a); String u128_to_string(u128 a, char *buf, isize len); String i128_to_string(i128 a, char *buf, isize len); @@ -270,6 +272,12 @@ f64 u128_to_f64(u128 a) { return -((cast(f64)h * 18446744073709551616.0) + cast(f64)l); } +i128 u128_to_i128(u128 a) { + return *cast(i128 *)&a; +} + + + u64 i128_to_u64(i128 a) { return (a.lo&BIT128_U64_BITS62) | (a.hi&BIT128_U64_HIGHBIT); @@ -292,6 +300,10 @@ f64 i128_to_f64(i128 a) { return -((cast(f64)h * 18446744073709551616.0) + cast(f64)l); } +u128 i128_to_u128(i128 a) { + return *cast(u128 *)&a; +} + String u128_to_string(u128 v, char *out_buf, isize out_buf_len) { |