Answered by:
future 128-bit integer data type for high precision, numeric processing

Question
-
was curious if there are plans for a "double-LONG" data type in VB.net (or any of the visual studio 20xx components), some high precision calculations cause 64-bit LONG overflow, and use of DEC data type offers up to 2**96 -1 values, however, the calculation and conversion to / from LONG to DECIMAL is time consuming.
operation in particular is high precision multiplication - ie see Donald Knuth, Art of Programming, c1998, section 4.3.3 - how fast can we multiply; the convolution process uses an accumulator that overflows LONG data type when I am using Base=1,000,000,000 instead of base10 operations...
Decimal works for this but is slower...
as of VS 2015 edition, I did not see any new extended data types for numeric processing - am hoping that a 128-bit integer is in future plans,
very respectfully,
rich.beck@sbcglobal.net
see Donald Knuth, 1998, section
' 4.3.3 for a discussion of: "How fast can we multiply ???"
Wednesday, December 9, 2015 7:48 PM
Answers
-
Hi,
BigInteger?
https://msdn.microsoft.com/en-us/library/system.numerics.biginteger%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396
Regards,
Thorsten
- Proposed as answer by Weiwei Cai Thursday, December 17, 2015 1:34 PM
- Marked as answer by Weiwei Cai Monday, December 21, 2015 9:57 AM
Wednesday, December 9, 2015 8:37 PM -
was curious if there are plans for a "double-LONG" data type in VB.net (or any of the visual studio 20xx components), some high precision calculations cause 64-bit LONG overflow, and use of DEC data type offers up to 2**96 -1 values, however, the calculation and conversion to / from LONG to DECIMAL is time consuming.
operation in particular is high precision multiplication - ie see Donald Knuth, Art of Programming, c1998, section 4.3.3 - how fast can we multiply; the convolution process uses an accumulator that overflows LONG data type when I am using Base=1,000,000,000 instead of base10 operations...
Decimal works for this but is slower...
as of VS 2015 edition, I did not see any new extended data types for numeric processing - am hoping that a 128-bit integer is in future plans,
very respectfully,
rich.beck@sbcglobal.net
see Donald Knuth, 1998, section
' 4.3.3 for a discussion of: "How fast can we multiply ???"
I'm curious what application you are using that demands 128 bit integers? Why won't 64 bit integers do?
I should add that if there is a particular computation where you are worried about overflow with two 64 bit integers, there are the Multiply128() and UnsignedMultiply128() functions supported in Windows
- Edited by Brian Muth Wednesday, December 9, 2015 11:34 PM
- Proposed as answer by Weiwei Cai Thursday, December 17, 2015 1:34 PM
- Marked as answer by Weiwei Cai Monday, December 21, 2015 9:57 AM
Wednesday, December 9, 2015 10:54 PM
All replies
-
Hi,
BigInteger?
https://msdn.microsoft.com/en-us/library/system.numerics.biginteger%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396
Regards,
Thorsten
- Proposed as answer by Weiwei Cai Thursday, December 17, 2015 1:34 PM
- Marked as answer by Weiwei Cai Monday, December 21, 2015 9:57 AM
Wednesday, December 9, 2015 8:37 PM -
was curious if there are plans for a "double-LONG" data type in VB.net (or any of the visual studio 20xx components), some high precision calculations cause 64-bit LONG overflow, and use of DEC data type offers up to 2**96 -1 values, however, the calculation and conversion to / from LONG to DECIMAL is time consuming.
operation in particular is high precision multiplication - ie see Donald Knuth, Art of Programming, c1998, section 4.3.3 - how fast can we multiply; the convolution process uses an accumulator that overflows LONG data type when I am using Base=1,000,000,000 instead of base10 operations...
Decimal works for this but is slower...
as of VS 2015 edition, I did not see any new extended data types for numeric processing - am hoping that a 128-bit integer is in future plans,
very respectfully,
rich.beck@sbcglobal.net
see Donald Knuth, 1998, section
' 4.3.3 for a discussion of: "How fast can we multiply ???"
I'm curious what application you are using that demands 128 bit integers? Why won't 64 bit integers do?
I should add that if there is a particular computation where you are worried about overflow with two 64 bit integers, there are the Multiply128() and UnsignedMultiply128() functions supported in Windows
- Edited by Brian Muth Wednesday, December 9, 2015 11:34 PM
- Proposed as answer by Weiwei Cai Thursday, December 17, 2015 1:34 PM
- Marked as answer by Weiwei Cai Monday, December 21, 2015 9:57 AM
Wednesday, December 9, 2015 10:54 PM