1 // Copyright 2010 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.
4 5 package cmplx
6 7 import "math"
8 9 // IsNaN reports whether either real(x) or imag(x) is NaN
10 // and neither is an infinity.
11 func IsNaN(x complex128) bool {
12 switch {
13 case math.IsInf(real(x), 0) || math.IsInf(imag(x), 0):
14 return false
15 case math.IsNaN(real(x)) || math.IsNaN(imag(x)):
16 return true
17 }
18 return false
19 }
20 21 // NaN returns a complex “not-a-number” value.
22 func NaN() complex128 {
23 nan := math.NaN()
24 return complex(nan, nan)
25 }
26