All pastes #464408 Raw Edit

Something

public cpp v1 · immutable
#464408 ·published 2007-04-29 14:09 UTC
rendered paste body
#include <stdio.h>#include <math.h>/*	g++ -O2           -DN=1973321288 trunc.cpp => diff = 1 <- why?	g++ -O2 -DFIXED_A -DN=1973321288 trunc.cpp => diff = 0	g++ -O2 -DFIXED_B -DN=1973321288 trunc.cpp => diff = 0	g++ -O2           -DN=321782473  trunc.cpp => diff = 0	g++ -O2 -DFIXED_A -DN=321782473  trunc.cpp => diff = 0	g++ -O2 -DFIXED_B -DN=321782473  trunc.cpp => diff = 0*/int toInt32(double sample) {	double tmp = sample * (sample > 0 ? 2147483647.0 : 2147483648.0);#ifdef FIXED_A	printf("%.30g\n", tmp);#endif#ifdef FIXED_B	return (int)floor(tmp);#else	return (int)tmp;#endif}double fromInt32(int sample) { 	return (double)sample / (sample > 0 ? 2147483647.0 : 2147483648.0);}int main() {	int r = N;		double f = fromInt32(r); 	int c = toInt32(f);		printf("%d -> %.30g -> %d, diff %d\n", r, f, c, r - c);}