Re: Smooth numeric upgrades?

```   From: Bob Rogers <[EMAIL PROTECTED]>
Date: Sat, 4 Oct 2008 22:08:10 -0400```
```
From: "Patrick R. Michaud" <[EMAIL PROTECTED]>
Date: Sat, 4 Oct 2008 18:15:57 -0500

. . .

All of the mechanisms I've been able to find in Parrot for
converting an arbitrary PMC to a number seem to result in
the code for infix:<*> that we have now.  I'm open for
suggestions to improve this, though.

Pm

Hmm.  My instinct would be to rely on MMD . . .

This exposes an MMD bug (it runs forever) . . .

Wrong; Parrot was replacing my Integer with the FixedPMCArray.  (Grr.)
Here is an improvement:

.sub 'infix:*' :multi(Perl6Array,_)
.param pmc a
.param pmc b
\$I0 = a
\$P0 = new 'Integer'
\$P0 = \$I0
.return 'infix:*'(\$P0, b)
.end

.sub 'infix:*' :multi(_,Perl6Array)
.param pmc a
.param pmc b
\$I0 = b
\$P0 = new 'Integer'
\$P0 = \$I0
.return 'infix:*'(a, \$P0)
.end

It works for some cases:

[EMAIL PROTECTED]> ../../perl6 -e 'my @a = <abc def ghi>; say @a *
483648;'
1450944
[EMAIL PROTECTED]> ../../perl6 -e 'my @a = <abc def ghi>; say 483648 *
@a;'
1450944
[EMAIL PROTECTED]> ../../perl6 -e 'my @a = <abc def ghi>; say 483648 *
483648 * @a;'
701746163712
[EMAIL PROTECTED]> ../../perl6 -e 'my @a = <abc def ghi>; say 483648 *
483648 * 483648 * @a;'
339398128586981376
[EMAIL PROTECTED]>

But not others:

[EMAIL PROTECTED]> ../../perl6 -e 'my @a = <abc def ghi>; say @a *
2147483648;'
-6442450944
[EMAIL PROTECTED]> ../../perl6 -e 'my @a = <abc def ghi>; say
2147483648 * @a;'
get_bignum() not implemented in class 'Float'
current instr.: 'infix:*' pc 16030 (src/gen_builtins.pir:10014)
. . .

-- Bob
```