LinuxQuestions.org
View the Most Wanted LQ Wiki articles.
Go Back   LinuxQuestions.org > Forums > Non-*NIX Forums > Programming
User Name
Password
Programming This forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game.

Notices

Reply
 
LinkBack Search this Thread
Old 09-22-2004, 08:46 PM   #1
jenna_h
Member
 
Registered: Nov 2002
Distribution: Mandrake 9.0
Posts: 58

Rep: Reputation: 15
modulo of 2 floating point numbers?


Hi, I have been trying to write a simple C++ program (using gcc 3.3.2) to find large prime numbers, which usually involves using the modulo (%) operator to check for factors. I need at least 11 significant digits to have adequate precision, but the int type apparently doesn't go that high. Is it possible to perform a modulo operation with floating point numbers, or alternatively, use ints with at least 11 significant digits?
 
Old 09-22-2004, 08:51 PM   #2
itsme86
Senior Member
 
Registered: Jan 2004
Location: Oregon, USA
Distribution: Slackware
Posts: 1,246

Rep: Reputation: 56
You can't use the modulo operator on floating point numbers, but you can get an int with 11 significant digits. In gcc you just use the variable type long long (yes, 2 of them). This will get you a 64-bit integer which should be more than enough.
 
Old 09-22-2004, 09:06 PM   #3
leonscape
Senior Member
 
Registered: Aug 2003
Location: UK
Distribution: Debian SID / KDE 3.5
Posts: 2,313

Rep: Reputation: 47
For modulo type functionality for floats and doubles, see Rounding and Remainder Functions.
 
Old 09-23-2004, 05:13 AM   #4
Hko
Senior Member
 
Registered: Aug 2002
Location: Groningen, The Netherlands
Distribution: ubuntu
Posts: 2,530

Rep: Reputation: 108Reputation: 108
If you really need HUGE integers, check out libgmp (GNU Multiple Precision library). This will enable you to use thousands (possibly millions) of digits.

But, like itsme86 already said, "long long int" will go a long long way as well. If you don't need negative number, you can also double the range with "unsigned long long int".

If you have libgmp installed, "info gmp" will give you the documentation.

Last edited by Hko; 09-23-2004 at 05:16 AM.
 
Old 09-23-2004, 10:04 PM   #5
jenna_h
Member
 
Registered: Nov 2002
Distribution: Mandrake 9.0
Posts: 58

Original Poster
Rep: Reputation: 15
Thanks! For some reason, "long long int" still doesn't accept the numbers, but using drem() from the math.h package lets me calculate remainders with just a "double" datatype. I'll try it out and see how it goes.
 
Old 09-24-2004, 05:09 AM   #6
Hko
Senior Member
 
Registered: Aug 2002
Location: Groningen, The Netherlands
Distribution: ubuntu
Posts: 2,530

Rep: Reputation: 108Reputation: 108
Hmm. Doesn't sound like a good idea to me to use floating point numbers to calculate primes. I maybe wrong here.

I also can hardly imagine that longlongint doesn't work. How big are the numbers? Can you post code?
 
Old 09-24-2004, 09:39 AM   #7
jim mcnamara
Member
 
Registered: May 2002
Posts: 964

Rep: Reputation: 34
Floating point operations sometimes create 'fuzz' - imprecise results way out at 8 or 10 decimal places. It's caused by floating point representations of odd numbers. When you are working with 12 digits of precision, you may bump into fuzz.

You will be much better of using an extended precsision library - why it was invented in the first place. double will not work for you reliably.
 
  


Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off
Trackbacks are Off
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Floating Point in kernel 2.4.28 lucs Slackware 1 10-19-2005 08:33 AM
Floating point exception hemk76 Linux - Software 1 05-06-2005 11:49 PM
floating point multiplication irfanhab Programming 0 12-23-2004 10:13 PM
managing floating point vince_2x Linux - General 2 09-21-2004 09:05 PM
floating point numbers in java spyghost Programming 8 09-06-2003 06:21 PM


All times are GMT -5. The time now is 02:23 AM.

Main Menu
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
identi.ca: @linuxquestions
Facebook: linuxquestions Google+: linuxquestions
Open Source Consulting | Domain Registration