Skip to main content

nil_num/
growth.rs

1// Copyright (C) Call of Nil contributors
2// SPDX-License-Identifier: AGPL-3.0-only
3
4use bon::builder;
5
6const MIN_LEVEL: f64 = 1.0;
7
8#[builder]
9pub fn growth(
10  #[builder(into)] floor: f64,
11  #[builder(into)] ceil: f64,
12  #[builder(into)] max_level: f64,
13) -> f64 {
14  debug_assert!(floor > 0.0);
15  debug_assert!(ceil > floor);
16  debug_assert!(max_level > MIN_LEVEL);
17  ((ceil / floor).powf(1.0 / (max_level - MIN_LEVEL))) - 1.0
18}