When the arguments to an irrational mathematical function
[Reviewer Note by Barmar: There should be a table of these functions.] are all rational and the true mathematical result is also (mathematically) rational, then unless otherwise noted an implementation is free to return either an accurate rational result or a single float approximation. If the arguments are all rational but the result cannot be expressed as a rational number, then a single float approximation is always returned.
If the arguments to a mathematical function are all of type (or rational (complex rational)) and the true mathematical result is (mathematically) a complex number with rational real and imaginary parts, then unless otherwise noted an implementation is free to return either an accurate result of type (or rational (complex rational)) or a single float (permissible only if the imaginary part of the true mathematical result is zero) or (complex single-float). If the arguments are all of type (or rational (complex rational)) but the result cannot be expressed as a rational or complex rational, then the returned value will be of type single-float (permissible only if the imaginary part of the true mathematical result is zero) or (complex single-float).
Function Sample Results abs (abs #c(3 4)) ⇒ 5 or 5.0 acos (acos 1) ⇒ 0 or 0.0 acosh (acosh 1) ⇒ 0 or 0.0 asin (asin 0) ⇒ 0 or 0.0 asinh (asinh 0) ⇒ 0 or 0.0 atan (atan 0) ⇒ 0 or 0.0 atanh (atanh 0) ⇒ 0 or 0.0 cis (cis 0) ⇒ #c(1 0) or #c(1.0 0.0) cos (cos 0) ⇒ 1 or 1.0 cosh (cosh 0) ⇒ 1 or 1.0 exp (exp 0) ⇒ 1 or 1.0 expt (expt 8 1/3) ⇒ 2 or 2.0 log (log 1) ⇒ 0 or 0.0 (log 8 2) ⇒ 3 or 3.0 phase (phase 7) ⇒ 0 or 0.0 signum (signum #c(3 4)) ⇒ #c(3/5 4/5) or #c(0.6 0.8) sin (sin 0) ⇒ 0 or 0.0 sinh (sinh 0) ⇒ 0 or 0.0 sqrt (sqrt 4) ⇒ 2 or 2.0 (sqrt 9/16) ⇒ 3/4 or 0.75 tan (tan 0) ⇒ 0 or 0.0 tanh (tanh 0) ⇒ 0 or 0.0 Figure 12–8: Functions Affected by Rule of Float Substitutability