Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!utgpu!water!watnot!watmath!clyde!rutgers!ames!ucbcad!ucbvax!RELAY.CS.NET!btb%ncoast.UUCP%case.CSNET From: btb%ncoast.UUCP%case.CSNET@RELAY.CS.NET.UUCP Newsgroups: mod.computers.vax Subject: Re: Data Conversion (PE real*4 to Vax real*4) Message-ID: <540325683.29344@ncoast> Date: Sat, 14-Feb-87 17:01:10 EST Article-I.D.: ncoast.540325683.29344 Posted: Sat Feb 14 17:01:10 1987 Date-Received: Sun, 15-Feb-87 23:05:24 EST References: <870206135928.005@Xhmeia.Caltech.Edu> Sender: daemon@ucbvax.BERKELEY.EDU Reply-To: Brad Banko Organization: Cleveland Public Access UN*X, Cleveland, OH Lines: 55 Approved: info-vax@sri-kl.arpa In article <870206135928.005@Xhmeia.Caltech.Edu> zar@XHMEIA.CALTECH.EDU writes: >Can someone tell me how to convert a real*4 Perkin-Elmer data to VAX >real*4. What I need is how the PE real data is stored (what bits have the >mantissa etc.). This info for the VAX would be handy, although I can just >as easily look the VAX data storage for real numbers myself (I'm lazy :-) ). >Many many thanks and blessings to all who respond... > >Zar >ZAR@CITCHEM (Bitnet) >ZAR@XHMEIA.CALTECH.EDU (Arpa) Zar, I have just finished struggling with this... we have a PET scanner that is run on some PE 3205's and a 3210 running OS/32, and we wanted to do some analysis and archiving of the data on a Vax 11/750 running VMS... There are two main problems with this conversion: 1) PE stores bytes in a Real*4 in a different order than on the Vax, 4-3-2-1 vs. 3-4-1-2 respectively, where 4 is the msbyte, and the bytes are listed in order of increasing storage location... and two 2) PE uses a different floating point format than the Vax... the PE format actually has a wider dynamic range than the Vax (roughly 10+/-76 vx. 10+/-38), so you have to decide how you will handle that... you can also use the /g_float option of the vax fortran compiler, and interpret the pe real*4 into a vax g_float real*8, but that is sort of a pain... i tried it both ways, and finally ended up going with a conversion into normal vax real*4 letting the conversion routine do some checking for under/overflow... concurrent (i.e., pe) wasn't much help with this problem, but they tried... i ended up having to learn all about floating point formats... pe uses an ibm-like format with a 7-bit excess 64 HEX-based exponent, whereas dec uses an 8-bit excess 128 binary-based exponent if you want, i could send you the subroutine that i wrote to : pe_real4_to_vax_real4(x) actually it is a fortran function... i think i still have the g_float version around, too, let me know. -- Brad Banko ...!decvax!cwruecmp!ncoast!btb Cleveland, Ohio "The only thing we have to fear on this planet is man." -- Carl Jung, 1875-1961