#!/usr/bin/newlisp

;; Mandelbrot set f(z)=z^2+c where z is complex

(print "Content-Type: text/html\r\n\r\n")

(println [text]
<html>
<FONT FACE ="Helvetica, Arial, sans-serif">
<A HREF="http://newlisp.org">Home</A>&nbsp;|
<A HREF="http:syntax.cgi?mandelbrot.txt">Source</A>
</FONT>
<CENTER>
[/text])


(set ' colors '(
  "800000" "800080" "8000FF" "808000" 
  "808080" "8080FF" "80FF00" "80FF80" 
  "80FFFF" "FF0000" "FF0080" "FF00FF"
  "FF8000" "FF8080" "FF80FF" "FFFF00"))

(define (mandelbrot rows cols)
  (set 's (div 5 cols)
       'r-half (/ rows 2) 
       'c-half (/ cols 2))
  (println "<table bgcolor=#f0f0f0>")
  (dotimes (y rows)
    (set 'imc (mul s (sub y r-half)))
    (print "<tr>")

    (dotimes (x cols)
      (set 'rec (sub (mul s (sub x c-half)) 0.45)
           're rec 
           'im imc
           're2 (mul re re) 
           'im2 (mul im im)
           'col cols)
      (while (and ( < (add re2 im2) 4.0) (> col 0))
        (set 'im (add (mul re im 2) imc)
             're (add (sub re2 im2) rec)
             're2 (mul re re) 
             'im2 (mul im im))
        (dec col)) ; changed for 9.9.92
      (if (= col 0)
        (print "<td bgcolor=#000000>&nbsp;</td>")
        (print "<td bgcolor=#" (colors (% (+ col 4) 16)) ">&nbsp;</td>")))

    (println "</tr>"))

  (println "</table>"))

(mandelbrot 25 80)

(print " </CENTER> <br><center><h4>created by newLISP v."
       (sys-info -2) 
       "</h4></center></html>")
(exit)




syntax highlighting with newLISP and syntax.cgi