static double EaseInOutExpo(double from, double to, double elapsed, double duration)
var elapsedMilliseconds = elapsed;
if ((elapsedMilliseconds /= duration / 2) < 1)
return change / 2 * Math.Pow(2, 10 * (elapsedMilliseconds - 1)) + from;
else if (elapsed < duration)
return change / 2 * (-Math.Pow(2, -10 * --elapsedMilliseconds) + 2) + from;
public static void Main()
Console.WriteLine("Hello World");
var iterations = 1000000000.0;
for(var i = 0; i < iterations + 1; i++) {
Console.WriteLine(i + ": " + EaseInOutExpo(0.0, 1.0, i / iterations, 1.0));