mirror of
https://github.com/golang/go
synced 2024-11-19 16:44:43 -07:00
math/big: use internal square for Rat
updates #13745 A squared rational is always positive and can not be reduced since the numerator and denominator had no previous common factors. The nat multiplication can be performed using the internal sqr method. Change-Id: I558f5b38e379bfd26ff163c9489006d7e5a9cfaa Reviewed-on: https://go-review.googlesource.com/56776 Reviewed-by: Robert Griesemer <gri@golang.org> Run-TryBot: Robert Griesemer <gri@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
parent
66a1d37bf7
commit
fe08ebaebb
@ -490,6 +490,13 @@ func (z *Rat) Sub(x, y *Rat) *Rat {
|
||||
|
||||
// Mul sets z to the product x*y and returns z.
|
||||
func (z *Rat) Mul(x, y *Rat) *Rat {
|
||||
if x == y {
|
||||
// a squared Rat is positive and can't be reduced
|
||||
z.a.neg = false
|
||||
z.a.abs = z.a.abs.sqr(x.a.abs)
|
||||
z.b.abs = z.b.abs.sqr(x.b.abs)
|
||||
return z
|
||||
}
|
||||
z.a.Mul(&x.a, &y.a)
|
||||
z.b.abs = mulDenom(z.b.abs, x.b.abs, y.b.abs)
|
||||
return z.norm()
|
||||
|
Loading…
Reference in New Issue
Block a user