From: Uno on
On 5/19/2010 11:33 AM, mecej4 wrote:

>> q2) What are other methods to determine aspects of 64-bit processing?
>
> Look at MyComputer->Properties. If it does not say 64 somewhere there,
> you are running a 32-bit version of Windows and you cannot run a version
> of gfortran (or any other program) targeted to an X64 CPU.

Indeed. Sometimes I use fortran to figure out the OS I'm on. Looks
like they really pimped out paint on windows7.

http://i46.tinypic.com/imj6oi.png
--
Uno
From: robin on
"Uno" <merrilljensen(a)q.com> wrote in message news:85h41mFsjhU1(a)mid.individual.net...
| I've been trying to develop a 64-bit gfortran capability and was hopeful
| that techniques I had been using would work on a friend's laptop, but I
| think I failed.
|
| Am I correct to think that if I had 64-bit processing, then qp_preferred
| would be positive:
|
| E:\fortran_stuff>type test1.f90
| implicit none
|
| integer, parameter :: sp = selected_real_kind(1,3)
| integer, parameter :: dp = selected_real_kind(15,300)
| integer, parameter :: qp_preferred = selected_real_kind(30,1000)
| integer, parameter :: qp = (1+sign(1,qp_preferred))/2*qp_preferred+ &
| (1-sign(1,qp_preferred))/2*dp
|
| real (kind=sp) w
| real (kind=dp) y
| real (kind=qp) z
|
| w = 4.0*atan(1.0)
| y = 4.0*atan(1.0)
| z = 4.0*atan(1.0)

Even if qp and qp_proferred were positive values,
the values stored for y and for z are of single precision only.

To obtain double precision value for y, you need to specify the
constant as double precision, namely, atan(1.0_dp),
and similarly for z, as atan(1.0_qp).

| print *, sp,dp,qp_preferred,qp
| print *, w,y,z
| endprogram


From: Uno on
steve wrote:

Why is "64-bit processing" vague?
--
Uno
From: Louis Krupp on
On 5/21/2010 12:49 AM, Uno wrote:
> steve wrote:
>
> Why is "64-bit processing" vague?

Are you stating that "'64-bit processing' is vague" and asking why this
is the case, or are you why "64-bit processing" is perceived to be vague?

Louis

From: Tobias Burnus on
On 05/21/2010 08:49 AM, Uno wrote:
> Why is "64-bit processing" vague?

First, because it does not tell about what part is 64bit; is is the
pointer size? The size of a floating point number [REAL, REAL(8), DOUBLE
PRECSION, REAL(selected_real_kind(...)]? The register size? ...?

Secondly, because PowerPC 64 bit is different from Itanium (ia64), from
SPARC64/PA-SPARC, from s960, from MIPS - and on x86-64 (= AMD64,
Intel64, em64t, ...) the 64 bit mode is different again.

For instance, PowerPC supports 128bit floating point operation in
hardware while x86-64 does not. (Thus, on x86-64 using "REAL(16)"*
either maps to 80bit (e.g. NAG w/ -kind=byte) or is implemented in
software (e.g. Intel) or is not supported (e.g. gfortran); some
compilers support the 80bit version via REAL(10) (e.g. gfortran) -
others "only" REAL(4) and REAL(8).)

Tobias

(* For the moment I assume that kind number = variable size in bytes,
which is a common choice but by far not universal. Use
selected_real_kind, precision, and kind to choose the type/kind-number
you want [assuming it exists].)

PS: If I want to use double precision or - if present - the next higher
precsion, I use:
integer, parameter :: qp = &
max(kind(0.0d0), selected_real_kind(precision(0.0d0)+1))