mirror of
https://github.com/gonum/gonum.git
synced 2025-10-13 02:43:59 +08:00
asm/c128: Added stubs and tests for ScalUnitary.
This commit is contained in:
@@ -4,16 +4,6 @@
|
||||
|
||||
package c128
|
||||
|
||||
// ScalUnitary is
|
||||
// for i := range x {
|
||||
// x[i] *= alpha
|
||||
// }
|
||||
func ScalUnitary(alpha complex128, x []complex128) {
|
||||
for i := range x {
|
||||
x[i] *= alpha
|
||||
}
|
||||
}
|
||||
|
||||
// ScalUnitaryTo is
|
||||
// for i, v := range x {
|
||||
// dst[i] = alpha * v
|
||||
|
@@ -46,3 +46,9 @@ func DscalUnitary(alpha float64, x []complex128)
|
||||
// x[i*inc] = complex(real(x[i*inc])*alpha, imag(x[i*inc]))
|
||||
// }
|
||||
func DscalInc(n int, alpha float64, x []complex128, inc int)
|
||||
|
||||
// ScalUnitary is
|
||||
// for i := range x {
|
||||
// x[i] *= alpha
|
||||
// }
|
||||
func ScalUnitary(alpha complex128, x []complex128)
|
||||
|
@@ -75,3 +75,13 @@ func DscalInc(n int, alpha float64, x []complex128, inc int) {
|
||||
x[i*inc] = complex(real(x[i*inc])*alpha, imag(x[i*inc]))
|
||||
}
|
||||
}
|
||||
|
||||
// ScalUnitary is
|
||||
// for i := range x {
|
||||
// x[i] *= alpha
|
||||
// }
|
||||
func ScalUnitary(alpha complex128, x []complex128) {
|
||||
for i := range x {
|
||||
x[i] *= alpha
|
||||
}
|
||||
}
|
||||
|
@@ -170,7 +170,7 @@ func TestAxpyIncTo(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
var scalTests = []struct {
|
||||
var dscalTests = []struct {
|
||||
alpha float64
|
||||
x []complex128
|
||||
want []complex128
|
||||
@@ -209,7 +209,7 @@ var scalTests = []struct {
|
||||
|
||||
func TestDscalUnitary(t *testing.T) {
|
||||
const xGdVal = -0.5
|
||||
for i, test := range scalTests {
|
||||
for i, test := range dscalTests {
|
||||
for _, align := range align1 {
|
||||
prefix := fmt.Sprintf("Test %v (x:%v)", i, align)
|
||||
xgLn := 4 + align
|
||||
@@ -233,7 +233,7 @@ func TestDscalUnitary(t *testing.T) {
|
||||
func TestDscalInc(t *testing.T) {
|
||||
const xGdVal = -0.5
|
||||
gdLn := 4
|
||||
for i, test := range scalTests {
|
||||
for i, test := range dscalTests {
|
||||
n := len(test.x)
|
||||
for _, incX := range []int{1, 2, 3, 4, 7, 10} {
|
||||
prefix := fmt.Sprintf("Test %v (x:%v)", i, incX)
|
||||
@@ -251,3 +251,66 @@ func TestDscalInc(t *testing.T) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var scalTests = []struct {
|
||||
alpha complex128
|
||||
x []complex128
|
||||
want []complex128
|
||||
}{
|
||||
{
|
||||
alpha: 0,
|
||||
x: []complex128{},
|
||||
want: []complex128{},
|
||||
},
|
||||
{
|
||||
alpha: 1 + 1i,
|
||||
x: []complex128{1 + 2i},
|
||||
want: []complex128{-1 + 3i},
|
||||
},
|
||||
{
|
||||
alpha: 2 + 3i,
|
||||
x: []complex128{1 + 2i},
|
||||
want: []complex128{-4 + 7i},
|
||||
},
|
||||
{
|
||||
alpha: 2 - 4i,
|
||||
x: []complex128{1 + 2i},
|
||||
want: []complex128{10},
|
||||
},
|
||||
{
|
||||
alpha: 2 + 8i,
|
||||
x: []complex128{1 + 2i, 5 + 4i, 3 + 6i, 8 + 12i, -3 - 2i, -5 + 5i},
|
||||
want: []complex128{-14 + 12i, -22 + 48i, -42 + 36i, -80 + 88i, 10 - 28i, -50 - 30i},
|
||||
},
|
||||
{
|
||||
alpha: 5 - 10i,
|
||||
x: []complex128{1 + 2i, 5 + 4i, 3 + 6i, 8 + 12i, -3 - 2i, -5 + 5i, 1 + 2i, 5 + 4i, 3 + 6i, 8 + 12i, -3 - 2i, -5 + 5i},
|
||||
want: []complex128{25, 65 - 30i, 75, 160 - 20i, -35 + 20i, 25 + 75i, 25, 65 - 30i, 75, 160 - 20i, -35 + 20i, 25 + 75i},
|
||||
},
|
||||
}
|
||||
|
||||
func TestScalUnitary(t *testing.T) {
|
||||
const xGdVal = -0.5
|
||||
for i, test := range scalTests {
|
||||
for _, align := range align1 {
|
||||
prefix := fmt.Sprintf("Test %v (x:%v)", i, align)
|
||||
xgLn := 4 + align
|
||||
xg := guardVector(test.x, xGdVal, xgLn)
|
||||
x := xg[xgLn : len(xg)-xgLn]
|
||||
|
||||
ScalUnitary(test.alpha, x)
|
||||
|
||||
for i := range test.want {
|
||||
if !same(x[i], test.want[i]) {
|
||||
t.Errorf(msgVal, prefix, i, x[i], test.want[i])
|
||||
}
|
||||
}
|
||||
if !isValidGuard(xg, xGdVal, xgLn) {
|
||||
t.Errorf(msgGuard, prefix, "x", xg[:xgLn], xg[len(xg)-xgLn:])
|
||||
}
|
||||
if t.Failed() {
|
||||
//t.FailNow()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user