The Computer Language
24.11 Benchmarks Game

mandelbrot PHP #8 program

source code

<?php
/* The Computer Language Benchmarks Game
   https://salsa.debian.org/benchmarksgame-team/benchmarksgame/
   
   line-by-line from Greg Buchholz's C program
*/



function main($args) {
    global $argv;
    $w = 0; $h = 0; $bit_num = 0;
    $byte_acc = 0;
    $i = 0; $iter = 50;
    $x = 0.0; $y = 0.0; $limit = 2.0;
    $Zr = 0.0; $Zi = 0.0; $Cr = 0.0; $Ci = 0.0; $Tr = 0.0; $Ti = 0.0;

    $h = $args[1]; $w = $h;

    printf ("P4\n%d %d\n", $w, $h);

    for ($y = 0 ; $y < $h ; $y++)
    {
        for ($x = 0 ; $x < $w ; $x++)
        {
            $Zr = 0.0; $Zi = 0.0; $Tr = 0.0; $Ti = 0.0;
            $Cr = (2.0 * $x / $w - 1.5); $Ci = (2.0 * $y / $h - 1.0);

            for ($i = 0 ; $i < $iter && ($Tr+$Ti <= $limit*$limit); ++$i)     
            {
                $Zi = 2.0*$Zr*$Zi + $Ci;
                $Zr = $Tr - $Ti + $Cr;
                $Tr = $Zr * $Zr;
                $Ti = $Zi * $Zi;        
            }
        
            $byte_acc = $byte_acc << 1;  
            if ($Tr+$Ti <= $limit*$limit) $byte_acc = $byte_acc | 0x01;       

            ++$bit_num; 

            if ($bit_num == 8)
            {
                echo chr ($byte_acc);
                $byte_acc = 0;
                $bit_num = 0;
            }
            else if ($x == $w - 1)
            {
                $byte_acc = $byte_acc << (8-$w%8);
                echo chr ($byte_acc);
                $byte_acc = 0;
                $bit_num = 0;
            }
        }        
    }
}

main($argv);
    

notes, command-line, and program output

NOTES:
64-bit Ubuntu quad core
PHP 8.3.11 (cli)
(built: Sep  5 2024 12:34:23) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.11,
with Zend OPcache v8.3.11,
Copyright (c) Zend Technologies


 Mon, 04 Nov 2024 21:41:18 GMT

COMMAND LINE:
 /opt/src/php-8.3.11/bin/php -dzend_extension=/opt/src/php-8.3.11/lib/php/extensions/no-debug-non-zts-20230831/opcache.so -dopcache.enable_cli=1 -dopcache.jit_buffer_size=64M -n  mandelbrot.php-8.php 16000

(BINARY) PROGRAM OUTPUT NOT SHOWN