Hi again.

Of course, Karel Kulhavy is the one to provide feedback on this patch.
But I have tried it too (after upgrading src/usr.bin/bc) and seems to
be working fine for this case (NetBSD and Solaris are running their own
flavours of bc):

For OpenBSD:

$ bc -l
ibase=4
obase=10
scale=100
l(1.031)
.023311001002311221102233202
l(1.03)
.022211330213133010123220033

On NetBSD 3.0.1 we have:

$ bc -l
ibase=4
obase=10
scale=100
l(1.031)
.023311001002311221102233202
l(1.03)
.022211330213133010123220033

On Solaris 9 SPARC (on a 64-bit Blade 2000):

$ bc -l
ibase=4
obase=10
scale=100
l(1.031)
.02331113010200100201230200
l(1.03)
.02233332120032011033021322

There are some differences on the third example provided by Karel:

On OpenBSD:

$ bc -l
ibase=16
obase=10
scale=10
l(0.1000001)
-2.C5C85FDF473DE3
l(0.0FFFF)
-2.C5D2DC7106EFA6
l(0.1)
-2386F26FC0FFFF
scale=100
l(0.10000000000000000000000000000000000000000000000000001)
-2.C5C85FDF473DE6AF278ECE600FCBDABD03CD0C99CA62D8B628345D6E2EABE8AF9\
EE1D881B7AEB26156554BED2BE86C43B4BAB8D704E085109D5CECA445A6E094FA5B2\
858892BA3146B2F6844C5F0E1FAE7AA6F0EC4D980EC95BE83B1D95FDD2DCB3A1EC67\
595232BD77E6
l(0.1)
-553F75FDCEFCEF46EEDDC80DCC7F755BC28F265F9EF17CC5573C063FF540E3C42D3\
5A1D153624ADC666B026B2716ED595D80FCF4A6E706BDE50C612152F87D8D99F72BE\
D3875B982E7C00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\
FFFFFFFFFF
[...]

On NetBSD 3.0.1:

$ bc -l
ibase=16
obase=10
scale=10
l(0.1000001)
-2.C5C85FDF473DE3
l(0.0FFFF)
-2.C5D2DC7106EFA6
l(0.1)
-FFFFFFFFFFFFFFFF.00000000000000
scale=100
l(0.10000000000000000000000000000000000000000000000000001)
-2.C5C85FDF473DE6AF278ECE600FCBDABD03CD0C99CA62D8B628345D6E2EABE8AF9\
EE1D881B7AEB26156554BED2BE86C43B4BAB8D704E085109D5CECA445A6E094FA5B2\
858892BA3146B2F6844C5F0E1FAE7AA6F0EC4D980EC95BE83B1D95FDD2DCB3A1EC67\
595232BD77E9
l(0.1)
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF.00000000000000\
00000000000000000000000000000000000000000000000000000000000000000000\
00000000000000000000000000000000000000000000000000000000000000000000\
000000000000000000000000000000000000000000000000000000000000000

On Solaris...

$ bc -l
ibase=16
obase=10
scale=10
l(0.1000001)
-2.C5C85EDF473ED
l(0.0FFFF)
-2.C5C95FDFC73EA
l(0.1)
-2.C5C85FDF473DE
scale=100
scale factor is too large
scale=59
l(0.10000000000000000000000000000000000000000000000000001)
-2.C5C85FDF473DE6AF278ECE600FCBDABD03CD0C99CA62D8B628335D6E2EABE8AF9EE\
1D881C
l(0.1)
-2.C5C85FDF473DE6AF278ECE600FCBDABD03CD0C99CA62D8B628345D6E2EABE8AF9EE\
1D881B

(I suppose that setting obase=10 after setting the input base to 16d
means that the output base is set to 0x10...)

Cheers,
Igor.

Reply via email to