bd333d3c5d719d36f58a69728b3131a7aefb12eb max Mon Oct 7 10:34:32 2013 -0700 rm #11884: change to calc, the most important tool of all diff --git src/utils/calc/calc.c src/utils/calc/calc.c index 7cf0a31..3df97d3 100644 --- src/utils/calc/calc.c +++ src/utils/calc/calc.c @@ -4,31 +4,31 @@ #include "hash.h" #include "cheapcgi.h" #include "dystring.h" #include "options.h" bool humanReadable = FALSE; void usage() /* Explain usage and exit. */ { errAbort( "calc - Little command line calculator\n" "usage:\n" " calc this + that * theOther / (a + b)\n" "Options:\n" - " -h - output as human-readable numbers, with m=millions, g=billions, etc\n" + " -h - output as human-readable numbers, with k=kilos, m=millions, g=billions, etc\n" ); } static struct optionSpec options[] = { {"h", OPTION_BOOLEAN}, {NULL, 0}, }; void calc(int wordCount, char *words[]) /* calc - Little command line calculator. */ { struct dyString *dy = newDyString(128); int i; for (i=0; i<wordCount; ++i) @@ -37,44 +37,49 @@ dyStringAppend(dy, " "); dyStringAppend(dy, words[i]); } double result = doubleExp(dy->string); if (!humanReadable) { printf("%s = %f\n", dy->string, result); return; } // make human readable char* resQual = ""; int intRes = 0; -if (result>1E12) +if (result>=1E12) { intRes = round(result/1E12); resQual = "t"; } -else if (result>1E9) +else if (result>=1E9) { intRes = round(result/1E9); resQual = "g"; } -else if (result>1E6) +else if (result>=1E6) { intRes = round(result/1E6); resQual = "m"; } +else if (result>=1E3) + { + intRes = round(result/1E3); + resQual = "k"; + } printf("%s = %d%s\n", dy->string, intRes, resQual); } int main(int argc, char *argv[]) /* Process command line. */ { optionInit(&argc, argv, options); if (argc < 2) usage(); humanReadable = optionExists("h"); calc(argc-1, argv+1); return 0; }