isnan.mx raw

   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