github.com/jingcheng-WU/gonum@v0.9.1-0.20210323123734-f1a2a11a8f7b/num/quat/abs_test.go (about) 1 // Copyright ©2018 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 quat 6 7 import ( 8 "math" 9 "testing" 10 ) 11 12 var absTests = []struct { 13 q Number 14 want float64 15 }{ 16 {q: Number{}, want: 0}, 17 {q: NaN(), want: nan}, 18 {q: Inf(), want: inf}, 19 {q: Number{Real: 1, Imag: 1, Jmag: 1, Kmag: 1}, want: 2}, 20 {q: Number{Real: -1, Imag: 1, Jmag: -1, Kmag: 1}, want: 2}, 21 {q: Number{Real: 1, Imag: 2, Jmag: 3, Kmag: 4}, want: math.Sqrt(1 + 4 + 9 + 16)}, 22 {q: Number{Real: -1, Imag: -2, Jmag: -3, Kmag: -4}, want: math.Sqrt(1 + 4 + 9 + 16)}, 23 } 24 25 func TestAbs(t *testing.T) { 26 t.Parallel() 27 for _, test := range absTests { 28 got := Abs(test.q) 29 if math.IsNaN(test.want) { 30 if !math.IsNaN(got) { 31 t.Errorf("unexpected result for Abs(%v): got:%v want:%v", test.q, got, test.want) 32 } 33 continue 34 } 35 if got != test.want { 36 t.Errorf("unexpected result for Abs(%v): got:%v want:%v", test.q, got, test.want) 37 } 38 } 39 }