[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [V2 PATCH 09/37] libdecnumber: Introduce decNumberFrom[U]In
From: |
Tom Musta |
Subject: |
[Qemu-devel] [V2 PATCH 09/37] libdecnumber: Introduce decNumberFrom[U]Int64 |
Date: |
Mon, 21 Apr 2014 15:54:53 -0500 |
Introduce two conversion functions to the libdecnumber library.
These conversions transform 64 bit integers to the internal decNumber
representation. Both a signed and unsigned version is added.
Signed-off-by: Tom Musta <address@hidden>
---
V2: Simplified negative integer handling in the signed converter per
Richard Henderson's review.
include/libdecnumber/decNumber.h | 2 ++
libdecnumber/decNumber.c | 30 ++++++++++++++++++++++++++++++
2 files changed, 32 insertions(+), 0 deletions(-)
diff --git a/include/libdecnumber/decNumber.h b/include/libdecnumber/decNumber.h
index fb324bd..f4bf994 100644
--- a/include/libdecnumber/decNumber.h
+++ b/include/libdecnumber/decNumber.h
@@ -115,6 +115,8 @@
/* Conversions */
decNumber * decNumberFromInt32(decNumber *, int32_t);
decNumber * decNumberFromUInt32(decNumber *, uint32_t);
+ decNumber *decNumberFromInt64(decNumber *, int64_t);
+ decNumber *decNumberFromUInt64(decNumber *, uint64_t);
decNumber * decNumberFromString(decNumber *, const char *, decContext *);
char * decNumberToString(const decNumber *, char *);
char * decNumberToEngString(const decNumber *, char *);
diff --git a/libdecnumber/decNumber.c b/libdecnumber/decNumber.c
index f6b6eb1..6bd7565 100644
--- a/libdecnumber/decNumber.c
+++ b/libdecnumber/decNumber.c
@@ -436,6 +436,36 @@ uInt decNumberToUInt32(const decNumber *dn, decContext
*set) {
return 0;
} /* decNumberToUInt32 */
+decNumber *decNumberFromInt64(decNumber *dn, int64_t in)
+{
+ uint64_t unsig = in;
+ if (in < 0) {
+ unsig = -unsig;
+ }
+
+ decNumberFromUInt64(dn, unsig);
+ if (in < 0) {
+ dn->bits = DECNEG; /* sign needed */
+ }
+ return dn;
+} /* decNumberFromInt64 */
+
+decNumber *decNumberFromUInt64(decNumber *dn, uint64_t uin)
+{
+ Unit *up; /* work pointer */
+ decNumberZero(dn); /* clean */
+ if (uin == 0) {
+ return dn; /* [or decGetDigits bad call] */
+ }
+ for (up = dn->lsu; uin > 0; up++) {
+ *up = (Unit)(uin % (DECDPUNMAX + 1));
+ uin = uin / (DECDPUNMAX + 1);
+ }
+ dn->digits = decGetDigits(dn->lsu, up-dn->lsu);
+ return dn;
+} /* decNumberFromUInt64 */
+
+
/* ------------------------------------------------------------------ */
/* to-scientific-string -- conversion to numeric string */
/* to-engineering-string -- conversion to numeric string */
--
1.7.1
- [Qemu-devel] [V2 PATCH 00/37] target-ppc: Decimal Floating Point, Tom Musta, 2014/04/21
- [Qemu-devel] [V2 PATCH 02/37] libdecnumber: Eliminate #include *Symbols.h, Tom Musta, 2014/04/21
- [Qemu-devel] [V2 PATCH 06/37] libdecnumber: Eliminate redundant declarations, Tom Musta, 2014/04/21
- [Qemu-devel] [V2 PATCH 07/37] libdecnumber: Eliminate Unused Variable in decSetSubnormal, Tom Musta, 2014/04/21
- [Qemu-devel] [V2 PATCH 05/37] libdecnumber: Change gstdint.h to stdint.h, Tom Musta, 2014/04/21
- [Qemu-devel] [V2 PATCH 03/37] libdecnumber: Prepare libdecnumber for QEMU include structure, Tom Musta, 2014/04/21
- [Qemu-devel] [V2 PATCH 04/37] libdecnumber: Modify dconfig.h to Integrate with QEMU, Tom Musta, 2014/04/21
- [Qemu-devel] [V2 PATCH 08/37] target-ppc: Enable Building of libdecnumber, Tom Musta, 2014/04/21
- [Qemu-devel] [V2 PATCH 09/37] libdecnumber: Introduce decNumberFrom[U]Int64,
Tom Musta <=
- [Qemu-devel] [V2 PATCH 10/37] libdecnumber: Introduce decNumberIntegralToInt64, Tom Musta, 2014/04/21
- [Qemu-devel] [V2 PATCH 15/37] target-ppc: Introduce DFP Helper Utilities, Tom Musta, 2014/04/21
- [Qemu-devel] [V2 PATCH 12/37] target-ppc: Define FPR Pointer Type for Helpers, Tom Musta, 2014/04/21
- [Qemu-devel] [V2 PATCH 11/37] libdecnumber: Fix decNumberSetBCD, Tom Musta, 2014/04/21
- [Qemu-devel] [V2 PATCH 13/37] target-ppc: Introduce Generator Macros for DFP Arithmetic Forms, Tom Musta, 2014/04/21
- [Qemu-devel] [V2 PATCH 14/37] target-ppc: Introduce Decoder Macros for DFP, Tom Musta, 2014/04/21
- [Qemu-devel] [V2 PATCH 16/37] target-ppc: Introduce DFP Post Processor Utilities, Tom Musta, 2014/04/21
- [Qemu-devel] [V2 PATCH 17/37] target-ppc: Introduce DFP Add, Tom Musta, 2014/04/21
- [Qemu-devel] [V2 PATCH 18/37] target-ppc: Introduce DFP Subtract, Tom Musta, 2014/04/21
- [Qemu-devel] [V2 PATCH 19/37] target-ppc: Introduce DFP Multiply, Tom Musta, 2014/04/21