]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Improved rendering of LogEst values corresponding to real values near 0.0
authordrh <drh@noemail.net>
Wed, 30 Apr 2014 14:22:38 +0000 (14:22 +0000)
committerdrh <drh@noemail.net>
Wed, 30 Apr 2014 14:22:38 +0000 (14:22 +0000)
in the tool/logest.c utility program.

FossilOrigin-Name: 32910c8c595858245bb7ecfe3aa0f90eeae641af

manifest
manifest.uuid
tool/logest.c

index 44e14c49381b67d5baeb959ccbbfbe556836f41a..29bd3a7832d6c86057352ec3b0c2d718c2c2fa66 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\slong-standing\stypos\sin\scomments.
-D 2014-04-30T13:19:09.070
+C Improved\srendering\sof\sLogEst\svalues\scorresponding\sto\sreal\svalues\snear\s0.0\nin\sthe\stool/logest.c\sutility\sprogram.
+D 2014-04-30T14:22:38.579
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in 2ef13430cd359f7b361bb863504e227b25cc7f81
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -1128,7 +1128,7 @@ F tool/genfkey.test 4196a8928b78f51d54ef58e99e99401ab2f0a7e5
 F tool/getlock.c f4c39b651370156cae979501a7b156bdba50e7ce
 F tool/lemon.c 07aba6270d5a5016ba8107b09e431eea4ecdc123
 F tool/lempar.c 01ca97f87610d1dac6d8cd96ab109ab1130e76dc
-F tool/logest.c 388c318c7ac8b52b7c08ca1e2de0f4ca9a8f7e81
+F tool/logest.c eef612f8adf4d0993dafed0416064cf50d5d33c6
 F tool/mkautoconfamal.sh f8d8dbf7d62f409ebed5134998bf5b51d7266383
 F tool/mkkeywordhash.c c9e05e4a7bcab8fab9f583d5b321fb72f565ad97
 F tool/mkopts.tcl 66ac10d240cc6e86abd37dc908d50382f84ff46e
@@ -1166,7 +1166,7 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1
 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh d1a6de74685f360ab718efda6265994b99bbea01
 F tool/win/sqlite.vsix 030f3eeaf2cb811a3692ab9c14d021a75ce41fff
-P e2d42f909de85a0586389f2dc0e654f7af2e351a
-R cdeda4c4d8ae1ea7276fce5a8779e48d
+P b9f91317c34d07769a95dc2f905a6ccabceb64a3
+R 0e5a317f465f102c0002288cd477a07d
 U drh
-Z 6915f97ffb226384426800091a7da39d
+Z 88c640e8cc6f42fa637c9ebb251cd8ac
index 42cd607e10355d88d0527d1a2d57108159b5ecdb..7421cca676c52db837a89528941035fe74313bfd 100644 (file)
@@ -1 +1 @@
-b9f91317c34d07769a95dc2f905a6ccabceb64a3
\ No newline at end of file
+32910c8c595858245bb7ecfe3aa0f90eeae641af
\ No newline at end of file
index 1ac337d36c64de659d1b1d6250c192978dcd6415..347fa68a4f4ee5a4cb72a8748fa7f1a60cbcb022 100644 (file)
@@ -83,7 +83,8 @@ static LogEst logEstFromDouble(double x){
   LogEst e;
   assert( sizeof(x)==8 && sizeof(a)==8 );
   if( x<=0.0 ) return -32768;
-  if( x<1.0 ) return -logEstFromDouble(1/x);
+  if( x<0.01 ) return -logEstFromDouble(1.0/x);
+  if( x<1.0 ) return logEstFromDouble(100.0*x) - 66;
   if( x<1024.0 ) return logEstFromInteger((sqlite3_uint64)(1024.0*x)) - 100;
   if( x<=2000000000.0 ) return logEstFromInteger((sqlite3_uint64)x);
   memcpy(&a, &x, 8);
@@ -156,8 +157,10 @@ int main(int argc, char **argv){
     }
   }
   for(i=n-1; i>=0; i--){
-    if( a[i]<0 ){
+    if( a[i]<-40 ){
       printf("%5d (%f)\n", a[i], 1.0/(double)logEstToInt(-a[i]));
+    }else if( a[i]<10 ){
+      printf("%5d (%f)\n", a[i], logEstToInt(a[i]+100)/1024.0);
     }else{
       sqlite3_uint64 x = logEstToInt(a[i]+100)*100/1024;
       printf("%5d (%lld.%02lld)\n", a[i], x/100, x%100);