new ideas
another possible tweak
add forgotten declaration
add .ref
add .set!
document bounds
add |bins:search*| for jumping in the middle of the search
add |u32vector-inc!|
add .map
morebinning.scm (implement algorithm with big level1 cache)

e.g.

$ head -1 output; egrep '(^10| time)' output
> (timings (C morebins* _ _ 20))
1000
    4 ms real time
    4 ms cpu time (4 user, 0 system)
    44 ms real time
    44 ms cpu time (44 user, 0 system)
10000
    4 ms real time
    4 ms cpu time (0 user, 4 system)
    40 ms real time
    40 ms cpu time (40 user, 0 system)
100000
    5 ms real time
    4 ms cpu time (4 user, 0 system)
    48 ms real time
    48 ms cpu time (48 user, 0 system)
1000000
    8 ms real time
    8 ms cpu time (8 user, 0 system)
    156 ms real time
    156 ms cpu time (156 user, 0 system)
10000000
    33 ms real time
    32 ms cpu time (32 user, 0 system)
    305 ms real time
    308 ms cpu time (308 user, 0 system)

Disappointingly slow (only about a factor of 2), although the size of
the level1 cache (20 bits) won't fit well for most of these tests.
add unsafe switch to make tests run faster

e.g.

$ head -1 df; gr '(^10| time)' df
> (timings (C morebins* _ _ 24))
1000
    4 ms real time
    4 ms cpu time (4 user, 0 system)
    118 ms real time
    116 ms cpu time (116 user, 0 system)
10000
    4 ms real time
    4 ms cpu time (4 user, 0 system)
    121 ms real time
    120 ms cpu time (120 user, 0 system)
100000
    5 ms real time
    8 ms cpu time (8 user, 0 system)
    127 ms real time
    128 ms cpu time (128 user, 0 system)
1000000
    7 ms real time
    8 ms cpu time (8 user, 0 system)
    170 ms real time
    172 ms cpu time (172 user, 0 system)
10000000
    33 ms real time
    32 ms cpu time (32 user, 0 system)
    287 ms real time
    288 ms cpu time (288 user, 0 system)

The bigger level1 cache (24 bits here) is a better match for the last
few tests. Still somewhat disappointing.
add parallel-morebins*

> (def (tmore n b) (parallel-morebins* (gen-binnums 1000000) (gen-buckets n 0. 1.) b))
> (for-each (lambda (b) (println b) (tmore 10000 b)) '(0 2 4 6 8 10 12 14 16 18 20))
0
    73 ms real time
    144 ms cpu time (144 user, 0 system)
2
    69 ms real time
    132 ms cpu time (132 user, 0 system)
4
    60 ms real time
    116 ms cpu time (116 user, 0 system)
6
    52 ms real time
    100 ms cpu time (100 user, 0 system)
8
    44 ms real time
    84 ms cpu time (84 user, 0 system)
10
    36 ms real time
    72 ms cpu time (72 user, 0 system)
12
    30 ms real time
    60 ms cpu time (60 user, 0 system)
14
    27 ms real time
    52 ms cpu time (52 user, 0 system)
16
    24 ms real time
    48 ms cpu time (48 user, 0 system)
18
    24 ms real time
    48 ms cpu time (48 user, 0 system)
20
    27 ms real time
    56 ms cpu time (56 user, 0 system)
add a test for parallel-morebins*
update README
done