package funkin.util.tools; /** * @see https://github.com/fponticelli/thx.core/blob/master/src/thx/Int64s.hx */ class Int64Tools { static var min = haxe.Int64.make(0x80000000, 0); static var one = haxe.Int64.make(0, 1); static var two = haxe.Int64.ofInt(2); static var zero = haxe.Int64.make(0, 0); static var ten = haxe.Int64.ofInt(10); public static function toFloat(i:haxe.Int64):Float { var isNegative = false; if (i < 0) { if (i < min) return -9223372036854775808.0; // most -ve value can't be made +ve isNegative = true; i = -i; } var multiplier = 1.0, ret = 0.0; for (_ in 0...64) { if (haxe.Int64.and(i, one) != zero) ret += multiplier; multiplier *= 2.0; i = haxe.Int64.shr(i, 1); } return (isNegative ? -1 : 1) * ret; } }