Another simple fortran q

  • Fortran
  • Thread starter autobot.d
  • Start date
  • #1
68
0

Main Question or Discussion Point

I want to find a bound for around magnitude 10**270 which is within bounds of double precision but I get

DOUBLE PRECISION :: bound = 10**270

Error: Arithmetic overflow at (1)
.\q2.f03:70.4:


where 1 is beneath the first *.

I am sure it is something simple I am overlooking....
 

Answers and Replies

  • #2
AlephZero
Science Advisor
Homework Helper
6,993
291
Since 10 and 270 are both integers, 10**270 is evaluated as an integer expression, and then the result is converted to double precision to assign it to the variable. You got the overflow because 10**270 can't be represetned as an integer value.

You could write 10.0d0 ** 270, or better, just 10.0d270.

Note you must use a "d" exponent (not "e") in a constant to make it double precision. 10.0 ** 270 will still give an overflow, because 10.0 is a single precision constant and the maximum value that can be represented in single precision is about 1038.
 

Related Threads for: Another simple fortran q

  • Last Post
Replies
2
Views
3K
  • Last Post
Replies
2
Views
3K
  • Last Post
Replies
2
Views
3K
  • Last Post
Replies
1
Views
1K
  • Last Post
Replies
5
Views
1K
Replies
1
Views
7K
Replies
3
Views
5K
Replies
1
Views
2K
Top