typedef union { double d; float f; long v; long long ll; } castUnion; double llgoToFloat64(long long v) { castUnion k; k.ll = v; return k.d; } float llgoToFloat32(int v) { castUnion k; k.v = v; return k.f; } long long llgoFromFloat64(double v) { castUnion k; k.d = v; return k.ll; } int llgoFromFloat32(float v) { castUnion k; k.f = v; return k.v; }