🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.sys.dec
Article #4991

Re: difference between vax floating point representation and IEEE

#4991
From: Greg Woods
Date: Thu, 21 Jul 1988 22:08
48 lines
2145 bytes
In article <2256@hubcap.UUCP> ghosh@hubcap.UUCP (Amitava Ghosh) writes:
>does anyone know what the difference is between the IEEE floating
>point representation and the way the VAX stores numbers. If so
>how does one convert from one format to the other.  

  Here's some C subroutines to convert back and forth between VAX and
IEEE format. I use them to convert binary files between VAXes and Suns
and it works fairly well. They all take a pointer to the data and
how many data elements to convert as arguments.

--Greg
-------------------------------------------------------------------------
union  ie3float { char c[4]; int  exp; float f; };
void vf2ie3f(u,n) register union ie3float *u; register int n; {
/* VAX float to IEEE float */
register char tmp;
register int i;
for (i=0; i < n; u++,i++) {
   if (! u->exp) continue;
   tmp=u->c[0]; u->c[0]=u->c[1]-1; u->c[1]=tmp;
   tmp=u->c[2]; u->c[2]=u->c[3];   u->c[3]=tmp;
}
}

void ie3f2vf(u,n) register union ie3float *u; register int n; {
/* IEEE float to VAX float */
register char tmp;
register int i;
for (i=0; i < n; u++,i++) {
   if (! u->exp) continue;
   tmp=u->c[0]+1; u->c[0]=u->c[1]; u->c[1]=tmp;
   tmp=u->c[2]; u->c[2]=u->c[3];   u->c[3]=tmp;
}
}

void i4conv(u,n) union ie3float *u; register int n; {
/* 4-byte integers; self-inverting operation so only one routine needed
   to go both ways */
register char tmp; register int i;
for (i=0; i < n; u++,i++) {
   tmp=u->c[0]; u->c[0]=u->c[3]; u->c[3]=tmp;
   tmp=u->c[1]; u->c[1]=u->c[2]; u->c[2]=tmp;
}
}

void i2conv(u,n) register union ie3float *u; int n; {
   swab(u,2*n); /* included for the hell of it */
}
Technical Details
Message-ID: <462@ncar.ucar.edu>
Path: arc1-ca.pugleaf.net!utzoo!utgpu!water!watmath!clyde!att!pacbell!ames!ncar!woods
References: <2256@hubcap.UUCP>

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!utgpu!water!watmath!clyde!att!pacbell!ames!ncar!woods
From: woods@ncar.ucar.edu (Greg Woods)
Newsgroups: comp.sys.dec,comp.os.vms
Subject: Re: difference between vax floating point representation and IEEE
Keywords: IEEE vax floating
Message-ID: <462@ncar.ucar.edu>
Date: 21 Jul 88 22:08:44 GMT
References: <2256@hubcap.UUCP>
Reply-To: woods@handies.UCAR.EDU (Greg Woods)
Organization: Scientific Computing Division/NCAR, Boulder CO
Lines: 48