URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libgo/] [go/] [math/] [mod.go] - Rev 747
Compare with Previous | Blame | View Log
// Copyright 2009-2010 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 function.*/// Mod returns the floating-point remainder of x/y.// The magnitude of the result is less than y and its// sign agrees with that of x.//// Special cases are:// Mod(±Inf, y) = NaN// Mod(NaN, y) = NaN// Mod(x, 0) = NaN// Mod(x, ±Inf) = x// Mod(x, NaN) = NaN//extern fmodfunc libc_fmod(float64, float64) float64func Mod(x, y float64) float64 {return libc_fmod(x, y)}func mod(x, y float64) float64 {if y == 0 || IsInf(x, 0) || IsNaN(x) || IsNaN(y) {return NaN()}if y < 0 {y = -y}yfr, yexp := Frexp(y)sign := falser := xif x < 0 {r = -xsign = 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}
