gonum.org/v1/gonum@v0.14.0/lapack/testlapack/dlapy2.go (about)

     1  // Copyright ©2016 The Gonum 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.
     4  
     5  package testlapack
     6  
     7  import (
     8  	"math"
     9  	"testing"
    10  
    11  	"golang.org/x/exp/rand"
    12  
    13  	"gonum.org/v1/gonum/floats/scalar"
    14  )
    15  
    16  type Dlapy2er interface {
    17  	Dlapy2(float64, float64) float64
    18  }
    19  
    20  func Dlapy2Test(t *testing.T, impl Dlapy2er) {
    21  	rnd := rand.New(rand.NewSource(1))
    22  	for i := 0; i < 10; i++ {
    23  		x := math.Abs(1e200 * rnd.NormFloat64())
    24  		y := math.Abs(1e200 * rnd.NormFloat64())
    25  		got := impl.Dlapy2(x, y)
    26  		want := math.Hypot(x, y)
    27  		if !scalar.EqualWithinRel(got, want, 1e-15) {
    28  			t.Errorf("Dlapy2(%g, %g) = %g, want %g", x, y, got, want)
    29  		}
    30  	}
    31  }