htond.c File Reference

convert doubles to host/network format More...

#include "common.h"
#include <stdio.h>
#include "machine.h"
#include "bu.h"
#include "htond.c: ERROR, no HtoND conversion for this machine type"
#include "ntohd.c: ERROR, no NtoHD conversion for this machine type"

Include dependency graph for htond.c:

Go to the source code of this file.

Defines

#define OUT_IEEE_ZERO
#define OUT_IEEE_NAN

Functions

void htond (register unsigned char *out, register const unsigned char *in, int count)
 Host to Network Doubles.
void ntohd (register unsigned char *out, register const unsigned char *in, int count)
 Network to Host Doubles.


Detailed Description

convert doubles to host/network format

Library routines for conversion between the local host 64-bit ("double precision") representation, and 64-bit IEEE double precision representation, in "network order", ie, big-endian, the MSB in byte [0], on the left.

As a quick review, the IEEE double precision format is as follows: sign bit, 11 bits of exponent (bias 1023), and 52 bits of mantissa, with a hidden leading one (0.1 binary). When the exponent is 0, IEEE defines a "denormalized number", which is not supported here. When the exponent is 2047 (all bits set), and: all mantissa bits are zero, value is infinity*sign, mantissa is non-zero, and: msb of mantissa=0: signaling NAN msb of mantissa=1: quiet NAN

Note that neither the input or output buffers need be word aligned, for greatest flexability in converting data, even though this imposes a speed penalty here.

These subroutines operate on a sequential block of numbers, to save on subroutine linkage execution costs, and to allow some hope for vectorization.

On brain-damaged machines like the SGI 3-D, where type "double" allocates only 4 bytes of space, these routines *still* return 8 bytes in the IEEE buffer.

Author - Michael John Muuss

Source - SECAD/VLD Computing Consortium, Bldg 394 The U. S. Army Ballistic Research Laboratory Aberdeen Proving Ground, Maryland 21005-5066

Definition in file htond.c.


Generated on Mon Sep 18 01:25:03 2006 for BRL-CAD by  doxygen 1.4.6