(Arne Babenhauserheide)
2013-07-26: multithreaded magic multithreaded magic
diff --git a/get1.w b/get1.w new file mode 100755 --- /dev/null +++ b/get1.w @@ -0,0 +1,40 @@ +#!./wisp-multiline.sh +; !# + +; Mathematical magic: Always get one. +; +; Via http://www.liv.ac.uk/HPC/HTMLF90Course/HTMLF90CourseQuestionsnode18.html +; (actually for learning fortran) +; +; this is the wisp scheme version which I want to compare with the fortran version. + +use-modules + ice-9 format + ice-9 futures + ice-9 threads + +define : magic-threaded mutex futures integer + set! futures : append futures : list : future : with-mutex mutex : format #t "~10r\n" integer + if : not : = integer 1 + if : even? integer + magic-threaded mutex futures : / integer 2 + magic-threaded mutex futures : truncate : + 1 : / integer 3 + for-each touch futures + +define : magic integer + magic-threaded + make-mutex + list + . integer + +define : magic-simple integer + format #t "~30r\n" integer + if : not : = integer 1 + if : even? integer + magic-simple : / integer 2 + magic-simple : truncate : + 1 : / integer 3 + +display ";;; multithreaded magic ;;;\n" +magic 456189456156456196152615 +display ";;; simple magic ;;;\n" +magic-simple 456189456156456196152615