etc/octaspire_easing_amalgamated.c
double octaspire_easing_in_out_expo(double t, double const b, double const c, double const d)
{
    if (t==0) return b;
    if (t==d) return b+c;

    t /= (d * 0.5);

    if (t < 1) return c/2 * pow(2, 10 * (t - 1)) + b;

    --t;

    return c/2 * (-pow(2, -10 * t) + 2) + b;
}
// exponential easing in/out - accelerating until halfway, then decelerating
exponential easing in/out - accelerating until halfway, then decelerating
exponential easing in / out - accelerating until halfway then decelerating
double octaspire_easing_in_out_expo(double t, double const b, double const c, double const d)
{
    if (t==0) return b;
    if (t==d) return b+c;
    t /= (d * 0.5);
    if (t < 1) return c/2 * pow(2, 10 * (t - 1)) + b;
    --t;
    return c/2 * (-pow(2, -10 * t) + 2) + b;
}
double octaspire_easing_in_out_expo ( double t , double const b , double const c , double const d ) { if ( t == 0 ) return b ; if ( t == d ) return b + c ; t /= ( d * 0.5 ) ; if ( t < 1 ) return c / 2 * pow ( 2 , 10 * ( t - 1 ) ) + b ; -- t ; return c / 2 * ( - pow ( 2 , -10 * t ) + 2 ) + b ; }
exponential easing in/out - accelerating until halfway, then decelerating
exponential easing in / out - accelerating until halfway then decelerating