1
0
mirror of https://github.com/golang/go synced 2024-11-23 02:10:03 -07:00

cmp, builtin: document NaN behavior

Add notes for cmp.Ordered and builtin.{min,max}.

Fixes #60648

Change-Id: I81806af2d9a0613befde3f2bbfbc2720f0726912
Reviewed-on: https://go-review.googlesource.com/c/go/+/502235
Auto-Submit: Ian Lance Taylor <iant@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Run-TryBot: Ian Lance Taylor <iant@google.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Reviewed-by: Cuong Manh Le <cuong.manhle.vn@gmail.com>
Run-TryBot: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
Ian Lance Taylor 2023-06-09 19:59:37 -07:00 committed by Gopher Robot
parent fd353a1280
commit 1fd3cc7cd0
2 changed files with 9 additions and 0 deletions

View File

@ -210,10 +210,14 @@ func make(t Type, size ...IntegerType) Type
// The max built-in function returns the largest value of a fixed number of // The max built-in function returns the largest value of a fixed number of
// arguments of [cmp.Ordered] types. There must be at least one argument. // arguments of [cmp.Ordered] types. There must be at least one argument.
// If T is a floating-point type and any of the arguments are NaNs,
// max will return NaN.
func max[T cmp.Ordered](x T, y ...T) T func max[T cmp.Ordered](x T, y ...T) T
// The min built-in function returns the smallest value of a fixed number of // The min built-in function returns the smallest value of a fixed number of
// arguments of [cmp.Ordered] types. There must be at least one argument. // arguments of [cmp.Ordered] types. There must be at least one argument.
// If T is a floating-point type and any of the arguments are NaNs,
// min will return NaN.
func min[T cmp.Ordered](x T, y ...T) T func min[T cmp.Ordered](x T, y ...T) T
// The new built-in function allocates memory. The first argument is a type, // The new built-in function allocates memory. The first argument is a type,

View File

@ -10,6 +10,11 @@ package cmp
// that supports the operators < <= >= >. // that supports the operators < <= >= >.
// If future releases of Go add new ordered types, // If future releases of Go add new ordered types,
// this constraint will be modified to include them. // this constraint will be modified to include them.
//
// Note that floating-point types may contain NaN ("not-a-number") values.
// An operator such as == or < will always report false when
// comparing a NaN value with any other value, NaN or not.
// See the [Compare] function for a consistent way to compare NaN values.
type Ordered interface { type Ordered interface {
~int | ~int8 | ~int16 | ~int32 | ~int64 | ~int | ~int8 | ~int16 | ~int32 | ~int64 |
~uint | ~uint8 | ~uint16 | ~uint32 | ~uint64 | ~uintptr | ~uint | ~uint8 | ~uint16 | ~uint32 | ~uint64 | ~uintptr |