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

import "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;
}
