#!/usr/bin/php 0 = ".(ONLY_IM ? 'Yes' : 'No')."\n"; echo "\n"; } for ($progress=BEGIN_PROGR; true; $progress++) { echo "Progress: $progress\r"; for ($i=0; $i<$progress; $i++) { _go($i, $progress, FIX_PAD<0 ? strlen($progress) : FIX_PAD); _go($progress, $i, FIX_PAD<0 ? strlen($progress) : FIX_PAD); } _go($progress, $progress, FIX_PAD<0 ? strlen($progress) : FIX_PAD); } # ------------------------------------------------- function bcabs($x) { return str_replace('-', '', $x); } function bcadd2($a,$b) { return gmp_add($a,$b); } function bcsub2($a,$b) { return gmp_sub($a,$b); } function bcmul2($a,$b) { return gmp_mul($a,$b); } function is_immortal($xx, $x) { $x = bcabs($x); $xx = bcabs($xx); return substr($xx, -strlen($x)) == $x; } function complex_multiply($z1, $z2) { $a = $z1[0]; $b = $z1[1]; $c = $z2[0]; $d = $z2[1]; # return array(($a*$c)-($b*$d), ($a*$d)+($b*$c)); return array(bcsub2(bcmul2($a,$c),bcmul2($b,$d)), bcadd2(bcmul2($a,$d),bcmul2($b,$c))); } function _go($x, $y, $pad) { if ($y%2 == 1) return; // y must be even because "2xy === y" $z = array($x, $y); $z_orig = $z; for ($p=2; $p<=MAX_POW; $p++) { $z = complex_multiply($z, $z_orig); if ($p