Computer Chess Club Archives


Search

Terms

Messages

Subject: fast normalization

Author: Charles Roberson

Date: 06:04:41 10/31/03



   I have a list of numbers that I wanted to normalize to the range of 0-100.
   The numbers are integers so the obvious thought is
      find largest
      foreach number
         number = number*100/largest

    However, division is slow. So, I dropped the range to 0-64 and
     came up with the following:
         find largest
         n = 7;
         if largest > 64
            n = highorder bit position (largest) + 1;
         foreach number
             number = number>>n

     In some cases the range will be 0-32 but that is ok.
     Seems this should be fast and I haven't thought of anything faster.



This page took 0.01 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.