Ceiling function
This article is licensed under the GNU Free Documentation License. It uses material from the Wikipedia article "Ceiling_function"
.

The floor function
The floor function
The ceiling function
The ceiling function

In mathematics and computer science, the floor and ceiling functions are two mathematical functions which convert arbitrary real numbers to close integers.[1]

The floor function, sometimes called the greatest integer function, of a real number x, denoted variously by x[2] \lfloor x \rfloor, floor(x), or int(x)[3][4], is a function that returns the largest integer less than or equal to x. Formally, for all real numbers x,

 \lfloor x \rfloor=\max\, \{n\in\mathbb{Z}\mid n\le x\}.

For example, floor(2.9) = 2, floor(−2) = −2 and floor(−2.3) = −3. For nonnegative x, a more traditional name for floor(x) is the integral part or integral value of x. The function x -\lfloor x\rfloor, also written as x mod 1, or {x}, is called the fractional part of x. Every fraction x can be written as a mixed number, the sum of an integer and a proper fraction. The floor function and fractional part functions extend this decomposition to all real values.

The closely-related ceiling function, denoted \lceil x \rceil or ceil(x) or ceiling(x), is the function that returns the smallest integer not less than x, or, formally,

 \lceil x \rceil=\min\,\{n\in\mathbb{Z}\mid n\ge x\}.

For example, ceiling(2.3) = 3, ceiling(2) = 2 and ceiling(−2.3) = −2.

The names "floor" and "ceiling" and the corresponding notations were introduced by Kenneth E. Iverson in 1962.[5][6]

content

Contents

Some properties of the floor function

  • One has
 \lfloor x\rfloor \le x < \lfloor x \rfloor + 1
with equality on the left if and only if x is an integer.
  • When x and n are positive integers
 \left\lfloor \frac{n}{x} \right\rfloor \geq \frac{n}{x} - \frac{x-1}{x}
  • The floor function is idempotent: \lfloor\lfloor x\rfloor\rfloor=\lfloor x\rfloor.
  • For any integer k and any real number x,
 \lfloor {k+x} \rfloor = k + \lfloor x\rfloor.
\lfloor x\rfloor = x - \frac{1}{2} + \frac{1}{\pi} \sum_{k=1}^\infty \frac{\sin(2 \pi k x)}{k}.
  • If m and n are coprime positive integers, then
\sum_{i=1}^{n-1} \lfloor im / n \rfloor = (m - 1) (n - 1) / 2
\lfloor \log_{10}(k) \rfloor + 1

Some properties of the ceiling function

  • It is easy to show that:
\lceil x \rceil = - \lfloor - x \rfloor
  • Also:
x \leq \lceil x \rceil < x + 1
  • For any integer k, we have the following equality:
\lfloor k / 2 \rfloor + \lceil k / 2 \rceil = k.

Computer implementations

The operator (int) in C

The (int) function
The (int) function

C and related programming languages have a feature called type casting which allows turning a floating point value into an integer by prefixing it with (int). ANSI C does not define whether to take floor or ceiling[7]

This operation loses significant data, and can therefore magnify rounding errors with disastrous consequences. For instance, (int)(0.6/0.2) will return 2 in most implementations of C, even though 0.6/0.2 = 3. The reason is that computers work internally with the binary numeral system, and it is not possible to represent the numbers 0.6 and 0.2 by a finite binary string. So some rounding errors occur, and the result is computed as 2.999999999999999555910790149937 which the (int) operator may convert to 2.

Many other languages, such as Java (tested with Sun JDK version 1.5.0_05), Perl (as of version 5.8.0), and PHP (tested on version 5.2.1) behave similarly and exhibit rounding errors, as does the POSIX floor() function, every time floating point types are used to store real values.original research?

Because of issues like these, most modern calculators use the decimal numeral system internally, but this only solves a small part of possible problems, and not the fact that (int)((4.0/9.0) * 9.0) will still return 3 instead of 4, even when using decimal floating point representation at any datatype precision (The effective result comes from the truncation of 0.44444...4444 * 9.0 = 3.99999...9996, for which either a binary or decimal internal base has no influence on the precision of the result and the error, even when correct rounding to the nearest representable number is used throughout the calculation).

A workaround is to define an epsilon constant e (e.g. e = 0.00000001), and define floor(x) = (int)(x + e), and ceiling(x) = (int)(x + e) + 1, for x >= 0,

A more elegant solution is to use better numeric datatypes to allow representing rational values exactly, or to avoid aggravating rounding errors which will only appear when non polynomial functions are used in the calculation. For example, a pair can be used for storing a floating point numerator and a positive integer divisor (a solution used in the Calculator accessory in Windows): all intermediate calculation and storage use this datatype, and the decimal floating point value is computed only for the final display of the calculator, with correct rounding up to the displayed precision.

Spreadsheet software

Most spreadsheet programs support some form of a ceiling function. Although the details differ between programs, most implementations support a second parameter—a multiple of which the given number is to be rounded to. As a typical example, ceiling(2, 3) would round 2 up to the nearest multiple of 3, so this would return 3. The definition of what "round up" means, however, differs from program to program.

Microsoft Excel's ceiling function does not follow the mathematical definition, but rather as with (int) operator in C, it is a mixture of the floor and ceiling function: for x ≥ 0 it returns ceiling(x), and for x < 0 it returns floor(x). This has followed through to the Office Open XML file format. For example, CEILING(-4.5) returns -5. A mathematical ceiling function can be emulated in Excel by using the formula "-INT(-value)" (please note that this is not a general rule, as it depends on Excel's INT function, which behaves differently that most programming languages).

The OpenDocument file format, as used by OpenOffice.org and others, follows the mathematical definition of ceiling for its ceiling function, with an optional parameter for Excel compatibility. For example, CEILING(-4.5) returns -4.

Typesetting

The floor and ceiling function are usually typeset with left and right square brackets where the upper (for floor function) or lower (for ceiling function) horizontal bars are missing, and, e.g., in the LaTeX typesetting system these symbols can be specified with the \lfloor, \rfloor, \lceil and \rceil commands in math mode. Unicode contains codepoints for these symbols, at U+2308U+230B: ⌈x⌉, ⌊x⌋.

See also

Notes

  1. ^ Ronald Graham, Donald Knuth and Oren Patashnik. "Concrete Mathematics". Addison-Wesley, 1999. Chapter 3, "Integer Functions".
  2. ^ ,J.W.S. Cassels (1957). An introduction to Diophantine approximation, Cambridge Tracts in Mathematics and Mathematical Physics 45. Cambridge University Press, 1. 
  3. ^ Michael Sullivan. Precalculus, 8th edition, p. 86
  4. ^ Floor Function — from Wolfram MathWorld
  5. ^ Nicholas J. Higham, Handbook of writing for the mathematical sciences, SIAM. ISBN 0898714206, p. 25
  6. ^ Kenneth E. Iverson. "A Programming Language". Wiley, 1962.
  7. ^ Brian Kernighan, Dennis Ritchie. The C Programming Language (2nd ed), Prentice Hall 1988; ISBN 0-13-110362-8. Pp.45,197.
© jGames.co.uk 2007 (some content from Wikipedia under GDL ) !-- ValueClick Media 468x60 and 728x90 Banner CODE for jgames.co.uk -->
Your Ad Here