5.3.3

### 1Constants and Elementary Functions

 (require math/base)

For convenience, math/base re-exports racket/math as well as providing the values document below.

In general, the functions provided by math/base are elementary functions, or those functions that can be defined in terms of a finite number of arithmetic operations, logarithms, exponentials, trigonometric functions, and constants. For others, see math/special-functions and math/distributions.

#### 1.1Constants

If you need more accurate approximations than the following flonums, see, for example, phi.bf and bigfloat->rational.

 value
An approximation of φ, the golden ratio.
 > phi.0 1.618033988749895

 value
An approximation of e, or Euler’s number.
 > euler.0 2.718281828459045 > (exp 1) 2.718281828459045

 value
An approximation of γ, the Euler-Mascheroni constant.
 > gamma.0 0.5772156649015329

 value
An approximation of G, or Catalan’s constant.
 > catalan.0 0.915965594177219

#### 1.2Functions

 procedure v : Any
Returns #t when v is of type Float-Complex. Analogous to flonum?.

 procedure x : Number
Returns a new complex number with a flonum real part and a flonum imaginary part. Analogous to real->double-flonum.

 procedure x : Real
Returns #t when x is an integer power of 2.

Examples:

 > (power-of-two? 1.0) #t > (power-of-two? 1/2) #t > (power-of-two? (flnext 2.0)) #f

 procedure(asinh z) → Number z : Number
 procedure(acosh z) → Number z : Number
 procedure(atanh z) → Number z : Number
The inverses of sinh, cosh, and tanh, which are defined in racket/math (and re-exported by math/base).

 procedure(sum xs) → Real xs : (Listof Real)
Like (apply + xs), but incurs rounding error only once when adding inexact numbers. (In fact, the inexact numbers in xs are summed separately using flsum.)

#### 1.3Random Number Generation

 procedure k : Integer
Returns a random natural number less than k, which must be positive. Use (random-natural k) instead of (random k) when k could be larger than 4294967087.

 procedure a : Integer b : Integer
Returns a random integer n such that (<= a n) and (< n b).

 procedure(random-bits num) → Natural num : Integer
Returns a random natural smaller than (expt 2 num); num must be positive. For powers of two, this is faster than using random-natural, which is implemented in terms of random-bits, using biased rejection sampling.

As an example of use, the significands of the numbers returned by bfrandom are chosen by (random-bits (bf-precision)).

#### 1.4Measuring Error

 procedure(absolute-error x r) → Real x : Real r : Real
Usually computes (abs (- x r)) using exact rationals, but handles non-rational reals such as +inf.0 specially.

Examples:

 > (absolute-error 1/2 1/2) 0 > (absolute-error 0.14285714285714285 1/7) 7.93016446160826e-18 > (absolute-error +inf.0 +inf.0) 0.0 > (absolute-error +inf.0 +nan.0) +inf.0 > (absolute-error 1e-20 0.0) 1e-20 > (absolute-error (- 1.0 (fl 4999999/5000000)) 1/5000000) 5.751132903242251e-18

 procedure(relative-error x r) → Real x : Real r : Real
Measures how close an approximation x is to the correct value r, relative to the magnitude of r.

This function usually computes (abs (/ (- x r) r)) using exact rationals, but handles non-rational reals such as +inf.0 specially, as well as r = 0.

Examples:

 > (relative-error 1/2 1/2) 0 > (relative-error 0.14285714285714285 1/7) 5.551115123125783e-17 > (relative-error +inf.0 +inf.0) 0.0 > (relative-error +inf.0 +nan.0) +inf.0 > (relative-error 1e-20 0.0) +inf.0 > (relative-error (- 1.0 (fl 4999999/5000000)) 1/5000000) 2.8755664516211255e-11
In the last two examples, relative error is high because the result is near zero. (Compare the same examples with absolute-error.) Because flonums are particularly dense near zero, this makes relative error better than absolute error for measuring the error in a flonum approximation. An even better one is error in ulps; see flulp-error.