return rc;
}
+/*
+** Rounding constants for float->double conversion.
+*/
+#define RNDTOWARDS (1.0 - 1.0/8388608.0) /* Round towards zero */
+#define RNDAWAY (1.0 + 1.0/8388608.0) /* Round away from zero */
+
#if !defined(SQLITE_RTREE_INT_ONLY)
/*
** Convert an sqlite3_value into an RtreeValue (presumably a float)
double d = sqlite3_value_double(v);
float f = (float)d;
if( f>d ){
- if( f<0.0 ){
- f += f/8388608.0;
- }else{
- f -= f/8388608.0;
- }
+ f = (float)(d*(d<0 ? RNDAWAY : RNDTOWARDS));
}
return f;
}
double d = sqlite3_value_double(v);
float f = (float)d;
if( f<d ){
- if( f<0.0 ){
- f -= f/8388608.0;
- }else{
- f += f/8388608.0;
- }
+ f = (float)(d*(d<0 ? RNDTOWARDS : RNDAWAY));
}
return f;
}
-C Simplification\sto\sthe\scoordinate\srounding\slogic\sin\sRTree.
-D 2012-05-28T20:16:42.392
+C Refactor\sthe\sfloat-to-double\srounding\sroutines\sso\sthat\sthey\scompile\swithout\nwarnings.
+D 2012-05-29T00:30:43.635
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
F Makefile.in 4f37eb61be9d38643cdd839a74b8e3bad724cfcf
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
F ext/icu/icu.c eb9ae1d79046bd7871aa97ee6da51eb770134b5a
F ext/icu/sqliteicu.h 728867a802baa5a96de7495e9689a8e01715ef37
F ext/rtree/README 6315c0d73ebf0ec40dedb5aa0e942bc8b54e3761
-F ext/rtree/rtree.c 529aad2011bdeae0e310590b523fe0a07f934906
+F ext/rtree/rtree.c d17aecb7a92762efa7b1f5d5fd7c88fd77d70827
F ext/rtree/rtree.h 834dbcb82dc85b2481cde6a07cdadfddc99e9b9e
F ext/rtree/rtree1.test e474a2b5eff231496dbd073fe67e5fbaf7f444c9
F ext/rtree/rtree2.test acbb3a4ce0f4fbc2c304d2b4b784cfa161856bba
F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
F tool/warnings-clang.sh a8a0a3babda96dfb1ff51adda3cbbf3dfb7266c2
F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381
-P f4e8ff03eae70334632455a867859cfcc25682be
-R bc6bf69f14471e3fbe5247d9db42468b
+P df24072de27555c6b530b02e821ea8b066c554fc
+R f35d5b4a9dd7d1169a15c017bcaeb391
U drh
-Z a79ca44958f115bb818431edcabdbadb
+Z 5259b4674eededa40e2ec42b982389dc