Advertisement
Guest User

Untitled

a guest
Jun 16th, 2019
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 18.14 KB | None | 0 0
  1. #lang racket/base
  2. (#%module-begin
  3.  
  4. (#%require racket/math)
  5. (#%require racket/list racket/flonum racket/unsafe/ops)
  6. (define (check-list v) (unless (list? v) (error 'check-list)))
  7. (define-values (*iteration-limit*) '50)
  8.  
  9. (define-values
  10. (mandel)
  11. (lambda (c)
  12. (let-values (((op)
  13. (letrec-values (((mandel-iter)
  14. (#%plain-lambda
  15. (unboxed-real-6 unboxed-imag-7 i)
  16. (let-values (((z) 'check-syntax-binding))
  17. (if (let-values (((or-part)
  18. (#%app
  19. >=
  20. i
  21. *iteration-limit*)))
  22. (if or-part
  23. or-part
  24. (#%app
  25. fl>
  26. (let-values ()
  27. (let-values (((r)
  28. (#%app
  29. flabs
  30. unboxed-real-6)))
  31. (let-values (((i)
  32. (#%app
  33. flabs
  34. unboxed-imag-7)))
  35. (if (#%app zero? i)
  36. r
  37. (if (#%app
  38. fl<
  39. i
  40. r)
  41. (let-values (((q)
  42. (#%app
  43. fl/
  44. i
  45. r)))
  46. (#%app
  47. fl*
  48. r
  49. (#%app
  50. flsqrt
  51. (#%app
  52. fl+
  53. '1.0
  54. (#%app
  55. fl*
  56. q
  57. q)))))
  58. (let-values (((q)
  59. (#%app
  60. fl/
  61. r
  62. i)))
  63. (#%app
  64. fl*
  65. i
  66. (#%app
  67. flsqrt
  68. (#%app
  69. fl+
  70. '1.0
  71. (#%app
  72. fl*
  73. q
  74. q))))))))))
  75. '2.0)))
  76. i
  77. (let-values (((g8) c))
  78. (let-values (((unboxed-real-9)
  79. (#%app
  80. flreal-part
  81. g8)))
  82. (let-values (((unboxed-imag-10)
  83. (#%app
  84. flimag-part
  85. g8)))
  86. (let-values (((g11)
  87. (#%app
  88. sqr
  89. (#%app
  90. unsafe-make-flrectangular
  91. unboxed-real-6
  92. unboxed-imag-7))))
  93. (let-values (((unboxed-real-12)
  94. (#%app
  95. flreal-part
  96. g11)))
  97. (let-values (((unboxed-imag-13)
  98. (#%app
  99. flimag-part
  100. g11)))
  101. (let-values (((unboxed-real-14)
  102. (#%app
  103. fl+
  104. (#%app
  105. real->double-flonum
  106. unboxed-real-9)
  107. unboxed-real-12)))
  108. (let-values (((unboxed-imag-15)
  109. (#%app
  110. fl+
  111. (#%app
  112. real->double-flonum
  113. unboxed-imag-10)
  114. unboxed-imag-13)))
  115. (let-values (((boxed-binding16)
  116. (#%app
  117. +
  118. i
  119. '1)))
  120. (#%app
  121. mandel-iter
  122. unboxed-real-14
  123. unboxed-imag-15
  124. boxed-binding16)))))))))))))))
  125. mandel-iter)))
  126. (let-values (((unboxed-real-3) '0.0))
  127. (let-values (((unboxed-imag-4) '0.0))
  128. (let-values (((boxed-binding5) '0))
  129. (#%app op unboxed-real-3 unboxed-imag-4 boxed-binding5)))))))
  130.  
  131. (define-values
  132. (brot)
  133. (lambda (xs ys)
  134. (#%app
  135. reverse
  136. (let-values (((lst) ys))
  137. (if (#%app variable-reference-from-unsafe? (#%variable-reference))
  138. (#%app void)
  139. (let-values () (#%app check-list lst)))
  140. (#%app
  141. (letrec-values (((for-loop)
  142. (lambda (acc lst)
  143. (if (#%app pair? lst)
  144. (let-values (((y) (#%app car lst)))
  145. (let-values (((rest) (#%app cdr lst)))
  146. (if (begin '#t '#t)
  147. (let-values (((acc)
  148. (let-values (((acc) acc))
  149. (if (begin '#t '#t)
  150. (let-values (((lst) xs))
  151. (if (#%app
  152. variable-reference-from-unsafe?
  153. (#%variable-reference))
  154. (#%app void)
  155. (let-values ()
  156. (#%app
  157. check-list
  158. lst)))
  159. (#%app
  160. (letrec-values (((for-loop)
  161. (lambda (acc
  162. lst)
  163. (if (#%app
  164. pair?
  165. lst)
  166. (let-values (((x)
  167. (#%app
  168. car
  169. lst)))
  170. (let-values (((rest)
  171. (#%app
  172. cdr
  173. lst)))
  174. (if (begin
  175. '#t
  176. '#t)
  177. (let-values (((acc)
  178. (let-values (((acc)
  179. acc))
  180. (if (begin
  181. '#t
  182. '#t)
  183. (let-values (((acc)
  184. acc))
  185. (let-values (((acc)
  186. (let-values ()
  187. (let-values (((new)
  188. (let-values ()
  189. (#%app
  190. mandel
  191. (#%app
  192. make-flrectangular
  193. x
  194. y)))))
  195. (#%app
  196. (lambda (x
  197. y)
  198. (#%app
  199. cons
  200. y
  201. x))
  202. acc
  203. new)))))
  204. (#%app
  205. values
  206. acc)))
  207. acc))))
  208. (if (begin
  209. (if (begin
  210. '#t
  211. '#t)
  212. (#%app
  213. not
  214. '#f)
  215. '#f)
  216. '#t)
  217. (#%app
  218. for-loop
  219. acc
  220. rest)
  221. acc))
  222. acc)))
  223. acc))))
  224. for-loop)
  225. acc
  226. lst))
  227. acc))))
  228. (if (begin
  229. (if (begin '#t '#t)
  230. (#%app not '#f)
  231. '#f)
  232. '#t)
  233. (#%app for-loop acc rest)
  234. acc))
  235. acc)))
  236. acc))))
  237. for-loop)
  238. null
  239. lst)))))
  240.  
  241. (define-values
  242. (make-ticks)
  243. (lambda (min max resolution)
  244. (#%app
  245. range
  246. min
  247. max
  248. (#%app / (#%app fl- max min) resolution))))
  249. (define-values (*xs*) (#%app make-ticks '-1.5 '0.5 '300))
  250. (define-values (*ys*) (#%app make-ticks '-1.0 '1.0 '300))
  251. (#%app void (#%app brot *xs* *ys*))
  252. (#%provide)
  253. (#%app void))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement