| // Copyright 2014 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. | |
| // +build !go1.4 | |
| package exact | |
| import ( | |
| "math" | |
| "math/big" | |
| ) | |
| func ratToFloat32(x *big.Rat) (float32, bool) { | |
| // Before 1.4, there's no Rat.Float32. | |
| // Emulate it, albeit at the cost of | |
| // imprecision in corner cases. | |
| x64, exact := x.Float64() | |
| x32 := float32(x64) | |
| if math.IsInf(float64(x32), 0) { | |
| exact = false | |
| } | |
| return x32, exact | |
| } |