// compile // Copyright 2016 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. // This tickles (a version of) the PPC64 back end to // emit a BVS instruction. package foo type Flag int const ( Identity Flag = iota - 2 // H is the identity matrix; no rotation is needed. Rescaling // H specifies rescaling. ) type DrotmParams struct { Flag } func Drotmg(d1, d2, x1, y1 float64) (p DrotmParams, rd1, rd2, rx1 float64) { const ( gam = 4.0 gamsq = 16.0 rgamsq = 5e-8 ) if d1 < 0 { p.Flag = Rescaling return } for rd1 <= rgamsq || rd1 >= gamsq { if rd1 <= rgamsq { rd1 *= gam * gam rx1 /= gam } else { rd1 /= gam * gam rx1 *= gam } } return }