 /*
  * Khoros: $Id: kfmod.c,v 1.3 1992/03/20 23:43:07 dkhoros Exp $
  */

#if !defined(lint) && !defined(SABER)
static char rcsid[] = "Khoros: $Id: kfmod.c,v 1.3 1992/03/20 23:43:07 dkhoros Exp $";
#endif

 /*
  * $Log: kfmod.c,v $
 * Revision 1.3  1992/03/20  23:43:07  dkhoros
 * VirtualPatch5
 *
  */ 

/*
 *----------------------------------------------------------------------
 *
 * Copyright 1990, University of New Mexico.  All rights reserved.
 * 
 * Permission to copy and modify this software and its documen-
 * tation only for internal use in your organization is hereby
 * granted, provided that this notice is retained thereon and
 * on all copies.  UNM makes no representations as too the sui-
 * tability and operability of this software for any purpose.
 * It is provided "as is" without express or implied warranty.
 * 
 * UNM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
 * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
 * NESS.  IN NO EVENT SHALL UNM BE LIABLE FOR ANY SPECIAL,
 * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY OTHER DAMAGES WHAT-
 * SOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
 * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
 * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PER-
 * FORMANCE OF THIS SOFTWARE.
 * 
 * No other rights, including for example, the right to redis-
 * tribute this software and its documentation or the right to
 * prepare derivative works, are granted unless specifically
 * provided in a separate license agreement.
 *----------------------------------------------------------------------
 */

#include "unmcopyright.h"	 /* Copyright 1990 by UNM */
#include "vmath.h"

/***********************************************************************
*
*  Routine Name: kfmod()
*          Date: Aug 1, 1991
*       Purpose: returns double precision floating point modulos
*         Input: numbers to mod:  a mod b
*        Output: double a mod b
*    Written By: taken from the 4.3 BSD release 
* Modifications: Danielle Argiro, added spaces for readability
*
***********************************************************************/

double kfmod(a,b)
double a,b;
{
	if (b == 0) return(0.0);
	if (a > 0.0) 
	{
	    if (b > 0.0) 
		return( a - (floor(a / b) * b) );

	    return( a - (ceil(a / b) * b) );
	}
	if (b > 0.0) 
	    return( a - (ceil(a / b) * b) );

        return( a - (floor(a / b) * b) );
}
