Nimber arithmetic: Difference between revisions
Content added Content deleted
m (→{{header|Phix}}: 25*25 output) |
Thundergnat (talk | contribs) m (→{{header|Raku}}: Simplify, style tweaks) |
||
Line 715: | Line 715: | ||
sub infix:<⊗> (Int $x, Int $y) { |
sub infix:<⊗> (Int $x, Int $y) { |
||
return $x |
return $x × $y if so $x|$y < 2; |
||
my $h = exp $x.lsb, 2; |
my $h = exp $x.lsb, 2; |
||
return ($h ⊗ $y) ⊕ (($x ⊕ $h) ⊗ $y) if $x > $h; |
return ($h ⊗ $y) ⊕ (($x ⊕ $h) ⊗ $y) if $x > $h; |
||
return ($y ⊗ $x) if |
return ($y ⊗ $x) if $y.lsb < $y.msb; |
||
return $x |
return $x × $y unless my $comp = $x.lsb +& $y.lsb; |
||
$h = exp $comp.lsb, 2; |
$h = exp $comp.lsb, 2; |
||
(($x +> $h) ⊗ ($y +> $h)) ⊗ (3 +< ($h - 1)) |
(($x +> $h) ⊗ ($y +> $h)) ⊗ (3 +< ($h - 1)) |