improved strmhz()
PATCH 1/1 improved strmhz()
This patch prevents the displaying of results like this:
hz = 1999170000
buf = "200.-83"
index 342cf2b..981a75a 100644
lib_generic/strmhz.c +6 -1
@@ -28,10 +28,15 @@ char *strmhz (char *buf, long hz)long m; n =DIV_ROUND (hz,1000000L ); - l =sprintf (buf,"%ld" , n); hz -= n *1000000L ; m =DIV_ROUND (hz,1000L ); +if ( m <0 ) { + n--; + m +=1000L ; + } + + l =sprintf (buf,"%ld" , n);if (m !=0 )sprintf (buf + l,".%03ld" , m);return (buf);
PATCH 1/1 improved strmhz()
Dear Ilko Iliev,
Quoted 3 lines · In message <[email protected]> you wrote:
This patch prevents the displaying of results like this:
hz = 1999170000
buf = "200.-83"
I think you got one '0' too many in your example - the example would just print "1999.170" which is correct.
Quoted 9 lines
lib_generic/strmhz.c +0
-1@@ -28,10 +28,15 @@ char *strmhz (char *buf, long hz)long m; n =DIV_ROUND (hz,1000000L ); - l =sprintf (buf,"%ld" , n); hz -= n *1000000L ;
lib_generic/strmhz.c char *strmhz (char *buf, long hz) · line 42
Quoted 10 lines
lib_generic/strmhz.c +6
-0m =DIV_ROUND (hz,1000L ); +if ( m <0 ) { + n--; + m +=1000L ; + } + + l =sprintf (buf,"%ld" , n);if (m !=0 )sprintf (buf + l,".%03ld" , m);return (buf);
That looks overly complex to me. Can you please check if this patch fixes the problem for your test cases, too:
PATCH 1/1 improved strmhz()
Quoted 21 lines · Wolfgang Denk
Dear Ilko Iliev,
Quoted 4 lines · In message <[email protected]> you wrote:
This patch prevents the displaying of results like this:
hz = 1999170000
buf = "200.-83"I think you got one '0' too many in your example - the example would just print "1999.170" which is correct.
Quoted 8 lines
lib_generic/strmhz.c +0
-1@@ -28,10 +28,15 @@ char *strmhz (char *buf, long hz)long m; n =DIV_ROUND (hz,1000000L ); - l =sprintf (buf,"%ld" , n);
Quoted 16 lines
lib_generic/strmhz.c char *strmhz (char *buf, long hz) · line 42
Quoted 12 lines
lib_generic/strmhz.c +6
-0hz -= n *1000000L ; m =DIV_ROUND (hz,1000L ); +if ( m <0 ) { + n--; + m +=1000L ; + } + + l =sprintf (buf,"%ld" , n);if (m !=0 )sprintf (buf + l,".%03ld" , m);return (buf);That looks overly complex to me. Can you please check if this patch fixes the problem for your test cases, too:
Yes, it works.
Signature · 13 lines
Mit freundlichen Gr??en/With best regards, Ilko Iliev Ronetix Development Tools GmbH Waidhausenstrasse 13/5 1140 Vienna, Austria Tel: +43 1 956 3138 Tel: +43 720 500 315 Fax: +43 1 8174 955 3464 E-Mail: iliev at ronetix.at Web: www.ronetix.at VAT: ATU63916016 Ronetix GmbH - 1140 Vienna - Gesch?ftsf?hrer: Ilko Iliev Registergericht: HG Vienna, FN 304979z
PATCH 1/1 improved strmhz()
In reply to Wolfgang DenkQuoted 30 lines
Quoted 1 line
That looks overly complex to me. Can you please check if this patch fixes the problem for your test cases, too:
Quoted 2 lines
From
963e7db81379225b78bfac0d7457300c86d6b4d6Mon Sep 17 00:00:00 2001From: Wolfgang Denk <[email protected]>
Date: Tue, 21 Oct 2008 15:53:51 +0200
Subject: [PATCH] Fixstrmhz(): avoid printing negative fractionsSigned-off-by Wolfgang Denk <[email protected]>---
lib_generic/strmhz.c| 2 +-1 files changed, 1 insertions(+), 1 deletions(-)lib_generic/strmhz.c +1
-1@@ -27,7 +27,7 @@ char *strmhz (char *buf, long hz)long l, n;long m; - n =DIV_ROUND (hz,1000000L ); + n =DIV_ROUND (hz,1000 ) /1000L ; l =sprintf (buf,"%ld" , n); hz -= n *1000000L ;Signature · 1 line
1.5.5.1
I haven't been following this thread, but can we control the number of significant digits. I'm starting to see output like:
Clock Configuration:
CPU:1500.4294967282 MHz, CCB:600.4294967291 MHz,
DDR:400.4294967293 MHz (800.4294967289 MT/s data rate) (Asynchronous), LBC:37.500 MHz
(it use to look like)
Clock Configuration:
CPU:1500 MHz, CCB: 600 MHz,
DDR: 401 MHz (801 MT/s data rate) (Asynchronous), LBC: 37 MHz- k
PATCH 1/1 improved strmhz()
Quoted 33 lines · Kumar Gala
Quoted 29 lines
That looks overly complex to me. Can you please check if this patch fixes the problem for your test cases, too:
Quoted 2 lines
From
963e7db81379225b78bfac0d7457300c86d6b4d6Mon Sep 17 00:00:00 2001From: Wolfgang Denk <[email protected]>
Date: Tue, 21 Oct 2008 15:53:51 +0200
Subject: [PATCH] Fixstrmhz(): avoid printing negative fractionsSigned-off-by Wolfgang Denk <[email protected]>---
lib_generic/strmhz.c| 2 +-1 files changed, 1 insertions(+), 1 deletions(-)lib_generic/strmhz.c +1
-1@@ -27,7 +27,7 @@ char *strmhz (char *buf, long hz)long l, n;long m; - n =DIV_ROUND (hz,1000000L ); + n =DIV_ROUND (hz,1000 ) /1000L ; l =sprintf (buf,"%ld" , n); hz -= n *1000000L ;Signature · 1 line
1.5.5.1I haven't been following this thread, but can we control the number of significant digits. I'm starting to see output like:
Quoted 3 lines
Clock Configuration:
CPU:1500.4294967282 MHz, CCB:600.4294967291 MHz, DDR:400.4294967293 MHz (800.4294967289 MT/s data rate)
(unsigned) 4294967289 = (signed) -7 (if I did my math right). This is indicating Wolfgang's patch still does negative remainders, but masks that by printing them as unsigned numbers.
Best regards,
gvb
PATCH 1/1 improved strmhz()
In reply to Kumar GalaQuoted 2 lines · Kumar Gala
I haven't been following this thread, but can we control the number of significant digits.
customizable # of digits is always going to differ according to taste. just lock everyone to like .3 and be done. no point in wasting overhead on this. -mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 835 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20081021/447b3b38/attachment.pgp
PATCH 1/1 improved strmhz()
In reply to Kumar GalaDear Kumar Gala,
Quoted 21 lines · In message <[email protected]> you wrote:
Quoted 14 lines
lib_generic/strmhz.c +1
-1@@ -27,7 +27,7 @@ char *strmhz (char *buf, long hz)long l, n;long m; - n =DIV_ROUND (hz,1000000L ); + n =DIV_ROUND (hz,1000 ) /1000L ; l =sprintf (buf,"%ld" , n); hz -= n *1000000L ;Signature · 1 line
1.5.5.1I haven't been following this thread, but can we control the number of significant digits. I'm starting to see output like:
Clock Configuration:
CPU:1500.4294967282 MHz, CCB:600.4294967291 MHz, DDR:400.4294967293 MHz (800.4294967289 MT/s data rate)
Quoted 7 lines
(Asynchronous), LBC:37.500 MHz
(it use to look like)
Clock Configuration:
CPU:1500 MHz, CCB: 600 MHz, DDR: 401 MHz (801 MT/s data rate) (Asynchronous), LBC: 37 MHz
Can you please provide the input to the strmhz() function (the "hz" parameter) that is causing such output?
I am aware that we will have a problem when "hz" exceeds the 2.147 GHz limit (as that's the limit for a "long" data type), but that's another problem, and requires many changes.
Best regards,
Wolfgang Denk
Signature · 6 lines
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de We are all agreed that your theory is crazy. The question which divides us is whether it is crazy enough to have a chance of being correct. My own feeling is that it is not crazy enough. - Niels Bohr
PATCH 1/1 improved strmhz()
Hi Wolfgang,
Quoted 11 lines · Wolfgang Denk
Quoted 11 lines
Quoted 11 lines
lib_generic/strmhz.c +1
-1@@ -27,7 +27,7 @@ char *strmhz (char *buf, long hz)long l, n;long m; - n =DIV_ROUND (hz,1000000L ); + n =DIV_ROUND (hz,1000 ) /1000L ; l =sprintf (buf,"%ld" , n); hz -= n *1000000L ;
<snip>
Quoted 2 lines
Can you please provide the input to the
strmhz()function (the "hz" parameter) that is causing such output?
This patch fixes a problem I have seen on the 1.066GHz Canyonlands. Without it I see this:
CPU: AMCC PowerPC 460EX Rev. A at 1067.4294966964 MHz
with it it's this:
CPU: AMCC PowerPC 460EX Rev. A at 1066.667 MHz
Wolfgang, can you check in the new patch version?
Thanks.
Best regards,
Stefan
=====================================================================
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: office at denx.de
=====================================================================