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