jval
Junior Member

Posts: 177
Registered: 09-05 |
Yes, I can reduce the size of tha table but there is an extra check
of the greater byte value.
Maes said:
That is, each combination of two operands, no matter what their order is, results in an unique index, so if you create an uni-dimensional array (again, with the above structure), you can immediately get the average by performing a single addition e.g. average(123,127) = average[123+127], provided the array is organized as above.
This tecnique as far as I can understand gives an average "div 2"
of two byte values. I need a average(123,127, factor) function.
with the factor can take an acceptable range of values (after
some tests the result is good enough if I use 16 or 32 different
factor values.)
e.g
If is used a range of 16 values of factor:
average(1, 64, 0) = 0
average(1, 64, 1) = 4
average(1, 64, 2) = 8
average(1, 64, 3) = 12
average(1, 64, 4) = 16
average(1, 64, 5) = 20
average(1, 64, 6) = 24
average(1, 64, 7) = 28
average(1, 64, 8) = 32
average(1, 64, 9) = 36
average(1, 64, 10) = 40
average(1, 64, 11) = 44
average(1, 64, 12) = 48
average(1, 64, 13) = 52
average(1, 64, 14) = 56
average(1, 64, 15) = 60
average(1, 64, 16) = 64
but
average(32, 33, 0) = 32; != average(1,64, 0)
average(32 + 33, 0) = 32; != average(1 + 64, 0)
average(65, 0) = 32; != average(65, 0)
|