FLOOR, CEILING, MOD

If X is any real number, we write X or FLOOR(X)= the greatest integer less than or equal to X; X or CEILING(X)= the least integer greater than or equal to X.

 FLOOR: procedure parse arg F return TRUNC(F) - (F < 0) * (F <> TRUNC(F))   CEILING: procedure parse arg C return TRUNC(C) + (C > 0) * (C <> TRUNC(C))

EXAMPLE
The program

 say FLOOR(4) CEILING(4) say FLOOR(-4.1) CEILING(-4) say FLOOR(4.1) CEILING(4.1) say FLOOR(4.9) CEILING(4.9) exit

displays on the screen

4 4
-5 -4
4 5
4 5

If X and Y are any real numbers, we define the following operation:

MOD(X,Y)=X-Y*FLOOR(X/Y) if Y<> 0;
MOD(X,0)=X

 MOD: procedure parse arg X, Y if Y = 0 then return X return X - Y * FLOOR(X/Y)

There are the results of Knuth's excercises 8, 9, 10 in the chapter 1.2.4:
say MOD(100,3) MOD(100,7) MOD(-100,7) MOD(-100,0)

displays 1 2 5 -100

say MOD(5,-3) MOD(18,-3) MOD(-2,-3)

displays -1 0 -2

say MOD(1.1,1) MOD(0.11,0.1) MOD(0.11,-0.1)

displays 0.1 0.01 -0.09

NOTES
• FLOOR(X)==TRUNC(X), if X>=0
• In the BINARY_SEARCH algorithm we use the expression (L+R)%2 instead of FLOOR((L+R)/2)
• The time complexity of the MINIMAX algorithm is CEILING(3*N/2)-2 comparisons, it is equal FORMAT(3*N/2-2,,0) for N>=2. The expression FORMAT(N,,0) rounds N to the nearest integer
• For real numbers X>=0, Y>0 is X//Y=MOD(X,Y), see Euclid's GCD (and LCM) algorithms

CO-AUTHOR
Gerard Schildberger - the CEILING and FLOOR function

Literature
Knuth D. E., Fundamental Algorithms, vol. 1 of The Art of Computer Programming