Previous: , Up: Rational Computations  


12.1.3.3 Rule of Float Substitutability

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


Previous: , Up: Rational Computations