diff options
-rw-r--r-- | test/js/index.html | 6 | ||||
-rw-r--r-- | test/js/js-fractal.html | 41 | ||||
-rw-r--r-- | test/js/js-primes.html | 66 |
3 files changed, 113 insertions, 0 deletions
diff --git a/test/js/index.html b/test/js/index.html index f5420ed3c..79f5bbca3 100644 --- a/test/js/index.html +++ b/test/js/index.html @@ -6,6 +6,12 @@ <body> <h1>JavaScript Tests</h1> +<h2>General</h2> +<ul> +<li><a href="js-fractal.html">Fractal</a></li> +<li><a href="js-primes.html">Primes</a></li> +</ul> + <h2>Core</h2> <ul> <li><a href="core.recursion.html">Infinite Recursion</a></li> diff --git a/test/js/js-fractal.html b/test/js/js-fractal.html new file mode 100644 index 000000000..d9947e326 --- /dev/null +++ b/test/js/js-fractal.html @@ -0,0 +1,41 @@ +<!DOCTYPE html> +<html> +<head> +<title>JavaScript mandelbrot set</title> +<style>pre {font-size:8pt;}</style> +</head> +<body> +<h1>JavaScript generated mandelbrot set</h1> +<script> +function show_mandelbrot() +{ + var gradation = " .,:;=|i+IhHOE#$ "; + document.writeln("<pre>"); + for(i = -1.2; i <= 1.2; i += 0.04) { + for(r = -2; r <= 1; r += 0.02) { + var zr = r; + var zi = i; + var n = 0; + for(; n < 16; n++) { + var zr2 = zr * zr; + var zi2 = zi * zi; + if((zr2 + zi2) > 4) { + break; + } + zi = 2 * zr * zi + i; + zr = zr2 - zi2 + r; + } + document.write(gradation.charAt(n)); + } + document.write("\n"); + } + document.writeln("</pre>"); + document.close(); +} +show_mandelbrot(); +</script> +<noscript> +JavaScript not enabled. +</noscript> +</body> +</html> diff --git a/test/js/js-primes.html b/test/js/js-primes.html new file mode 100644 index 000000000..876694a4c --- /dev/null +++ b/test/js/js-primes.html @@ -0,0 +1,66 @@ +<!DOCTYPE html> +<html> +<head> +<title>How many bit-reversed primes are prime?</title> +</head> +<body> +<pre> +<script> +var start = new Date().getTime(); + +// Add the lpad method to Strings, for adding left padding +String.prototype.lpad = function(padString, length) { + var str = this; + while (str.length < length) + str = padString + str; + return str; +} + +// Naive prime checker +function is_prime(n) +{ + for (var i = 2; i <= n/2; i++) { + if (n % i === 0) { + return false; + } + } + return true; +} + +// Bit reversal +function bit_reverse(num) +{ + var rev = 0; + while (num > 0) { + rev <<= 1; + rev |= (num & 1); + num >>= 1; + } + return rev; +} + +for (var num = 1; num < 10000; num++) { + var rev = bit_reverse(num); + var num_prime = is_prime(num); + var rev_prime = is_prime(rev); + + document.write(num.toString().lpad(" ", 7) + " "); + document.write(num_prime ? "Prime" : " "); + document.write(" "); + + document.write(rev.toString().lpad(" ", 7) + " "); + document.write(rev_prime ? "Prime" : " "); + document.write(" "); + + document.write(num_prime && rev_prime ? "(both)" : ""); + document.write("\n"); +} + +var end = new Date().getTime(); +var time = end - start; +document.write('Execution time: ' + time + '\n'); + +</script> +</pre> +</body> +</html> |