shithub: mc

Download patch

ref: 37e8b94b73dde2743b74e642b8d7cba7e2775622
parent: 1457588b491615b8f1634a39419db9e7404c398f
author: Ori Bernstein <[email protected]>
date: Wed Sep 17 22:26:21 EDT 2014

Add a mandelbrot test.

--- /dev/null
+++ b/test/data/mandelbrot-expected
@@ -1,0 +1,79 @@
+                                       *                                      
+                                       *                                      
+                                       *                                      
+                                       *                                      
+                                       *                                      
+                                      ***                                     
+                                     *****                                    
+                                     *****                                    
+                                      ***                                     
+                                       *                                      
+                                   *********                                  
+                                 *************                                
+                                ***************                               
+                             *********************                            
+                             *********************                            
+                              *******************                             
+                              *******************                             
+                              *******************                             
+                              *******************                             
+                            ***********************                           
+                              *******************                             
+                              *******************                             
+                             *********************                            
+                              *******************                             
+                              *******************                             
+                               *****************                              
+                                ***************                               
+                                 *************                                
+                                   *********                                  
+                                       *                                      
+                                ***************                               
+                            ***********************                           
+                         * ************************* *                        
+                         *****************************                        
+                      * ******************************* *                     
+                       *********************************                      
+                      ***********************************                     
+                    ***************************************                   
+               *** ***************************************** ***              
+               *************************************************              
+                ***********************************************               
+                 *********************************************                
+                 *********************************************                
+                ***********************************************               
+                ***********************************************               
+              ***************************************************             
+               *************************************************              
+               *************************************************              
+              ***************************************************             
+              ***************************************************             
+         *    ***************************************************    *        
+       *****  ***************************************************  *****      
+       ****** *************************************************** ******      
+      ******* *************************************************** *******     
+    ***********************************************************************   
+    ********* *************************************************** *********   
+       ****** *************************************************** ******      
+       *****  ***************************************************  *****      
+              ***************************************************             
+              ***************************************************             
+              ***************************************************             
+              ***************************************************             
+               *************************************************              
+               *************************************************              
+              ***************************************************             
+                ***********************************************               
+                ***********************************************               
+                  *******************************************                 
+                   *****************************************                  
+                 *********************************************                
+                **** ****************** ****************** ****               
+                 ***  ****************   ****************  ***                
+                  *    **************     **************    *                 
+                         ***********       ***********                        
+                         **  *****           *****  **                        
+                          *   *                 *   *                         
+                                                                              
+                                                                              
+
--- /dev/null
+++ b/test/mandelbrot.myr
@@ -1,0 +1,53 @@
+use std
+use bio
+
+const Bailout : flt64 = 16.0
+const Maxiter = 1000
+
+const mandelbrot = {x, y
+	var cr, ci, zr, zi
+	var tmp, zr2, zi2
+	var i : int
+
+	cr = y - 0.5
+	ci = x
+	zr = 0.0
+	zi = 0.0
+
+	i = 0
+
+	while true
+		i++
+		tmp  = zr * zi
+		zr2 = zr * zr
+		zi2 = zi * zi
+		zr = zr2 - zi2 + cr
+		zi = tmp + tmp + ci
+		if zi2 + zr2 > Bailout
+			-> i
+		;;
+		if i > Maxiter
+			-> 0
+		;;
+	;;
+}
+
+const main = {args : byte[:][:]
+	var x : flt64, y : flt64, i
+	var f
+
+	f = bio.mkfile(1, bio.Wr)
+	for y = -39.0; y < 39.0; y = y + 1.0
+		for x = -39.0; x < 39.0; x = x + 1.0
+			i = mandelbrot(x/40.0, y/40.0)
+			if i == 0
+				bio.write(f, "*")
+			else
+				bio.write(f, " ")
+			;;
+		;;
+		bio.write(f, "\n")
+	;;
+	bio.write(f, "\n")
+	bio.close(f)
+}
--- a/test/tests
+++ b/test/tests
@@ -71,6 +71,7 @@
 B fib		E	21
 B basicfloat	E	84
 B sqrt		E	4
+B mandelbrot	C
 B log-and	E	0
 B log-or	E	1
 B str		E	102