diff --git a/extra/benchmark/mandel/colors/colors.factor b/extra/benchmark/mandel/colors/colors.factor index 848fbae01e..7bbb25a47d 100644 --- a/extra/benchmark/mandel/colors/colors.factor +++ b/extra/benchmark/mandel/colors/colors.factor @@ -16,4 +16,4 @@ IN: benchmark.mandel.colors ] with map ; : color-map ( -- map ) - nb-iter max-color min ; foldable + max-iterations max-color min ; foldable diff --git a/extra/benchmark/mandel/mandel.factor b/extra/benchmark/mandel/mandel.factor index a40b123ed3..e87765499b 100755 --- a/extra/benchmark/mandel/mandel.factor +++ b/extra/benchmark/mandel/mandel.factor @@ -1,16 +1,11 @@ +! Copyright (C) 2005, 2008 Slava Pestov. +! See http://factorcode.org/license.txt for BSD license. USING: arrays io kernel math math.functions math.order -math.parser sequences locals byte-arrays byte-vectors io.files -io.encodings.binary benchmark.mandel.params +math.parser sequences byte-arrays byte-vectors io.files +io.encodings.binary fry namespaces benchmark.mandel.params benchmark.mandel.colors ; IN: benchmark.mandel -: iter ( c z nb-iter -- x ) - dup 0 <= [ 2nip ] [ - over absq 4.0 >= [ 2nip ] [ - >r sq dupd + r> 1- iter - ] if - ] if ; inline recursive - : x-inc width 200000 zoom-fact * / ; inline : y-inc height 150000 zoom-fact * / ; inline @@ -19,27 +14,27 @@ IN: benchmark.mandel [ y-inc * center imaginary-part y-inc height 2 / * - + >float ] bi* rect> ; inline -:: render ( accum -- ) - height [ - width swap [ - c C{ 0.0 0.0 } nb-iter iter dup zero? - [ drop B{ 0 0 0 } ] [ color-map [ length mod ] keep nth ] if - accum push-all - ] curry each - ] each ; inline +: count-iterations ( z max-iterations step-quot test-quot -- #iters ) + '[ drop @ dup @ ] find-last-integer nip ; inline -:: ppm-header ( accum -- ) - "P6\n" accum push-all - width number>string accum push-all - " " accum push-all - height number>string accum push-all - "\n255\n" accum push-all ; inline +: pixel ( c -- iterations ) + [ C{ 0.0 0.0 } max-iterations ] dip + '[ sq , + ] [ absq 4.0 >= ] count-iterations ; inline + +: color ( iterations -- color ) + [ color-map [ length mod ] keep nth ] [ B{ 0 0 0 } ] if* ; inline + +: render ( -- ) + height [ width swap '[ , c pixel color % ] each ] each ; inline + +: ppm-header ( -- ) + "P6\n" % width # " " % height # "\n255\n" % ; inline : buf-size ( -- n ) width height * 3 * 100 + ; inline : mandel ( -- data ) buf-size - [ ppm-header ] [ render ] [ B{ } like ] tri ; + [ building [ ppm-header render ] with-variable ] [ B{ } like ] bi ; : mandel-main ( -- ) mandel "mandel.ppm" temp-file binary set-file-contents ; diff --git a/extra/benchmark/mandel/params/params.factor b/extra/benchmark/mandel/params/params.factor index 3fcfe1d3ef..c40d3c1f2d 100644 --- a/extra/benchmark/mandel/params/params.factor +++ b/extra/benchmark/mandel/params/params.factor @@ -1,8 +1,8 @@ IN: benchmark.mandel.params -: max-color 360 ; inline -: zoom-fact 0.8 ; inline -: width 640 ; inline -: height 480 ; inline -: nb-iter 40 ; inline -: center -0.65 ; inline +: max-color 360 ; inline +: zoom-fact 0.8 ; inline +: width 640 ; inline +: height 480 ; inline +: max-iterations 40 ; inline +: center -0.65 ; inline