///| Exponential easing functions

///|
/// Exponential ease-in function
/// Sharp acceleration using exponential curve
pub fn exp_in(t : Double) -> Double {
  tpmt(1.0 - t)
}

///|
/// Exponential ease-out function
/// Sharp deceleration using exponential curve
pub fn exp_out(t : Double) -> Double {
  1.0 - tpmt(t)
}

///|
/// Exponential ease-in-out function
/// Sharp acceleration and deceleration
pub fn exp_in_out(t : Double) -> Double {
  let t2 = t * 2.0
  if t2 <= 1.0 {
    tpmt(1.0 - t2) / 2.0
  } else {
    (2.0 - tpmt(t2 - 1.0)) / 2.0
  }
}