// Copyright 2009 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package math


/*
 *	floating-point mod func without infinity or NaN checking
 */

// Fmod returns the floating-point remainder of x/y.
func Fmod(x, y float64) float64 {
	if y == 0 {
		return x;
	}
	if y < 0 {
		y = -y;
	}

	yfr, yexp := Frexp(y);
	sign := false;
	r := x;
	if x < 0 {
		r = -x;
		sign = true;
	}

	for r >= y {
		rfr, rexp := Frexp(r);
		if rfr < yfr {
			rexp = rexp-1;
		}
		r = r - Ldexp(y, rexp-yexp);
	}
	if sign {
		r = -r;
	}
	return r;
}
