diff --git a/pkgs/racket-doc/scribblings/reference/booleans.scrbl b/pkgs/racket-doc/scribblings/reference/booleans.scrbl index a73fa59e36..f668587ba8 100644 --- a/pkgs/racket-doc/scribblings/reference/booleans.scrbl +++ b/pkgs/racket-doc/scribblings/reference/booleans.scrbl @@ -66,8 +66,14 @@ values would be equal. See also @racket[gen:equal+hash] and @racket[prop:imperso Two values are @racket[eqv?] if and only if they are @racket[eq?], unless otherwise specified for a particular datatype. -The @tech{number} and @tech{character} datatypes are the only ones for which -@racket[eqv?] differs from @racket[eq?]. +The @tech{number} and @tech{character} datatypes are the only ones for +which @racket[eqv?] differs from @racket[eq?]. Two numbers are +@racket[eqv?] when they have the same exactness, precision, and are +both equal and non-zero, both @racket[+0.0], both @racket[+0.0f0], both +@racket[-0.0], both @racket[-0.0f0], both @racket[+nan.0], or both +@racket[+nan.f]---considering real and imaginary components separately +in the case of @tech{complex numbers}. Two characters are +@racket[eqv?] when their @racket[char->integer] results are equal. @examples[ (eqv? 'yes 'yes) diff --git a/pkgs/racket-doc/scribblings/reference/numbers.scrbl b/pkgs/racket-doc/scribblings/reference/numbers.scrbl index b17ebcfc7f..8496654fb3 100644 --- a/pkgs/racket-doc/scribblings/reference/numbers.scrbl +++ b/pkgs/racket-doc/scribblings/reference/numbers.scrbl @@ -30,14 +30,14 @@ Orthogonal to those categories, each number is also either an otherwise specified, computations that involve an inexact number produce inexact results. Certain operations on inexact numbers, however, produce an exact number, such as multiplying an inexact -number with an exact @racket[0]. Some operations, which can produce an -irrational number for rational arguments (e.g., @racket[sqrt]), may +number with an exact @racket[0]. Operations that mathematically produce +irrational numbers for some rational arguments (e.g., @racket[sqrt]) may produce inexact results even for exact arguments. In the case of complex numbers, either the real and imaginary parts -are both exact or inexact, or the number has an exact zero real part -and an inexact imaginary part; a complex number with an exact zero -imaginary part is a real number. +are both exact or inexact with the same precision, or the number has +an exact zero real part and an inexact imaginary part; a complex +number with an exact zero imaginary part is a real number. Inexact real numbers are implemented as either single- or double-precision @as-index{IEEE floating-point numbers}---the latter @@ -46,11 +46,6 @@ numerical constants specified as single-precision numbers. Inexact real numbers that are represented as double-precision floating-point numbers are @deftech{flonums}. -The precision and size of exact numbers is limited only by available -memory (and the precision of operations that can produce irrational -numbers). In particular, adding, multiplying, subtracting, and -dividing exact numbers always produces an exact result. - Inexact numbers can be coerced to exact form, except for the inexact numbers @racket[+inf.0], @racket[+inf.f], @racket[-inf.0], @racket[-inf.f], @racket[+nan.0], and @racket[+nan.f], which @@ -73,6 +68,11 @@ cases where IEEE provides no specification, the result corresponds to the limit approaching infinity, or @racket[+nan.0] or @racket[+nan.f] if no such limit exists. +The precision and size of exact numbers is limited only by available +memory (and the precision of operations that can produce irrational +numbers). In particular, adding, multiplying, subtracting, and +dividing exact numbers always produces an exact result. + A @deftech{fixnum} is an exact integer whose two's complement representation fit into 31 bits on a 32-bit platform or 63 bits on a 64-bit platform; furthermore, no allocation is required when computing @@ -84,10 +84,11 @@ applied to two numbers is undefined, except that numbers produced by the default reader in @racket[read-syntax] mode are @tech{interned} and therefore @racket[eq?] when they are @racket[eqv?]. -Two numbers are @racket[eqv?] when they are both inexact with the same precision or both +Two real numbers are @racket[eqv?] when they are both inexact with the same precision or both exact, and when they are @racket[=] (except for @racket[+nan.0], @racket[+nan.f], -@racket[+0.0], @racket[+0.0f0], @racket[-0.0], and @racket[-0.0f0], as noted above). Two numbers are -@racket[equal?] when they are @racket[eqv?]. +@racket[+0.0], @racket[+0.0f0], @racket[-0.0], and @racket[-0.0f0], as noted above). +Two complex numbers are @racket[eqv?] when their real and imaginary parts are @racket[eqv?]. +Two numbers are @racket[equal?] when they are @racket[eqv?]. @see-read-print["number"]{numbers}