Initial import
[jpf-core.git] / src / main / gov / nasa / jpf / util / ExpGrowth.java
1 /*
2  * Copyright (C) 2014, United States Government, as represented by the
3  * Administrator of the National Aeronautics and Space Administration.
4  * All rights reserved.
5  *
6  * The Java Pathfinder core (jpf-core) platform is licensed under the
7  * Apache License, Version 2.0 (the "License"); you may not use this file except
8  * in compliance with the License. You may obtain a copy of the License at
9  * 
10  *        http://www.apache.org/licenses/LICENSE-2.0. 
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and 
16  * limitations under the License.
17  */
18 package gov.nasa.jpf.util;
19
20 public class ExpGrowth implements Growth {
21   final float factor;
22   final float sqFactor;
23   final int plus;
24   
25   public ExpGrowth(float factor, int plus) {
26     if (factor < 1.001F || factor > 100.F) {
27       throw new IllegalArgumentException();
28     }
29     this.factor = factor;
30     this.sqFactor = (float) Math.sqrt(factor);
31     this.plus = plus;
32   }
33   
34   public ExpGrowth(float factor) {
35     this(factor,7);
36   }
37   
38   @Override
39   public int grow(int oldSize, int minNewSize) {
40     int newSize = (int)(factor * oldSize) + plus;
41     if (newSize < minNewSize) {
42       newSize = (int)(sqFactor * minNewSize) + plus;
43     }
44     return newSize;
45   }
46 }