From: Gautier <Gautier.deMontmollin@Maths.UniNe.CH>
Subject: Re: IEEE float I/O in DEC Ada
Date: 1999/06/02
Date: 1999-06-02T00:00:00+00:00 [thread overview]
Message-ID: <37556F34.C215608F@Maths.UniNe.CH> (raw)
In-Reply-To: 374EB9A9.F226AEE7@Maths.UniNe.CH
Thank you all for your help!
The link to file ada$predefined:system_.adc
was decisive. The conversions work - I precise
that the machine is an Alphaserver 8420 under OpenVMS V6.2.
Testing works - apart a carriage return that
DEC Ada adds after each binary record !
It seems even usual; dir /full outputs:
...
Record format: Fixed length 4 byte records
Record attributes: Carriage return carriage control
But now the situation is under control...
Thank you again!
--
Gautier
--------
http://members.xoom.com/gdemont/
PS: test programs.
-- Test IEEE float output on AXP with DEC Ada
with system;
with sequential_io;
with text_io; use text_io;
procedure wr_ieee is
subtype ieee_real is system.ieee_single_float;
subtype real is long_float;
package rio is new float_io(real); use rio;
package irio is new float_io(ieee_real); use irio;
package sio is new sequential_io(ieee_real); use sio;
f: sio.file_type;
d: constant array(1..6) of real:=
( 1.2345678901234567890, 1.0e40, 1.0e-39,
-1.2345678901234567890, -1.0e40, -1.0e-39 );
function To_IEEE(r: real) return ieee_real is
begin
if r > real(ieee_real'last) then -- overflow
return ieee_real'last;
elsif r < real(ieee_real'first) then -- overflow
return ieee_real'first;
-- elsif abs(r) < real(ieee_real'small) then -- underflow (seems
useless)
-- return 0.0;
else
return ieee_real(r);
end if;
end To_IEEE;
begin
for i in d'range loop
Put(" real "); Put(d(i));
Put(" ieee "); Put(to_ieee(d(i)));
New_Line;
end loop;
Create(f, name=> "IEEE.DAT");
for i in d'range loop Write(f, to_ieee(d(i)) ); end loop;
Close(f);
end wr_ieee;
$ ru wr_ieee
real 1.23456789012346E+00 ieee 1.23457E+00
real 1.00000000000000E+40 ieee 3.40282E+38
real 1.00000000000000E-39 ieee 0.00000E+00
real -1.23456789012346E+00 ieee -1.23457E+00
real -1.00000000000000E+40 ieee -3.40282E+38
real -1.00000000000000E-39 ieee 0.00000E+00
-- Test IEEE float input on PC with GNAT
with sequential_io;
with text_io; use text_io;
procedure rd_ieee is
subtype ieee_real is float;
package irio is new float_io(ieee_real); use irio;
package sio is new sequential_io(ieee_real); use sio;
f: sio.file_type;
d: array(1..6) of ieee_real;
begin
Open(f, in_file, "IEEE.DAT");
for i in d'range loop
Read(f,d(i));
Put(" ieee "); Put(d(i));
New_Line;
end loop;
Close(f);
end;
C:\USERS\GAUTIER\ADA\TESTS>rd_ieee.exe
ieee 1.23457E+00
ieee 3.40282E+38
ieee 0.00000E+00
ieee -1.23457E+00
ieee -3.40282E+38
ieee 0.00000E+00
prev parent reply other threads:[~1999-06-02 0:00 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
1999-05-28 0:00 IEEE float I/O in DEC Ada Gautier
1999-05-28 0:00 ` Robert Dewar
1999-05-29 0:00 ` GitaSrinivasan
1999-05-30 0:00 ` Thierry Lelegard
1999-06-02 0:00 ` Gautier [this message]
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox