The Computer Language
24.11 Benchmarks Game

mandelbrot MicroPython #8 program

source code

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



import sys


def main():

    w = h = x = y = bit_num = 0
    byte_acc = 0
    i = 0; iterations = 50
    limit = 2.0
    Zr = Zi = Cr = Ci = Tr = Ti = 0.0

    w = int(sys.argv[1])
    h = w

    sys.stdout.write(f'P4\n{w} {h}\n'); sys.stdout.flush()

    for y in range(h):

        for x in range(w):

            Zr = Zi = 0.0 
            Cr = (2.0 * x / w - 1.5); Ci = (2.0 * y / h - 1.0)        
        
            for i in range(iterations):

                Tr = Zr*Zr - Zi*Zi + Cr
                Ti = 2*Zr*Zi + Ci          
                Zr = Tr; Zi = Ti               
                if Zr*Zr+Zi*Zi > limit*limit:
                    break
            
            
            if Zr*Zr+Zi*Zi > limit*limit: 
                byte_acc = (byte_acc << 1) | 0x00
            else:
                byte_acc = (byte_acc << 1) | 0x01
                
            bit_num += 1         

            if bit_num == 8:
                # Python 2.7 sys.stdout.write(chr(byte_acc))
                sys.stdout.buffer.write(bytes([byte_acc]))        
                byte_acc = 0
                bit_num = 0

            elif x == w - 1:

                byte_acc = byte_acc << (8-w%8)   
                sys.stdout.buffer.write(bytes([byte_acc]))  
                byte_acc = 0
                bit_num = 0

main() 
    

notes, command-line, and program output

NOTES:
64-bit Ubuntu quad core
MicroPython v1.24.0
preview.44.ge9c898cb3


 Thu, 31 Oct 2024 00:54:32 GMT

COMMAND LINE:
 /opt/src/micropython/micropython  -X emit=native mandelbrot.micropython-8.micropython 16000

(BINARY) PROGRAM OUTPUT NOT SHOWN