/*
  (c) copyright 1988 by the Vrije Universiteit, Amsterdam, The Netherlands.
  See the copyright notice in the ACK home directory, in the file "Copyright".
*/

/* $Header$ */

/*
	SUBTRACT TWO FLOATS - DOUBLE Precision (SBF 8)
*/

#include	"FP_types.h"

extern	_double	adf8();

_double
sbf8(s2,s1)
_double	s1,s2;
{
				/* changing the sign directly	*/
				/* is faster than the code line	*/
				/*	s2 = -s2;		*/
	char unsigned *p;		/* sufficient to access sign bit */
	_double *result = &s1;	/* s1 may not be in a register! */

	if (s2.__double[0] == 0 && s2.__double[1] == 0) {
		return s1;
	}
	p = (char unsigned *) &s2;
	*p ^= 0x80;	/* change sign of s2 */
	*result = adf8(s2,s1);	/* add and return result */
	return(s1);
}