




128 bit math
MS VC Developer Studio 2003. I have some rather large integer numbers, 128 bits, I need to crunch. I need to be able to add, subtract, multiply, and divide. In no case would the result exceed 128 bits. Test for equal, greater than, less than. I would use _int128 if it existed. The values are currently in byte arrays such as: unsigned char value[16]; arranged little endian (least significant first). Anyone know of a quick and easy way to do this? Thanks, Bruce.
"Bruce." <n @nowhere.com> writes: >MS VC Developer Studio 2003. >I have some rather large integer numbers, 128 bits, I need to crunch. I >need to be able to add, subtract, multiply, and divide. In no case would >the result exceed 128 bits. Test for equal, greater than, less than. >I would use _int128 if it existed. >The values are currently in byte arrays such as: >unsigned char value[16]; >arranged little endian (least significant first). >Anyone know of a quick and easy way to do this? By treating the arrays as pairs of int64_t's ? When 64bit machines were far less common, many used a library developed by Netscape to support 64bit arithmetic using arrays of two 32bit numbers. It was supported by a header file of prototypes and macros to account for endianness concerns. I suspect that much of that code could be reused for your application.  Chris.
"Chris McDonald" <c @csse.uwa.edu.au> wrote in message news:f3hvh3$rg3$1@enyo.uwa.edu.au... > By treating the arrays as pairs of int64_t's ? > When 64bit machines were far less common, many used a library developed > by Netscape to support 64bit arithmetic using arrays of two 32bit > numbers. > It was supported by a header file of prototypes and macros to account for > endianness concerns. > I suspect that much of that code could be reused for your application.
Any idea where I might find that code? Bruce.
Bruce. wrote: > MS VC Developer Studio 2003.
Please don't multipost on Usenet. Crosspost if you think your question is really appropriate for more than one group.  Ian Collins.
Bruce. wrote: > MS VC Developer Studio 2003. > I have some rather large integer numbers, 128 bits, I need to crunch. I > need to be able to add, subtract, multiply, and divide. In no case would > the result exceed 128 bits. Test for equal, greater than, less than. > I would use _int128 if it existed. > The values are currently in byte arrays such as: > unsigned char value[16]; > arranged little endian (least significant first). > Anyone know of a quick and easy way to do this? > Thanks, > Bruce.
Use lccwin32, it provides 128 bit numbers in the standard distribution http://www.cs.virginia.edu/~lccwin32
On May 30, 7:31 am, jacob navia <j@jacob.remcomp.fr> wrote:
> Bruce. wrote: > > MS VC Developer Studio 2003. > > I have some rather large integer numbers, 128 bits, I need to crunch. I > > need to be able to add, subtract, multiply, and divide. In no case would > > the result exceed 128 bits. Test for equal, greater than, less than. > > I would use _int128 if it existed. > > The values are currently in byte arrays such as: > > unsigned char value[16]; > > arranged little endian (least significant first). > > Anyone know of a quick and easy way to do this? > > Thanks, > > Bruce. > Use lccwin32, it provides 128 bit numbers in the standard > distribution > http://www.cs.virginia.edu/~lccwin32
Dear Bruce, Please try Intel 128 bit instruction(SSE /2/3) and 128 bit registers(XMM registers). You can use these instructions for 128 bit arithmetic. PADD*, PMUL* PSUB* etc are some of the instruction samples. Even AMD processors have these kind instructions. Please read the instructions manuals. Use _asm block to right assembly in VC2003. Thanks and regards, Amal P.
There is a library available called GMP. It allows you to deal with integers of arbitrary precision (reals and rationals too). Here's the URL: http://gmplib.org/ Regards Chris Saunders <enjoyam @gmail.com> wrote in message news:1180485996.388407.119150@z28g2000prd.googlegroups.com...
> On May 30, 7:31 am, jacob navia <j @jacob.remcomp.fr> wrote: >> Bruce. wrote: >> > MS VC Developer Studio 2003. >> > I have some rather large integer numbers, 128 bits, I need to crunch. >> > I >> > need to be able to add, subtract, multiply, and divide. In no case >> > would >> > the result exceed 128 bits. Test for equal, greater than, less than. >> > I would use _int128 if it existed. >> > The values are currently in byte arrays such as: >> > unsigned char value[16]; >> > arranged little endian (least significant first). >> > Anyone know of a quick and easy way to do this? >> > Thanks, >> > Bruce. >> Use lccwin32, it provides 128 bit numbers in the standard >> distribution >> http://www.cs.virginia.edu/~lccwin32 > Dear Bruce, > Please try Intel 128 bit instruction(SSE /2/3) and 128 bit > registers(XMM registers). You can use these instructions for 128 bit > arithmetic. PADD*, PMUL* PSUB* etc are some of the instruction > samples. Even AMD processors have these kind instructions. Please read > the instructions manuals. > Use _asm block to right assembly in VC2003. > Thanks and regards, > Amal P.





