// 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;
}
