Hi All,
I have so far been using this function for normal rounding:
http://www.gnu.org/software/gawk/manual/gawk.html#Round-Function
It however only rounds to an integer value.
Does someone know of an existing function that would also let me specify
the rounding precision ?
Thanks, Hermann
|
|
0
|
|
|
|
Reply
|
Hermann
|
1/26/2007 6:43:25 PM |
|
Hermann Peifer wrote:
> Hi All,
>
> I have so far been using this function for normal rounding:
> http://www.gnu.org/software/gawk/manual/gawk.html#Round-Function
>
> It however only rounds to an integer value.
>
> Does someone know of an existing function that would also let me specify
> the rounding precision ?
Yes, printf.
$ printf "%.3g\n" "3,514"
3,51
$ printf "%.3g\n" "3,515"
3,52
Janis
>
> Thanks, Hermann
|
|
0
|
|
|
|
Reply
|
Janis
|
1/26/2007 6:56:14 PM
|
|
Janis Papanagnou wrote:
> Hermann Peifer wrote:
>> Hi All,
>>
>> I have so far been using this function for normal rounding:
>> http://www.gnu.org/software/gawk/manual/gawk.html#Round-Function
>>
>> It however only rounds to an integer value.
>>
>> Does someone know of an existing function that would also let me
>> specify the rounding precision ?
>
> Yes, printf.
>
> $ printf "%.3g\n" "3,514"
> 3,51
> $ printf "%.3g\n" "3,515"
> 3,52
>
You mean I can safely ignore what is written in the manual (link see above):
---snip---
12.2.4 Rounding Numbers
The way printf and sprintf (see Printf) perform rounding often depends
upon the system's C sprintf subroutine. On many machines, sprintf
rounding is �unbiased,� which means it doesn't always round a trailing
`.5' up, contrary to naive expectations.
---snip---
Whereever I use gawk (typically under Cygwin or Linux): I would never
have to worry about the "system's C sprintf subroutine"?
This would indeed be a perfect solution for me.
Hermann
|
|
0
|
|
|
|
Reply
|
Hermann
|
1/26/2007 7:24:21 PM
|
|
Hermann Peifer <peifer@gmx.net> writes:
> Hi All,
>
> I have so far been using this function for normal rounding:
> http://www.gnu.org/software/gawk/manual/gawk.html#Round-Function
>
> It however only rounds to an integer value.
>
> Does someone know of an existing function that would also let me
> specify the rounding precision ?
: ~ [0 523]; gawk '{print int($1*(10^$2)+0.5)/10^$2}'
101.13452 2
101.13
101.13542 2
101.14
(adapt if you need proper behaviour for negatives; watch out for
overflows)
Ulrich
--
"A real Klingon warrior does not care about pineapple-oriented
languages."
-- galibert in the sdm
|
|
0
|
|
|
|
Reply
|
brotherelf
|
1/26/2007 7:44:22 PM
|
|
Hermann Peifer escreveu:
> Hi All,
>
> I have so far been using this function for normal rounding:
> http://www.gnu.org/software/gawk/manual/gawk.html#Round-Function
>
> It however only rounds to an integer value.
>
> Does someone know of an existing function that would also let me specify
> the rounding precision ?
I don't know of any, but I _think_ a quick hack would be to multiply the
number by ten raised to the precision you want and divide back (perhaps
in a similar written function).
HTH
--
Cesar Rabak
|
|
0
|
|
|
|
Reply
|
Cesar
|
1/26/2007 7:59:49 PM
|
|
Hermann Peifer wrote:
> Janis Papanagnou wrote:
>> Hermann Peifer wrote:
>>
>>> Hi All,
>>>
>>> I have so far been using this function for normal rounding:
>>> http://www.gnu.org/software/gawk/manual/gawk.html#Round-Function
>>>
>>> It however only rounds to an integer value.
>>>
>>> Does someone know of an existing function that would also let me
>>> specify the rounding precision ?
>>
>>
>> Yes, printf.
>>
>> $ printf "%.3g\n" "3,514"
>> 3,51
>> $ printf "%.3g\n" "3,515"
>> 3,52
>>
>
> You mean I can safely ignore what is written in the manual (link see
> above):
No, you shouldn't ignore what was written, but you should specify what
rounding function you expect. Your quoted part of the gawk manual does
not give any rationale behind the rounding implemented with different
printf C functions. But if you read the document "What Every Computer
Scientist Should Know About Floating-Point Arithmetic" (at least that
is what I remember where I have that information from) you would know
that there's some rationale behind rounding up or down, depending on
the next significant binary digits with which the floating point number
is encoded. I read that it had been shown that this type of rounding
has better properties, as was reported to have been proven by Reiser
and Knuth (http://docs.sun.com/source/806-3568/ncg_goldberg.html#704).
Read the original paper for a more accurate explanation than I can give.
Janis
>
> ---snip---
>
> 12.2.4 Rounding Numbers
>
> The way printf and sprintf (see Printf) perform rounding often depends
> upon the system's C sprintf subroutine. On many machines, sprintf
> rounding is �unbiased,� which means it doesn't always round a trailing
> `.5' up, contrary to naive expectations.
>
> ---snip---
>
> Whereever I use gawk (typically under Cygwin or Linux): I would never
> have to worry about the "system's C sprintf subroutine"?
>
> This would indeed be a perfect solution for me.
>
> Hermann
|
|
0
|
|
|
|
Reply
|
Janis
|
1/26/2007 11:39:11 PM
|
|
Janis Papanagnou wrote:
> Hermann Peifer wrote:
>> Janis Papanagnou wrote:
>>> Hermann Peifer wrote:
>>>
>>>> Hi All,
>>>>
>>>> I have so far been using this function for normal rounding:
>>>> http://www.gnu.org/software/gawk/manual/gawk.html#Round-Function
>>>>
>>>> It however only rounds to an integer value.
>>>>
>>>> Does someone know of an existing function that would also let me
>>>> specify the rounding precision ?
>>>
>>>
>>> Yes, printf.
>>>
>>> $ printf "%.3g\n" "3,514"
>>> 3,51
>>> $ printf "%.3g\n" "3,515"
>>> 3,52
>>>
>>
>> You mean I can safely ignore what is written in the manual (link see
>> above):
>
> No, you shouldn't ignore what was written, but you should specify what
> rounding function you expect.
Sorry for not being clear enough, I will try again:
I am looking for an (ideally existing and widely used) AWK function that
will *always* do a *normal* rounding, as explained in the GAWK manual,
on the given page, link see above.
It should have the same rounding logic as:
# round.awk --- do normal rounding
function round(x, ival, aval, fraction)
....
Plus: The function should allow for specifying the rounding precision.
Hope this was clearer now.
> But if you read the document "What Every Computer
> Scientist Should Know About Floating-Point Arithmetic" (at least that
> is what I remember where I have that information from) you would know...
I once tried to read (and understand) this one. This was a sad
experience. I gave up somehwere in the middle of the article and had to
accept that
a) I am not a computer scientist (to be honest: I knew before)
b) there are things between heaven and earth that I will never understand
;-)
Hermann
PS
As an AWK novice with ~2 months experience, I am still foolish enough
and believe in the AWK documentation, which says that the printf
rounding logic is basically unpredictable. My thought was hence that if
this is true, then someone must have written the rounding function I am
looking for (years ago, I would assume). I just can't find it via
Google, so I made a posting to the newsgroup. That's about the story
behind my question.
|
|
0
|
|
|
|
Reply
|
Hermann
|
1/27/2007 4:54:37 AM
|
|
Hermann Peifer wrote:
> Janis Papanagnou wrote:
>> Hermann Peifer wrote:
>>> Janis Papanagnou wrote:
>>>> Hermann Peifer wrote:
>>>>
>>>>> Hi All,
>>>>>
>>>>> I have so far been using this function for normal rounding:
>>>>> http://www.gnu.org/software/gawk/manual/gawk.html#Round-Function
>>>>>
>>>>> It however only rounds to an integer value.
>>>>>
>>>>> Does someone know of an existing function that would also let me
>>>>> specify the rounding precision ?
>>>>
>>>> Yes, printf.
>>>>
>>>> $ printf "%.3g\n" "3,514"
>>>> 3,51
>>>> $ printf "%.3g\n" "3,515"
>>>> 3,52
>>>
>>> You mean I can safely ignore what is written in the manual (link see
>>> above):
>>
>> No, you shouldn't ignore what was written, but you should specify what
>> rounding function you expect.
>
> Sorry for not being clear enough, I will try again:
You misunderstood what I wanted to say.
> I am looking for an (ideally existing and widely used) AWK function that
> will *always* do a *normal* rounding, as explained in the GAWK manual,
> on the given page, link see above.
The point I wanted to make is that there seems not to be a "normal" way
to round (the document I mentioned speaks of "two schools"). The IEEE
FP processors seem to (have to) support a couple ways of rounding; you
may read at least that part of the document to understand, e.g., what's
your requirement for rounding negative values. (It may turn out that it
is sufficient for you to use a single line function like the one posted
upthread; but I suppose the basic gawk code might be more appropriate
for your demands, since it rounds -2.5 to -3 and not to -2.)
> It should have the same rounding logic as:
>
> # round.awk --- do normal rounding
> function round(x, ival, aval, fraction)
> ...
>
> Plus: The function should allow for specifying the rounding precision.
Since you seem to want "always round up" at .,...5 and since the gawk
rounding fuction is based on the underlying - for your case - unsuited
(since "unpredictable"; you don't want or can't determine the behavior
of the target machine) C function, all you can do is implement an own
function that is not based on the C library. I suggest to either change
the function round() that is provided as source code in the gawk manual
or write a wrapper function that does the input/output scaling around
the code of round(), i.e., multiplying (dividing) the input argument by
10^x and divide (multiply) the result from round() by 10^x.
> Hope this was clearer now.
>
> > But if you read the document "What Every Computer
>
>> Scientist Should Know About Floating-Point Arithmetic" (at least that
>> is what I remember where I have that information from) you would know...
>
> I once tried to read (and understand) this one. This was a sad
> experience. I gave up somehwere in the middle of the article and had to
> accept that
>
> a) I am not a computer scientist (to be honest: I knew before)
> b) there are things between heaven and earth that I will never understand
>
> ;-)
>
> Hermann
>
> PS
>
> As an AWK novice with ~2 months experience, I am still foolish enough
> and believe in the AWK documentation, which says that the printf
> rounding logic is basically unpredictable.
The function is not unpredictable per se, it's only unpredictable what
function you get on any particular system. (Which is, apparently, still
bad if one cannot choose the function he needs.)
Janis
> My thought was hence that if
> this is true, then someone must have written the rounding function I am
> looking for (years ago, I would assume). I just can't find it via
> Google, so I made a posting to the newsgroup. That's about the story
> behind my question.
>
|
|
0
|
|
|
|
Reply
|
Janis
|
1/27/2007 9:19:05 AM
|
|
Ulrich M. Schwarz wrote:
> Hermann Peifer <peifer@gmx.net> writes:
>
>> Hi All,
>>
>> I have so far been using this function for normal rounding:
>> http://www.gnu.org/software/gawk/manual/gawk.html#Round-Function
>>
>> It however only rounds to an integer value.
>>
>> Does someone know of an existing function that would also let me
>> specify the rounding precision ?
>
> : ~ [0 523]; gawk '{print int($1*(10^$2)+0.5)/10^$2}'
> 101.13452 2
> 101.13
> 101.13542 2
> 101.14
>
> (adapt if you need proper behaviour for negatives; watch out for
> overflows)
>
> Ulrich
The overflows or whatever seem to be tricky indeed, as I guess from the
results in lines 15, 28, 29 and 30 below, where I would have expected
rounded values ending with 6, 4, 5 and 6 respectively.
$ cat round_plus.awk
BEGIN{OFS="\t";print "#","value","precision","rounded value"}
{
print NR,$1,$2, int($1*(10^$2)+0.5)/10^$2
}
$ awk -f round_plus.awk my_numbers
# value precision rounded value
1 1.35 1 1.4
2 1.45 1 1.5
3 1.55 1 1.6
4 1.135 2 1.14
5 1.145 2 1.15
6 1.155 2 1.16
7 1.1135 3 1.114
8 1.1145 3 1.115
9 1.1155 3 1.116
10 1.11135 4 1.1114
11 1.11145 4 1.1115
12 1.11155 4 1.1116
13 1.111135 5 1.11114
14 1.111145 5 1.11115
15 1.111155 5 1.11115
16 11.35 1 11.4
17 11.45 1 11.5
18 11.55 1 11.6
19 11.135 2 11.14
20 11.145 2 11.15
21 11.155 2 11.16
22 11.1135 3 11.114
23 11.1145 3 11.115
24 11.1155 3 11.116
25 11.11135 4 11.1114
26 11.11145 4 11.1115
27 11.11155 4 11.1116
28 11.111135 5 11.1111
29 11.111145 5 11.1112
30 11.111155 5 11.1112
Hermann
|
|
0
|
|
|
|
Reply
|
Hermann
|
1/27/2007 9:39:39 AM
|
|
Janis Papanagnou wrote:
> Hermann Peifer wrote:
>> Janis Papanagnou wrote:
>>> Hermann Peifer wrote:
>>>> Janis Papanagnou wrote:
>>>>> Hermann Peifer wrote:
>>>>>
>>>>>> Hi All,
>>>>>>
>>>>>> I have so far been using this function for normal rounding:
>>>>>> http://www.gnu.org/software/gawk/manual/gawk.html#Round-Function
>>>>>>
>>>>>> It however only rounds to an integer value.
>>>>>>
>>>>>> Does someone know of an existing function that would also let me
>>>>>> specify the rounding precision ?
>>>>>
>>>>> Yes, printf.
>>>>>
>>>>> $ printf "%.3g\n" "3,514"
>>>>> 3,51
>>>>> $ printf "%.3g\n" "3,515"
>>>>> 3,52
>>>>
>>>> You mean I can safely ignore what is written in the manual (link see
>>>> above):
>>>
>>> No, you shouldn't ignore what was written, but you should specify what
>>> rounding function you expect.
>>
>> Sorry for not being clear enough, I will try again:
>
> You misunderstood what I wanted to say.
Sorry again.
>
>> I am looking for an (ideally existing and widely used) AWK function
>> that will *always* do a *normal* rounding, as explained in the GAWK
>> manual, on the given page, link see above.
>
> The point I wanted to make is that there seems not to be a "normal" way
> to round (the document I mentioned speaks of "two schools"). The IEEE
> FP processors seem to (have to) support a couple ways of rounding; you
> may read at least that part of the document to understand, e.g., what's
> your requirement for rounding negative values. (It may turn out that it
> is sufficient for you to use a single line function like the one posted
> upthread; but I suppose the basic gawk code might be more appropriate
> for your demands, since it rounds -2.5 to -3 and not to -2.)
>
I will give it a 2nd try with the article. However, I am (perhaps) a
scientist at a computer, but in no way a computer scientist.
The mentioned single line function does not seem to be robust enough,
see me reply to the other posting.
>> It should have the same rounding logic as:
>>
>> # round.awk --- do normal rounding
>> function round(x, ival, aval, fraction)
>> ...
>>
>> Plus: The function should allow for specifying the rounding precision.
>
> Since you seem to want "always round up" at .,...5 and since the gawk
> rounding fuction is based on the underlying - for your case - unsuited
> (since "unpredictable"; you don't want or can't determine the behavior
> of the target machine) C function, all you can do is implement an own
> function that is not based on the C library. I suggest to either change
> the function round() that is provided as source code in the gawk manual
> or write a wrapper function that does the input/output scaling around
> the code of round(), i.e., multiplying (dividing) the input argument by
> 10^x and divide (multiply) the result from round() by 10^x.
>
Thanks for the hint, but I am afraid this goes far beyond my capacities
(which I don't expect to grow very much, given that I am already beyond
half of the usual lifetime expectation statistics for my generation ;-)
>> Hope this was clearer now.
>>
>> > But if you read the document "What Every Computer
>>
>>> Scientist Should Know About Floating-Point Arithmetic" (at least that
>>> is what I remember where I have that information from) you would know...
>>
>> I once tried to read (and understand) this one. This was a sad
>> experience. I gave up somehwere in the middle of the article and had
>> to accept that
>>
>> a) I am not a computer scientist (to be honest: I knew before)
>> b) there are things between heaven and earth that I will never understand
>>
>> ;-)
>>
>> Hermann
>>
>> PS
>>
>> As an AWK novice with ~2 months experience, I am still foolish enough
>> and believe in the AWK documentation, which says that the printf
>> rounding logic is basically unpredictable.
>
> The function is not unpredictable per se, it's only unpredictable what
> function you get on any particular system. (Which is, apparently, still
> bad if one cannot choose the function he needs.)
>
That's exactly what I meant: Unpredictable in the sense that when I use
the same scripts under Cygwin (on Mondays), some Linux (on Tuesdays),
.... then the rounding behaviour might indeed be difficult to predict.
> Janis
>
>> My thought was hence that if this is true, then someone must have
>> written the rounding function I am looking for (years ago, I would
>> assume). I just can't find it via Google, so I made a posting to the
>> newsgroup. That's about the story behind my question.
>>
|
|
0
|
|
|
|
Reply
|
Hermann
|
1/27/2007 9:56:20 AM
|
|
Janis Papanagnou wrote:
> ... that there seems not to be a "normal" way to round
> (the document I mentioned speaks of "two schools").
What I forgot to add in my previous reply:
What you write is perhaps true, but only given that the document is
from/for computer scientists.
IMHO, there is some sort of a widely accepted definition of normal
rounding, aka "biased" rounding (as mentioned in the GAWK manual).
In Wikipedia, it is mentioned as "Common method", see:
http://en.wikipedia.org/wiki/Rounding
Am I right in saying that it seems to be difficult when trying to
implement the normal (any?) rounding of the decimal system in form of a
(any?) computer programme, as computers use binary logic rather than
decimal logic, which in return results into quite many (and occasionally
unpredictable) side-effects when computers start working with "our"
numbers from the decimal system?
(My question is based on the small part of the article that I understand.)
Hermann
|
|
0
|
|
|
|
Reply
|
Hermann
|
1/27/2007 10:37:58 AM
|
|
Hermann Peifer wrote:
> Janis Papanagnou wrote:
>
>> Hermann Peifer wrote:
>>
>>> Janis Papanagnou wrote:
>>>
>>>> Hermann Peifer wrote:
>>>>
>>>>> Janis Papanagnou wrote:
>>>>>
>>>>>> Hermann Peifer wrote:
>>>>>>
>>>>>>> Hi All,
>>>>>>>
>>>>>>> I have so far been using this function for normal rounding:
>>>>>>> http://www.gnu.org/software/gawk/manual/gawk.html#Round-Function
>>>>>>>
>>>>>>> It however only rounds to an integer value.
>>>>>>>
>>>>>>> Does someone know of an existing function that would also let me
>>>>>>> specify the rounding precision ?
>>>>>>
>>>>>>
>>>>>> Yes, printf.
>>>>>>
>>>>>> $ printf "%.3g\n" "3,514"
>>>>>> 3,51
>>>>>> $ printf "%.3g\n" "3,515"
>>>>>> 3,52
>>>>>
>>>>>
>>>>> You mean I can safely ignore what is written in the manual (link
>>>>> see above):
>>>>
>>>>
>>>> No, you shouldn't ignore what was written, but you should specify what
>>>> rounding function you expect.
>>>
>>>
>>> Sorry for not being clear enough, I will try again:
>>
>>
>> You misunderstood what I wanted to say.
>
>
> Sorry again.
>
>>
>>> I am looking for an (ideally existing and widely used) AWK function
>>> that will *always* do a *normal* rounding, as explained in the GAWK
>>> manual, on the given page, link see above.
>>
>>
>> The point I wanted to make is that there seems not to be a "normal" way
>> to round (the document I mentioned speaks of "two schools"). The IEEE
>> FP processors seem to (have to) support a couple ways of rounding; you
>> may read at least that part of the document to understand, e.g., what's
>> your requirement for rounding negative values. (It may turn out that it
>> is sufficient for you to use a single line function like the one posted
>> upthread; but I suppose the basic gawk code might be more appropriate
>> for your demands, since it rounds -2.5 to -3 and not to -2.)
>>
>
> I will give it a 2nd try with the article. However, I am (perhaps) a
> scientist at a computer, but in no way a computer scientist.
>
> The mentioned single line function does not seem to be robust enough,
> see me reply to the other posting.
>
>>> It should have the same rounding logic as:
>>>
>>> # round.awk --- do normal rounding
>>> function round(x, ival, aval, fraction)
>>> ...
>>>
>>> Plus: The function should allow for specifying the rounding precision.
>>
>>
>> Since you seem to want "always round up" at .,...5 and since the gawk
>> rounding fuction is based on the underlying - for your case - unsuited
>> (since "unpredictable"; you don't want or can't determine the behavior
>> of the target machine) C function, all you can do is implement an own
>> function that is not based on the C library. I suggest to either change
>> the function round() that is provided as source code in the gawk manual
>> or write a wrapper function that does the input/output scaling around
>> the code of round(), i.e., multiplying (dividing) the input argument by
>> 10^x and divide (multiply) the result from round() by 10^x.
>>
>
> Thanks for the hint, but I am afraid this goes far beyond my capacities
> (which I don't expect to grow very much, given that I am already beyond
> half of the usual lifetime expectation statistics for my generation ;-)
If you mean that you cannot program awk that I wonder about how you
got your task. :-)
Okay. First to cope also with negative numbers, based on the function
from the gawk manual, using a separate wrapper function; something like...
function round2(x, p)
{
x *= 10^p
x = round(x) # here we call the function from gawk manual
x /= 10^p
return x
}
Then you'll need another awk command that initially sets the precision
to a higher value than the default 6 (or 7) digits...
BEGIN { OFMT = "%.10g" }
The last command might also help you to solve the problem you observed
with the single line version (the one that handles rounding of negative
numbers differently).
And your program would call the new function round2() with two arguments,
the value to be rounded and the precision.
Janis
>
>>> Hope this was clearer now.
>>>
>>> > But if you read the document "What Every Computer
>>>
>>>> Scientist Should Know About Floating-Point Arithmetic" (at least that
>>>> is what I remember where I have that information from) you would
>>>> know...
>>>
>>>
>>> I once tried to read (and understand) this one. This was a sad
>>> experience. I gave up somehwere in the middle of the article and had
>>> to accept that
>>>
>>> a) I am not a computer scientist (to be honest: I knew before)
>>> b) there are things between heaven and earth that I will never
>>> understand
>>>
>>> ;-)
>>>
>>> Hermann
>>>
>>> PS
>>>
>>> As an AWK novice with ~2 months experience, I am still foolish enough
>>> and believe in the AWK documentation, which says that the printf
>>> rounding logic is basically unpredictable.
>>
>>
>> The function is not unpredictable per se, it's only unpredictable what
>> function you get on any particular system. (Which is, apparently, still
>> bad if one cannot choose the function he needs.)
>>
>
> That's exactly what I meant: Unpredictable in the sense that when I use
> the same scripts under Cygwin (on Mondays), some Linux (on Tuesdays),
> ... then the rounding behaviour might indeed be difficult to predict.
>
>
>> Janis
>>
>>> My thought was hence that if this is true, then someone must have
>>> written the rounding function I am looking for (years ago, I would
>>> assume). I just can't find it via Google, so I made a posting to the
>>> newsgroup. That's about the story behind my question.
>>>
|
|
0
|
|
|
|
Reply
|
Janis
|
1/27/2007 11:54:06 AM
|
|
Janis Papanagnou wrote:
>
> Okay. First to cope also with negative numbers, based on the function
> from the gawk manual, using a separate wrapper function; something like...
>
> function round2(x, p)
> {
> x *= 10^p
> x = round(x) # here we call the function from gawk manual
> x /= 10^p
> return x
> }
>
> Then you'll need another awk command that initially sets the precision
> to a higher value than the default 6 (or 7) digits...
>
> BEGIN { OFMT = "%.10g" }
>
> The last command might also help you to solve the problem you observed
> with the single line version (the one that handles rounding of negative
> numbers differently).
>
> And your program would call the new function round2() with two arguments,
> the value to be rounded and the precision.
>
> Janis
Thanks for the hint.
My idea so far was somewhat different from your approach and more based
on the logic of the original round.awk code from the manual. Something
like this:
a) See if there is a fractional part
b) If yes: split value into integer part and fraction
c) Check if integer part is positive or negative
d) Do some integer arithmetics on the fractional part
- depending on the outcome of c),
- the given precision
- and the fraction itself (e.g. number of digits)
- making sure that a trailing 5 is always rounded up
e) Paste integer part and rounded fractional part together again
This way, I would only calculate with integers, carefully avoiding any
(new) problems related to the dilemma with decimal vs. binary system.
Integers are not affected by this computer science problem (if I
understand it correctly).
By the end of the day it looks to me as if I am raising a non-issue
here, so we better close the case?
Hermann
|
|
0
|
|
|
|
Reply
|
Hermann
|
1/27/2007 3:55:52 PM
|
|
|
12 Replies
310 Views
(page loaded in 0.191 seconds)
|