math-program / / [-] / [@cfg-math-program] / math-program.cfg


  

htm

<script> JSoutput = function(a) { var str = "[" if (typeof(a)=="object" && a.length) { for (var i=0; i < a.length; i++) if (typeof(a[i])=="object" && a[i].length) { str += (i==0?"":" ")+"[" for (var j=0; j<a[i].length; j++) str += a[i][j]+(j==a[i].length-1? "]"+(i==a.length-1?"]":",")+"\n":", "); } else str += a[i]+(i==a.length-1?"]":", "); } else str = a; return str; } write = function(str) { var outnode = document.getElementById("JSoutput"); outnode.value += JSoutput(str); } writeln = function(str) { if (!str) str=""; var outnode = document.getElementById("JSoutput"); outnode.value += JSoutput(str)+"\n"; } JSrun = function() { var str; var outnode = document.getElementById("JSoutput"); outnode.value = ""; d = new Date().getTime(); try { with (Math) { str = JSoutput(eval(document.getElementById("JSprogram").value)); } } catch(e) { str = e.name+" at line "+(e.lineNumber-56)+": "+e.message; } var tnode = document.getElementById("JStiming"); tnode.innerHTML = ""+(new Date().getTime()-d)/1000; outnode.value += str; } JSselect = function() { var id = document.getElementById("JSexamples").value; var str = document.getElementById(id).value; document.getElementById("JSprogram").value = str; JSrun(); } keyUp = function(event){ if (event.which==77 && event.ctrlKey) JSrun(); } random_list = function(n, r, s) { var a = []; for (var i = 0; i < n; i++) { a[i] = Math.floor(Math.random()*(s-r+1)) + r; } return a; } random_matrix = function(m, n, r, s) { var A = []; for (var i = 0; i < m; i++) { A[i] = []; for (var j = 0; j < n; j++) A[i][j] = Math.floor(Math.random()*(s-r+1)) + r; } return A; } factorial = function(n) { // simple version if (n <= 0) return 1; else return n*factorial(n-1); } fibonacci = function(n) { var a = 0; var b = 1; for (var i=0; i <script> function page() { JSrun(); } function slide() { JSrun(); } </script> Online JavaScript Interpreter: Programming anywhere, nothing to install, works in any browser
<center> <table width="100%"> <tr><td><b>type <a href=reference-js.html target=_top>javascript</a></b>: <select id="JSexamples" onchange="JSselect()"> <option value="maximum" selected>maximum element</option> <option value="randomlist">random list</option> <option value="linear">linear search</option> <option value="binary">binary search</option> <option value="bubble">bubble sort</option> <option value="base">convert base</option> <option value="powermod">modular exponentiation</option> <option value="gcd">greatest common divisor</option> <option value="factor">prime factorization</option> <option value="factorial">factorial recursion</option> <option value="fibonacci">fibonacci numbers</option> <option value="combinations">combinations</option> <option value="randommatrix">random matrix</option> <option value="matrixmult">matrix multiplication</option> </select> </td><td> <input type="button" value="run (Ctrl-m)" onclick="JSrun()"/> output     timing:<span id="JStiming"></span> s> <span id="JStiming"></span> s </td></tr> <tr><td width="50%" style="padding:1px"> <textarea id="JSprogram" style="height:5in; width:100%;" onkeyup="keyUp(event)"> // Find the maximum value in a list of numbers max = function(a) { var m = a[0]; for (var i = 1; i < a.length; i++) { writeln("m = "+m); if (m < a[i]) m = a[i]; } return m; } a = random_list(6,1,10); writeln(a); max(a); </textarea> </td> <td width="50%" style="padding:1px"> <textarea id="JSoutput" style="height:5in; width:100%"> </textarea></td> </tr> </table> </center> Note that this is dynamic code running locally on your machine. If

<textarea id="maximum" style="display:none"> // Find the maximum value in a list of numbers max = function(a) { var m = a[0]; for (var i = 1; i < a.length; i++) { writeln("m = "+m); if (m < a[i]) m = a[i]; } return m; } a = random_list(6,1,10); writeln(a); max(a); </textarea> <textarea id="randomlist" style="display:none"> // Construct a list of n random integers from r to s // random() returns a uniformly distributed random number in [0,1) random_list = function(n, r, s) { var a = []; for (var i = 0; i < n; i++) { a[i] = floor(random()*(s-r+1)) + r; } return a; } random_list(100,1,10) </textarea> <textarea id="linear" style="display:none"> // Find first occurrence of an element in a list of numbers linear_search = function(x,a) { var i = 0; while (i < a.length && x != a[i]) { writeln("i = "+i); i = i+1; } if (i < a.length) return i; else return "not found"; } a = random_list(6,1,10); writeln(a); linear_search(3,a); </textarea> <textarea id="binary" style="display:none"> // Find first occurrence of an element in a *sorted* list of numbers binary_search = function(x,a) { var i = 0; // i is the left endpoint of the search interval var j = a.length-1; // j is the right endpoint of the search interval while (i < j) { writeln("i="+i+", j="+j); m = floor((i+j)/2); if (x > a[m]) i = m+1; else j = m; } if (x == a[i]) return i; else return "not found"; } binary_search(3, [1,2,2,2,3,3,4,5,6,7,8]); </textarea> <textarea id="bubble" style="display:none"> // Sort a list of numbers using (inefficient) bubble sort bubble_sort = function(a) { var t; for (var i = 0; i < a.length-1; i++) for (var j = 0; j < a.length-i; j++) if (a[j] > a[j+1]) { writeln("swap "+a[j]+", "+a[j+1]); t = a[j]; a[j] = a[j+1]; a[j+1] = t; } return a; } a = random_list(6,1,10); writeln(a); bubble_sort(a); </textarea> <textarea id="base" style="display:none"> // Convert a positive base 10 integer to another base convert = function(n,b) { var m = []; while (n > 0) { m = [n % b].concat(m); n = floor(n/b); } return m; } convert(123456789,5); </textarea> <textarea id="powermod" style="display:none"> // Calculate the n-th power mod m efficiently powermod = function(b,n,m) { var x = 1; var p = b % m; while (n > 0) { if (n%2 == 1) x = (x*p) % m; p = (p*p) % m; n = floor(n/2); writeln("n = "+n+", x = "+x); } return x; } powermod(123456789, 543, 12345); </textarea> <textarea id="gcd" style="display:none"> // Find the greatest common divisor of two positive integers // using the Euclidean algorithm gcd = function(a,b) { var r; while (b > 0) { writeln("a = "+a+", b = "+b); r = a % b; // remainder a = b; b = r; } return a; } gcd(49,84); //gcd(fibonacci(15),fibonacci(14)); </textarea> <textarea id="factor" style="display:none"> // Find the prime factors of a positive integer (inefficiently) primefactors = function(n) { var p = 2; var a = []; while (p*p <= n) { if (n%p == 0) { n = floor(n/p); writeln(n*p+" = "+p+" * "+n); a = a.concat([p]); } else p = p+1; } return a.concat([n]); } primefactors(1234567891011); //primefactors(2*3*5*7*11*13 + 1); //primefactors(123456789123451); </textarea> <textarea id="factorial" style="display:none"> // Calculate the factorial of a natural number using recursion factorial = function(n) { // simple version if (n <= 0) return 1; else return n*factorial(n-1); } factorialw = function(n) { // write intermediate results var k; if (n <= 0) return 1; else { writeln("n = "+n); k = n*factorialw(n-1); writeln("k = "+k); return k; } } factorialw(10); </textarea> <textarea id="fibonacci" style="display:none"> // Calculate the n-th Fibonacci number iteratively fibonacci = function(n) { var a = 0; var b = 1; for (var i=0; i<n; i++) { write(a+" "); b = a+b; a = b-a; } writeln("\n"); return a; } fibonacci(50); <textarea id="combinations" style="display:none"> // Calculate the binomial coefficient C(n,k) C = function(n,k) { var c = 1; for (var i=1; i<=k; i++) { writeln("c = "+c); c = c*(n-k+i)/i; } return c; } C(50,20); </textarea> <textarea id="randommatrix" style="display:none"> // Construct a matrix of m x n random integers from r to s random_matrix = function(m, n, r, s) { var A = []; for (var i = 0; i < m; i++) { A[i] = []; for (var j = 0; j < n; j++) A[i][j] = Math.floor(Math.random()*(s-r+1)) + r; } return A; } random_matrix(3,3,0,4) </textarea> <textarea id="matrixmult" style="display:none"> // multiply two matrices mult = function(A,B) { var C = []; for (var i = 0; i < A.length; i++) { C[i] = []; for (var j = 0; j < B[0].length; j++) { C[i][j] = 0; for (var k = 0; k < A[0].length; k++) C[i][j] = C[i][j] + A[i][k]*B[k][j]; } } return C; } A = random_matrix(3,3,0,4); writeln(A) B = random_matrix(3,3,0,4); writeln(B) mult(A,B) </textarea> <script> JSrun(); </script>