From e8f80ec78d7c8436cb03aade287f3c9129c4d209 Mon Sep 17 00:00:00 2001 From: Vladimir Chalupecky Date: Mon, 21 Nov 2016 06:25:38 +0100 Subject: [PATCH] testlapack: add test for Dlapy2 Closes 210 --- cgo/lapack_test.go | 4 ++++ native/lapack_test.go | 4 ++++ testlapack/dlapy2.go | 30 ++++++++++++++++++++++++++++++ 3 files changed, 38 insertions(+) create mode 100644 testlapack/dlapy2.go diff --git a/cgo/lapack_test.go b/cgo/lapack_test.go index 975ef01d..1f8aebdb 100644 --- a/cgo/lapack_test.go +++ b/cgo/lapack_test.go @@ -76,6 +76,10 @@ func TestDlantr(t *testing.T) { testlapack.DlantrTest(t, impl) } +func TestDlapy2(t *testing.T) { + testlapack.Dlapy2Test(t, impl) +} + func TestDlarfx(t *testing.T) { testlapack.DlarfxTest(t, impl) } diff --git a/native/lapack_test.go b/native/lapack_test.go index 03d9253a..05da42ac 100644 --- a/native/lapack_test.go +++ b/native/lapack_test.go @@ -136,6 +136,10 @@ func TestDlange(t *testing.T) { testlapack.DlangeTest(t, impl) } +func TestDlapy2(t *testing.T) { + testlapack.Dlapy2Test(t, impl) +} + func TestDlas2(t *testing.T) { testlapack.Dlas2Test(t, impl) } diff --git a/testlapack/dlapy2.go b/testlapack/dlapy2.go new file mode 100644 index 00000000..5e2cda5f --- /dev/null +++ b/testlapack/dlapy2.go @@ -0,0 +1,30 @@ +// Copyright ©2016 The gonum Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package testlapack + +import ( + "math" + "math/rand" + "testing" + + "github.com/gonum/floats" +) + +type Dlapy2er interface { + Dlapy2(float64, float64) float64 +} + +func Dlapy2Test(t *testing.T, impl Dlapy2er) { + rnd := rand.New(rand.NewSource(1)) + for i := 0; i < 10; i++ { + x := math.Abs(1e200 * rnd.NormFloat64()) + y := math.Abs(1e200 * rnd.NormFloat64()) + got := impl.Dlapy2(x, y) + want := math.Hypot(x, y) + if !floats.EqualWithinRel(got, want, 1e-16) { + t.Errorf("Dlapy2(%g, %g) = %g, want %g", x, y, got, want) + } + } +}