From: drh Date: Wed, 30 Apr 2014 14:22:38 +0000 (+0000) Subject: Improved rendering of LogEst values corresponding to real values near 0.0 X-Git-Tag: version-3.8.5~65^2~3 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=253666e5203974b28d990e321b243153f3a432dd;p=thirdparty%2Fsqlite.git Improved rendering of LogEst values corresponding to real values near 0.0 in the tool/logest.c utility program. FossilOrigin-Name: 32910c8c595858245bb7ecfe3aa0f90eeae641af --- diff --git a/manifest b/manifest index 44e14c4938..29bd3a7832 100644 --- 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 diff --git a/manifest.uuid b/manifest.uuid index 42cd607e10..7421cca676 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -b9f91317c34d07769a95dc2f905a6ccabceb64a3 \ No newline at end of file +32910c8c595858245bb7ecfe3aa0f90eeae641af \ No newline at end of file diff --git a/tool/logest.c b/tool/logest.c index 1ac337d36c..347fa68a4f 100644 --- a/tool/logest.c +++ b/tool/logest.c @@ -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);