gambas-source-code/benchmark/mandelbrot.gbs
Benoît Minisini 25cdbaa492 [DEVELOPMENT ENVIRONMENT]
* NEW: Form editor: Decide that a control has a parent according to its
  constructor, not to its Virtual state.
* BUG: Form editor: Correctly handle color properties with an alpha value.
* NEW: The '_HiddenControls' property of form controls now can hide
  controls from any other components.

[BENCHMARKS]
* NEW: Do less repeats in the 'string 'benchmark.
* NEW: Update the Gambas version of 'mandelbrot' and 'polynom' benchmarks.

[GB.WEB.FORM]
* NEW: A small Color class.
* BUG: WebButton now uses the 'gw-button' CSS class.
* BUG: Fix WebCheckBox rendering.
* NEW: WebRadioButton is a new control that implements a radio button.
* NEW: WebTimer is a new virtual control that implements a timer on the
  browser client side.
* NEW: Implement read-write WebComboBox.
* NEW: WebControl now has Background and Foreground properties.
* BUG: Hidden controls do not refresh. A control is hidden if it is not
  visible or if one of its parent is not visible.
* NEW: Controls can render JavaScript code.
* NEW: WebTextBox now uses the 'gw-textbox' CSS class.


git-svn-id: svn://localhost/gambas/trunk@7477 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2015-11-14 23:22:10 +00:00

77 lines
1.3 KiB
Text
Executable file

#!/usr/bin/env gbs3
Private Const MAXITER As Integer = 50
Private Const LIMIT As Float = 4.0
Sub Mandelbrot(W As Integer, H As Integer)
Dim XMin As Float = -1.5
Dim YMin As Float = -1
Dim InvN As Float = 2.0 / W
Dim CheckNext As Boolean = True
Dim X, Y, K As Integer
Dim Cr, Ci, Zr, Zi, {Tr}, Ti, T As Float
For Y = 0 To H - 1
Ci = Y * InvN + YMin
For X = 0 To W - 1
Zr = 0
Zi = 0
{Tr} = 0
Ti = 0
Cr = X * InvN + XMin
If CheckNext Then
For K = 1 To MAXITER
Zi = 2.0 * Zr * Zi + Ci
Zr = {Tr} - Ti + Cr
Ti = Zi * Zi
{Tr} = Zr * Zr
T = {Tr} + Ti
If IsNan(T) Or If T > LIMIT Then Break
Next
If K > MAXITER Then
Print "1";
CheckNext = False
Else
Print "0";
Endif
Else
For K = 1 To MAXITER
Zi = 2.0 * Zr * Zi + Ci
Zr = {Tr} - Ti + Cr
Ti = Zi * Zi
{Tr} = Zr * Zr
Next
T = {Tr} + Ti
If IsNan(T) Or If T > LIMIT Then
Print "0";
CheckNext = True
Else
Print "1";
Endif
Endif
Next
Print
Next
End
Dim I As Integer
For I = 1 To 20
Mandelbrot(200, 200)
Next