kinx

Looks like JavaScript, feels like Ruby, and it is a script language fitting in C programmers.

This project is maintained by Kray-G

Mandelbrot Set

Overview

Calculation of Mandelbrot.

Examples

Example 1. Mandelbrot by normal function

Code

const BAILOUT = 16;
const MAX_ITERATIONS = 1000;

function mandelbrot(x, y) {
    var cr = y - 0.5;
    var ci = x;
    var zi = 0.0;
    var zr = 0.0;
    var i = 0;

    while (true) {
        i++;
        var temp = zr * zi;
        var zr2 = zr * zr;
        var zi2 = zi * zi;
        zr = zr2 - zi2 + cr;
        zi = temp + temp + ci;
        if (zi2 + zr2 > BAILOUT)
            return i;
        if (i > MAX_ITERATIONS)
            return 0;
    }
}

var x,y;
for (y = -39; y < 39; y++) {
    System.print("\n: ");
    for (x = -39; x < 39; x++) {
        var i = mandelbrot(x/40.0, y/40.0);
        if (i==0)
            System.print("*");
        else
            System.print(" ");
    }
}
System.print("\n");

Result

:                                        *
:                                        *
:                                        *
:                                        *
:                                        *
:                                       ***
:                                      *****
:                                      *****
:                                       ***
:                                        *
:                                    *********
:                                  *************
:                                 ***************
:                              *********************
:                              *********************
:                               *******************
:                               *******************
:                               *******************
:                               *******************
:                             ***********************
:                               *******************
:                               *******************
:                              *********************
:                               *******************
:                               *******************
:                                *****************
:                                 ***************
:                                  *************
:                                    *********
:                                        *
:                                 ***************
:                             ***********************
:                          * ************************* *
:                          *****************************
:                       * ******************************* *
:                        *********************************
:                       ***********************************
:                     ***************************************
:                *** ***************************************** ***
:                *************************************************
:                 ***********************************************
:                  *********************************************
:                  *********************************************
:                 ***********************************************
:                 ***********************************************
:               ***************************************************
:                *************************************************
:                *************************************************
:               ***************************************************
:               ***************************************************
:          *    ***************************************************    *
:        *****  ***************************************************  *****
:        ****** *************************************************** ******
:       ******* *************************************************** *******
:     ***********************************************************************
:     ********* *************************************************** *********
:        ****** *************************************************** ******
:        *****  ***************************************************  *****
:               ***************************************************
:               ***************************************************
:               ***************************************************
:               ***************************************************
:                *************************************************
:                *************************************************
:               ***************************************************
:                 ***********************************************
:                 ***********************************************
:                   *******************************************
:                    *****************************************
:                  *********************************************
:                 **** ****************** ****************** ****
:                  ***  ****************   ****************  ***
:                   *    **************     **************    *
:                          ***********       ***********
:                          **  *****           *****  **
:                           *   *                 *   *
:
:

Example 2. Mandelbrot by native function

Code

const BAILOUT = 16;
const MAX_ITERATIONS = 1000;

native mandelbrot(x:dbl, y:dbl) {
    var cr = y - 0.5;
    var ci = x;
    var zi = 0.0;
    var zr = 0.0;
    var i = 0;

    while (true) {
        i++;
        var temp = zr * zi;
        var zr2 = zr * zr;
        var zi2 = zi * zi;
        zr = zr2 - zi2 + cr;
        zi = temp + temp + ci;
        if (zi2 + zr2 > BAILOUT)
            return i;
        if (i > MAX_ITERATIONS)
            return 0;
    }
}

var x,y;
for (y = -39; y < 39; y++) {
    System.print("\n: ");
    for (x = -39; x < 39; x++) {
        var i = mandelbrot(x/40.0, y/40.0);
        if (i==0)
            System.print("*");
        else
            System.print(" ");
    }
}
System.print("\n");

Result

:                                        *
:                                        *
:                                        *
:                                        *
:                                        *
:                                       ***
:                                      *****
:                                      *****
:                                       ***
:                                        *
:                                    *********
:                                  *************
:                                 ***************
:                              *********************
:                              *********************
:                               *******************
:                               *******************
:                               *******************
:                               *******************
:                             ***********************
:                               *******************
:                               *******************
:                              *********************
:                               *******************
:                               *******************
:                                *****************
:                                 ***************
:                                  *************
:                                    *********
:                                        *
:                                 ***************
:                             ***********************
:                          * ************************* *
:                          *****************************
:                       * ******************************* *
:                        *********************************
:                       ***********************************
:                     ***************************************
:                *** ***************************************** ***
:                *************************************************
:                 ***********************************************
:                  *********************************************
:                  *********************************************
:                 ***********************************************
:                 ***********************************************
:               ***************************************************
:                *************************************************
:                *************************************************
:               ***************************************************
:               ***************************************************
:          *    ***************************************************    *
:        *****  ***************************************************  *****
:        ****** *************************************************** ******
:       ******* *************************************************** *******
:     ***********************************************************************
:     ********* *************************************************** *********
:        ****** *************************************************** ******
:        *****  ***************************************************  *****
:               ***************************************************
:               ***************************************************
:               ***************************************************
:               ***************************************************
:                *************************************************
:                *************************************************
:               ***************************************************
:                 ***********************************************
:                 ***********************************************
:                   *******************************************
:                    *****************************************
:                  *********************************************
:                 **** ****************** ****************** ****
:                  ***  ****************   ****************  ***
:                   *    **************     **************    *
:                          ***********       ***********
:                          **  *****           *****  **
:                           *   *                 *   *
:
: