code: public static final int getDynamicStoreInitialLevel(int initialCapacity) {
          if (initialCapacity <= DynamicConstants.SUB_ARRAY_SIZE) {
              return 0;
          } else {
              double d = (double)initialCapacity / (double)DynamicConstants.SUB_ARRAY_SIZE;
              int level = (int)Math.ceil(Math.log(d)/Math.log(2));
              return level;
          }
      }
docs: Gets the initial level of {@link krati.store.DynamicDataStore DynamicDataStore}, {@link krati.store.DynamicDataSet DynamicDataSet}
  and {@link krati.store.IndexedDataStore IndexedDataStore} based on the initial store capacity.
  The returned initial <code>level</code> is the minimum integer which satisfies the condition
  <code>initialCapacity</code> less than or equal to <code>2 ^ (16 + level)</code>.
  
  @param initialCapacity - the initial store capacity
  @return an initial level which satisfies the condition
  <code>initialCapacity</code> less than or equal to <code>2 ^ (16 + level)</code>.