let
log2 x
=
(
log
x
)
/.
(
log
2.0
)
;;
let
ceil
y
=
let
rec
iceil x y
=
if
y
<=
0.0
then
x
else
iceil
(
x
+
1
)
(
y
-.
1.0
)
in
iceil
0
y
;;
let
pow y
=
let
rec
ipow x y
=
match
y
with
0
->
x
|
y
->
ipow
(
x
*
2
)
(
y
-
1
)
in
ipow
1
y
;;
let
biject x y
=
let
width
=
ceil
(
log2
(
float_of_int
x
)
)
in
let
raised
=
pow y
in
raised
+
x
;;