* Ada digits / VAX Float Types (from INFO-VAX)
@ 1990-06-04 16:00 "EDWARD CRAGG"
0 siblings, 0 replies; only message in thread
From: "EDWARD CRAGG" @ 1990-06-04 16:00 UTC (permalink / raw)
The following (edited) thread from INFO-VAX would appear to be of
interest to the INFO-ADA community.
.............................................................................
Subj: VAX Float Types in specific, Ada's DIGITS attribute in general
From: EDU%"usc!trwind!mcosm!sroka@UCSD.EDU" "Gabriel D. Sroka" 31-MAY-1990 06:00:45.56
From: EDU%"F.Zwarts%KVI.nl@CUNYVM.CUNY.EDU" "Fred Zwarts, KVI, Groningen, NL." 1-JUN-1990 13:24:45.62
From: WINS%"kassover@ra.crd.ge.com"
Sroka > QUESTION:
Sroka > Why does the VAX Ada v2.0 LRM [3.5.7] say that D_FLOATs have 9 digits
Sroka > of precision (d.o.p.)? I think they have 16 d.o.p.
Sroka >
Sroka > DATA:
Sroka > Fig. 2-2 in the VAX Ada Run-Time Reference Manual (RTRM) indicates that
Sroka > D_FLOATs have 56-bit fractions. Fig. 2-3 indicates that G_FLOATs have
Sroka > 53-bit fractions.
Sroka >
Sroka > PREMISE:
Sroka > A float with an (N+3)-bit fraction should have as many as or more
Sroka > digits of precision than another float with an N-bit fraction.
Sroka > I think D_FLOATs have 16 d.o.p. ("one part in 2**55" as it says at
Sroka > the top of 2-13.) I think G_FLOATs have 15 d.o.p. ("one part in 2**52"
Sroka > as it says on 2-14.)
Zwarts > Carefull read LRM [3.5.7] again. You will notice that in a
Zwarts > floating point declaration the DIGITS keyword does not only specify
Zwarts > the precision, but also the exponential range.
Zwarts >
Zwarts > "The specified number D is the minimal number of decimal digits
Zwarts > required ..." "The value of D in turn determines a corresponding
Zwarts > number B that is the minimum number of binary digits ..." "The model
Zwarts > numbers defined ... comprise zero and all numbers whose binary
Zwarts > canonical form has exactly B digits after the point in the mantissa
Zwarts > and an exponent in the range -4*B .. +4*B."
Zwarts >
Zwarts > Therefore a floating point type with more than 9 DIGITS cannot be
Zwarts > represented by a D_FLOAT type.
Zwarts >
Zwarts > The exponential range and the precision are very much out of balance
Zwarts > (for Ada) for a D_FLOAT type. For a G_FLOAT type this balance is much
Zwarts > better, therefore it can be used with a larger value of DIGITS.
Kassover > I might add that if, for some reason, you have to import a
Kassover > routine written in a language other than Ada that must pass a
Kassover > long_float, make sure all such routines are compiled with a /G_FLOAT
Kassover > or other suitable qualifier.
Kassover >
Kassover > Otherwise, your Ada program will get the right number of bits,
Kassover > that may or may not represent a number that is reasonable for
Kassover > your calculation.
Kassover >
Kassover > If such recompilation is not an option, you will have to find or
Kassover > build a conversion routine or two...
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~1990-06-04 16:00 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1990-06-04 16:00 Ada digits / VAX Float Types (from INFO-VAX) "EDWARD CRAGG"
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox