Home     |     .Net Programming    |     cSharp Home    |     Sql Server Home    |     Javascript / Client Side Development     |     Ajax Programming

Ruby on Rails Development     |     Perl Programming     |     C Programming Language     |     C++ Programming     |     IT Jobs

Python Programming Language     |     Laptop Suggestions?    |     TCL Scripting     |     Fortran Programming     |     Scheme Programming Language


 
 
Cervo Technologies
The Right Source to Outsource

MS Dynamics CRM 3.0

C Programming Language

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 64-bit machines were far less common, many used a library developed
by Netscape to support 64-bit arithmetic using arrays of two 32-bit 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 64-bit machines were far less common, many used a library developed
> by Netscape to support 64-bit arithmetic using arrays of two 32-bit
> 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 multi-post on Usenet.  Cross-post if you think your
question is really appropriate for more than one group.

--
Ian Collins.

Use lcc-win32, it provides 128 bit numbers in the standard
distribution

http://www.cs.virginia.edu/~lcc-win32

On May 30, 7:31 am, jacob navia <j@jacob.remcomp.fr> wrote:

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...

"Chris Saunders" <e@mountaincable.net> wrote in message

news:1fdf1$465ce049$480c9eef$30921@MOUNTAINCABLE.NET...

> 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/

Thanks for the link.  I'll check that out.

Bruce.

Add to del.icio.us | Digg this | Stumble it | Powered by Megasolutions Inc