aboutsummaryrefslogtreecommitdiff
path: root/examples/mandelbrot.sloth
diff options
context:
space:
mode:
Diffstat (limited to 'examples/mandelbrot.sloth')
-rw-r--r--examples/mandelbrot.sloth67
1 files changed, 35 insertions, 32 deletions
diff --git a/examples/mandelbrot.sloth b/examples/mandelbrot.sloth
index 391e86e..90c7f1c 100644
--- a/examples/mandelbrot.sloth
+++ b/examples/mandelbrot.sloth
@@ -1,36 +1,39 @@
-#foreign fn print(str: String);
-#foreign fn printint(i: Int);
-#foreign fn as_int(x: Float) Int;
+fn main() Int{
+ # Configure
+ var size: Float = 1000.0;
+ var maxVal: Float = 4.0;
+ var maxIter: Float = 50.0;
+ var plane: Float = 4.0;
-#foreign fn termpos(x: Int, y: Int) Void;
+ # loop over coordinates
+ var x: Float = 0.0;
+ while x < size {
+ var y: Float = 0.0;
+ while y < size {
+ # Initialize
+ var cReal: Float = (x * plane / size) - 2.0;
+ var cImg: Float = (y * plane / size) - 2.0;
+ var zReal: Float = 0.0;
+ var zImg: Float = 0.0;
+ var count: Float = 0.0;
-fn main() Int{
- var size: Float = 1000.0;
- var maxVal: Float = 4.0;
- var maxIter: Float = 50.0;
- var plane: Float = 4.0;
- var x: Float = 0.0;
- while x < size {
- var y: Float = 0.0;
- while y < size {
- var cReal: Float = (x * plane / size) - 2.0;
- var cImg: Float = (y * plane / size) - 2.0;
- var zReal: Float = 0.0;
- var zImg: Float = 0.0;
- var count: Float = 0.0;
- while (zReal * zReal + zImg * zImg) <= maxVal && count < maxIter {
- var temp: Float = (zReal * zReal) - (zImg * zImg) + cReal;
- zImg = 2.0 * zReal * zImg + cImg;
- zReal = temp;
- count = count + 1.0;
- }
- if as_int(count) == as_int(maxIter) {
- termpos(as_int(x), as_int(y));
- print("*");
- }
- y = y + 1.0;
- }
- x = x + 1.0;
+ # Calculate
+ while (zReal * zReal + zImg * zImg) <= maxVal && count < maxIter {
+ var temp: Float = (zReal * zReal) - (zImg * zImg) + cReal;
+ zImg = 2.0 * zReal * zImg + cImg;
+ zReal = temp;
+ count = count + 1.0;
+ }
+
+ # Check
+ if as_int(count) == as_int(maxIter) {
+ termpos(as_int(x), as_int(y));
+ print("█");
+ }
+
+ y = y + 1.0;
}
- return 0;
+ x = x + 1.0;
+ }
+ return 0;
}