1 // Copyright 2016 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
7 // Tests whether the non vector routines are working, even when the tests are run on a
8 // vector-capable machine.
16 func TestCosNovec(t
*testing
.T
) {
18 t
.Skipf("no vector support")
20 for i
:= 0; i
< len(vf
); i
++ {
21 if f
:= CosNoVec(vf
[i
]); !veryclose(cos
[i
], f
) {
22 t
.Errorf("Cos(%g) = %g, want %g", vf
[i
], f
, cos
[i
])
25 for i
:= 0; i
< len(vfcosSC
); i
++ {
26 if f
:= CosNoVec(vfcosSC
[i
]); !alike(cosSC
[i
], f
) {
27 t
.Errorf("Cos(%g) = %g, want %g", vfcosSC
[i
], f
, cosSC
[i
])
32 func TestCoshNovec(t
*testing
.T
) {
34 t
.Skipf("no vector support")
36 for i
:= 0; i
< len(vf
); i
++ {
37 if f
:= CoshNoVec(vf
[i
]); !close(cosh
[i
], f
) {
38 t
.Errorf("Cosh(%g) = %g, want %g", vf
[i
], f
, cosh
[i
])
41 for i
:= 0; i
< len(vfcoshSC
); i
++ {
42 if f
:= CoshNoVec(vfcoshSC
[i
]); !alike(coshSC
[i
], f
) {
43 t
.Errorf("Cosh(%g) = %g, want %g", vfcoshSC
[i
], f
, coshSC
[i
])
47 func TestSinNovec(t
*testing
.T
) {
49 t
.Skipf("no vector support")
51 for i
:= 0; i
< len(vf
); i
++ {
52 if f
:= SinNoVec(vf
[i
]); !veryclose(sin
[i
], f
) {
53 t
.Errorf("Sin(%g) = %g, want %g", vf
[i
], f
, sin
[i
])
56 for i
:= 0; i
< len(vfsinSC
); i
++ {
57 if f
:= SinNoVec(vfsinSC
[i
]); !alike(sinSC
[i
], f
) {
58 t
.Errorf("Sin(%g) = %g, want %g", vfsinSC
[i
], f
, sinSC
[i
])
63 func TestSinhNovec(t
*testing
.T
) {
65 t
.Skipf("no vector support")
67 for i
:= 0; i
< len(vf
); i
++ {
68 if f
:= SinhNoVec(vf
[i
]); !close(sinh
[i
], f
) {
69 t
.Errorf("Sinh(%g) = %g, want %g", vf
[i
], f
, sinh
[i
])
72 for i
:= 0; i
< len(vfsinhSC
); i
++ {
73 if f
:= SinhNoVec(vfsinhSC
[i
]); !alike(sinhSC
[i
], f
) {
74 t
.Errorf("Sinh(%g) = %g, want %g", vfsinhSC
[i
], f
, sinhSC
[i
])
79 // Check that math functions of high angle values
80 // return accurate results. [Since (vf[i] + large) - large != vf[i],
81 // testing for Trig(vf[i] + large) == Trig(vf[i]), where large is
82 // a multiple of 2*Pi, is misleading.]
83 func TestLargeCosNovec(t
*testing
.T
) {
85 t
.Skipf("no vector support")
87 large
:= float64(100000 * Pi
)
88 for i
:= 0; i
< len(vf
); i
++ {
90 f2
:= CosNoVec(vf
[i
] + large
)
92 t
.Errorf("Cos(%g) = %g, want %g", vf
[i
]+large
, f2
, f1
)
97 func TestLargeSinNovec(t
*testing
.T
) {
99 t
.Skipf("no vector support")
101 large
:= float64(100000 * Pi
)
102 for i
:= 0; i
< len(vf
); i
++ {
104 f2
:= SinNoVec(vf
[i
] + large
)
106 t
.Errorf("Sin(%g) = %g, want %g", vf
[i
]+large
, f2
, f1
)
111 func TestLargeTanNovec(t
*testing
.T
) {
113 t
.Skipf("no vector support")
115 large
:= float64(100000 * Pi
)
116 for i
:= 0; i
< len(vf
); i
++ {
118 f2
:= TanNovec(vf
[i
] + large
)
120 t
.Errorf("Tan(%g) = %g, want %g", vf
[i
]+large
, f2
, f1
)
125 func TestTanNovec(t
*testing
.T
) {
127 t
.Skipf("no vector support")
129 for i
:= 0; i
< len(vf
); i
++ {
130 if f
:= TanNovec(vf
[i
]); !veryclose(tan
[i
], f
) {
131 t
.Errorf("Tan(%g) = %g, want %g", vf
[i
], f
, tan
[i
])
134 // same special cases as Sin
135 for i
:= 0; i
< len(vfsinSC
); i
++ {
136 if f
:= TanNovec(vfsinSC
[i
]); !alike(sinSC
[i
], f
) {
137 t
.Errorf("Tan(%g) = %g, want %g", vfsinSC
[i
], f
, sinSC
[i
])
142 func TestTanhNovec(t
*testing
.T
) {
144 t
.Skipf("no vector support")
146 for i
:= 0; i
< len(vf
); i
++ {
147 if f
:= TanhNoVec(vf
[i
]); !veryclose(tanh
[i
], f
) {
148 t
.Errorf("Tanh(%g) = %g, want %g", vf
[i
], f
, tanh
[i
])
151 for i
:= 0; i
< len(vftanhSC
); i
++ {
152 if f
:= TanhNoVec(vftanhSC
[i
]); !alike(tanhSC
[i
], f
) {
153 t
.Errorf("Tanh(%g) = %g, want %g", vftanhSC
[i
], f
, tanhSC
[i
])
159 func TestLog10Novec(t
*testing
.T
) {
161 t
.Skipf("no vector support")
163 for i
:= 0; i
< len(vf
); i
++ {
165 if f
:= Log10NoVec(a
); !veryclose(log10
[i
], f
) {
166 t
.Errorf("Log10(%g) = %g, want %g", a
, f
, log10
[i
])
169 if f
:= Log10NoVec(E
); f
!= Log10E
{
170 t
.Errorf("Log10(%g) = %g, want %g", E
, f
, Log10E
)
172 for i
:= 0; i
< len(vflogSC
); i
++ {
173 if f
:= Log10NoVec(vflogSC
[i
]); !alike(logSC
[i
], f
) {
174 t
.Errorf("Log10(%g) = %g, want %g", vflogSC
[i
], f
, logSC
[i
])
179 func TestLog1pNovec(t
*testing
.T
) {
181 t
.Skipf("no vector support")
183 for i
:= 0; i
< len(vf
); i
++ {
185 if f
:= Log1pNovec(a
); !veryclose(log1p
[i
], f
) {
186 t
.Errorf("Log1p(%g) = %g, want %g", a
, f
, log1p
[i
])
190 if f
:= Log1pNovec(a
); f
!= Ln10
{
191 t
.Errorf("Log1p(%g) = %g, want %g", a
, f
, Ln10
)
193 for i
:= 0; i
< len(vflogSC
); i
++ {
194 if f
:= Log1pNovec(vflog1pSC
[i
]); !alike(log1pSC
[i
], f
) {
195 t
.Errorf("Log1p(%g) = %g, want %g", vflog1pSC
[i
], f
, log1pSC
[i
])
200 func TestAtanhNovec(t
*testing
.T
) {
202 t
.Skipf("no vector support")
204 for i
:= 0; i
< len(vf
); i
++ {
206 if f
:= AtanhNovec(a
); !veryclose(atanh
[i
], f
) {
207 t
.Errorf("Atanh(%g) = %g, want %g", a
, f
, atanh
[i
])
210 for i
:= 0; i
< len(vfatanhSC
); i
++ {
211 if f
:= AtanhNovec(vfatanhSC
[i
]); !alike(atanhSC
[i
], f
) {
212 t
.Errorf("Atanh(%g) = %g, want %g", vfatanhSC
[i
], f
, atanhSC
[i
])
217 func TestAcosNovec(t
*testing
.T
) {
219 t
.Skipf("no vector support")
221 for i
:= 0; i
< len(vf
); i
++ {
223 if f
:= AcosNovec(a
); !close(acos
[i
], f
) {
224 t
.Errorf("Acos(%g) = %g, want %g", a
, f
, acos
[i
])
227 for i
:= 0; i
< len(vfacosSC
); i
++ {
228 if f
:= AcosNovec(vfacosSC
[i
]); !alike(acosSC
[i
], f
) {
229 t
.Errorf("Acos(%g) = %g, want %g", vfacosSC
[i
], f
, acosSC
[i
])
234 func TestAsinNovec(t
*testing
.T
) {
236 t
.Skipf("no vector support")
238 for i
:= 0; i
< len(vf
); i
++ {
240 if f
:= AsinNovec(a
); !veryclose(asin
[i
], f
) {
241 t
.Errorf("Asin(%g) = %g, want %g", a
, f
, asin
[i
])
244 for i
:= 0; i
< len(vfasinSC
); i
++ {
245 if f
:= AsinNovec(vfasinSC
[i
]); !alike(asinSC
[i
], f
) {
246 t
.Errorf("Asin(%g) = %g, want %g", vfasinSC
[i
], f
, asinSC
[i
])
251 func TestAcoshNovec(t
*testing
.T
) {
253 t
.Skipf("no vector support")
255 for i
:= 0; i
< len(vf
); i
++ {
257 if f
:= AcoshNovec(a
); !veryclose(acosh
[i
], f
) {
258 t
.Errorf("Acosh(%g) = %g, want %g", a
, f
, acosh
[i
])
261 for i
:= 0; i
< len(vfacoshSC
); i
++ {
262 if f
:= AcoshNovec(vfacoshSC
[i
]); !alike(acoshSC
[i
], f
) {
263 t
.Errorf("Acosh(%g) = %g, want %g", vfacoshSC
[i
], f
, acoshSC
[i
])
268 func TestAsinhNovec(t
*testing
.T
) {
270 t
.Skipf("no vector support")
272 for i
:= 0; i
< len(vf
); i
++ {
273 if f
:= AsinhNovec(vf
[i
]); !veryclose(asinh
[i
], f
) {
274 t
.Errorf("Asinh(%g) = %g, want %g", vf
[i
], f
, asinh
[i
])
277 for i
:= 0; i
< len(vfasinhSC
); i
++ {
278 if f
:= AsinhNovec(vfasinhSC
[i
]); !alike(asinhSC
[i
], f
) {
279 t
.Errorf("Asinh(%g) = %g, want %g", vfasinhSC
[i
], f
, asinhSC
[i
])
284 func TestErfNovec(t
*testing
.T
) {
286 t
.Skipf("no vector support")
288 for i
:= 0; i
< len(vf
); i
++ {
290 if f
:= ErfNovec(a
); !veryclose(erf
[i
], f
) {
291 t
.Errorf("Erf(%g) = %g, want %g", a
, f
, erf
[i
])
294 for i
:= 0; i
< len(vferfSC
); i
++ {
295 if f
:= ErfNovec(vferfSC
[i
]); !alike(erfSC
[i
], f
) {
296 t
.Errorf("Erf(%g) = %g, want %g", vferfSC
[i
], f
, erfSC
[i
])
301 func TestErfcNovec(t
*testing
.T
) {
303 t
.Skipf("no vector support")
305 for i
:= 0; i
< len(vf
); i
++ {
307 if f
:= ErfcNovec(a
); !veryclose(erfc
[i
], f
) {
308 t
.Errorf("Erfc(%g) = %g, want %g", a
, f
, erfc
[i
])
311 for i
:= 0; i
< len(vferfcSC
); i
++ {
312 if f
:= ErfcNovec(vferfcSC
[i
]); !alike(erfcSC
[i
], f
) {
313 t
.Errorf("Erfc(%g) = %g, want %g", vferfcSC
[i
], f
, erfcSC
[i
])
318 func TestAtanNovec(t
*testing
.T
) {
320 t
.Skipf("no vector support")
322 for i
:= 0; i
< len(vf
); i
++ {
323 if f
:= AtanNovec(vf
[i
]); !veryclose(atan
[i
], f
) {
324 t
.Errorf("Atan(%g) = %g, want %g", vf
[i
], f
, atan
[i
])
327 for i
:= 0; i
< len(vfatanSC
); i
++ {
328 if f
:= AtanNovec(vfatanSC
[i
]); !alike(atanSC
[i
], f
) {
329 t
.Errorf("Atan(%g) = %g, want %g", vfatanSC
[i
], f
, atanSC
[i
])
334 func TestAtan2Novec(t
*testing
.T
) {
336 t
.Skipf("no vector support")
338 for i
:= 0; i
< len(vf
); i
++ {
339 if f
:= Atan2Novec(10, vf
[i
]); !veryclose(atan2
[i
], f
) {
340 t
.Errorf("Atan2(10, %g) = %g, want %g", vf
[i
], f
, atan2
[i
])
343 for i
:= 0; i
< len(vfatan2SC
); i
++ {
344 if f
:= Atan2Novec(vfatan2SC
[i
][0], vfatan2SC
[i
][1]); !alike(atan2SC
[i
], f
) {
345 t
.Errorf("Atan2(%g, %g) = %g, want %g", vfatan2SC
[i
][0], vfatan2SC
[i
][1], f
, atan2SC
[i
])
350 func TestCbrtNovec(t
*testing
.T
) {
352 t
.Skipf("no vector support")
354 for i
:= 0; i
< len(vf
); i
++ {
355 if f
:= CbrtNovec(vf
[i
]); !veryclose(cbrt
[i
], f
) {
356 t
.Errorf("Cbrt(%g) = %g, want %g", vf
[i
], f
, cbrt
[i
])
359 for i
:= 0; i
< len(vfcbrtSC
); i
++ {
360 if f
:= CbrtNovec(vfcbrtSC
[i
]); !alike(cbrtSC
[i
], f
) {
361 t
.Errorf("Cbrt(%g) = %g, want %g", vfcbrtSC
[i
], f
, cbrtSC
[i
])
366 func TestLogNovec(t
*testing
.T
) {
368 t
.Skipf("no vector support")
370 for i
:= 0; i
< len(vf
); i
++ {
372 if f
:= LogNovec(a
); log
[i
] != f
{
373 t
.Errorf("Log(%g) = %g, want %g", a
, f
, log
[i
])
376 if f
:= LogNovec(10); f
!= Ln10
{
377 t
.Errorf("Log(%g) = %g, want %g", 10.0, f
, Ln10
)
379 for i
:= 0; i
< len(vflogSC
); i
++ {
380 if f
:= LogNovec(vflogSC
[i
]); !alike(logSC
[i
], f
) {
381 t
.Errorf("Log(%g) = %g, want %g", vflogSC
[i
], f
, logSC
[i
])
386 func TestExpNovec(t
*testing
.T
) {
388 t
.Skipf("no vector support")
390 testExpNovec(t
, Exp
, "Exp")
391 testExpNovec(t
, ExpGo
, "ExpGo")
394 func testExpNovec(t
*testing
.T
, Exp
func(float64) float64, name
string) {
395 for i
:= 0; i
< len(vf
); i
++ {
396 if f
:= ExpNovec(vf
[i
]); !veryclose(exp
[i
], f
) {
397 t
.Errorf("%s(%g) = %g, want %g", name
, vf
[i
], f
, exp
[i
])
400 for i
:= 0; i
< len(vfexpSC
); i
++ {
401 if f
:= ExpNovec(vfexpSC
[i
]); !alike(expSC
[i
], f
) {
402 t
.Errorf("%s(%g) = %g, want %g", name
, vfexpSC
[i
], f
, expSC
[i
])
407 func TestExpm1Novec(t
*testing
.T
) {
409 t
.Skipf("no vector support")
411 for i
:= 0; i
< len(vf
); i
++ {
413 if f
:= Expm1Novec(a
); !veryclose(expm1
[i
], f
) {
414 t
.Errorf("Expm1(%g) = %g, want %g", a
, f
, expm1
[i
])
417 for i
:= 0; i
< len(vf
); i
++ {
419 if f
:= Expm1Novec(a
); !close(expm1Large
[i
], f
) {
420 t
.Errorf("Expm1(%g) = %g, want %g", a
, f
, expm1Large
[i
])
423 for i
:= 0; i
< len(vfexpm1SC
); i
++ {
424 if f
:= Expm1Novec(vfexpm1SC
[i
]); !alike(expm1SC
[i
], f
) {
425 t
.Errorf("Expm1(%g) = %g, want %g", vfexpm1SC
[i
], f
, expm1SC
[i
])
430 func TestPowNovec(t
*testing
.T
) {
432 t
.Skipf("no vector support")
434 for i
:= 0; i
< len(vf
); i
++ {
435 if f
:= PowNovec(10, vf
[i
]); !close(pow
[i
], f
) {
436 t
.Errorf("Pow(10, %g) = %g, want %g", vf
[i
], f
, pow
[i
])
439 for i
:= 0; i
< len(vfpowSC
); i
++ {
440 if f
:= PowNovec(vfpowSC
[i
][0], vfpowSC
[i
][1]); !alike(powSC
[i
], f
) {
441 t
.Errorf("Pow(%g, %g) = %g, want %g", vfpowSC
[i
][0], vfpowSC
[i
][1], f
, powSC
[i
])