rendered paste body#!/usr/bin/php<?php /* * * Simple PHPCalculator v3.1 * <josh@thenullbyte.org> * * functions added: * -ack, -nth_rt, -rat_rt * */ function matrix($linear){ $linear = str_replace(',','', $linear); $xlimit = $linear[0] - 1; $ylimit = $linear[1] - 1; $z = 2; for($x=0;$x<=$xlimit;++$x){ for($y=0;$y<=$ylimit;++$y){ $matrix[$x][$y] = $linear[$z]; ++$z; } } return $matrix; } function Ack($m, $n){ if($m == 0) return $n + 1; if($n == 0) return Ack($m - 1, 1); return Ack($m - 1, Ack($m, ($n - 1))); } function calc($argc, $argv) { $maxArgs = $argc - 1; for($x=1;$x<=$maxArgs || $x==1;++$x) { switch($argv[$x]){ case "-a": return $argv[$x + 1] + $argv[$x + 2]; case "-s": return $argv[$x + 1] - $argv[$x + 2]; case "-m": return $argv[$x + 1] * $argv[$x + 2]; case "-d": return $argv[$x + 1] / $argv[$x + 2]; case "-%": return ($argv[$x + 1] / $argv[$x + 2]) * 100 . "%"; case "-^": return pow($argv[$x + 1], $argv[$x + 2]); case "-sqrt": return sqrt($argv[$x + 1]); case "-cbrt": return pow($argv[$x + 1], 1/3); case "-nth_rt": return pow($argv[$x + 1], 1/$argv[$x + 2]); case "-rat_rt": return pow($argv[$x + 1], $argv[$x + 2]/$argv[$x + 3]); case "-!": function f($n) { if ($n < 2) { $n = 1;} else { for($i = $n - 1; $i > 1; $i--) { $n = $n * $i; } } return $n; } $results = f($argv[$x + 1]); return $results; case "-area-tri": return (($argv[$x + 1] * $argv[$x + 2]) / 2). "^2 "; case "-area-circ": return (M_PI * pow($argv[$x + 1], 2)). "^2"; case "-circ-circ": return (M_PI * ($argv[$x + 1] * 2)); case "-vol-sph": return ((4 / 3) * (M_PI * (pow($argv[$x + 1], 3)))). "^3 "; case "-sa-sph": return (4 * (M_PI * (pow($argv[$x + 1], 2)))). "^2 "; case "-fib-term": return ((pow(((1 + sqrt(5)) / 2), $argv[$x + 1]) - pow(1 - ((1 + sqrt(5)) / 2), $argv[$x + 1])) / sqrt(5)); case "-fib-seq": while($argv[$x + 1] <= $argv[$x + 2]) { $u .= (pow(((1 + sqrt(5)) / 2), $argv[$x + 1]) - pow(1 - ((1 + sqrt(5)) / 2), $argv[$x + 1])) / sqrt(5). ", "; ++$argv[$x + 1]; } return $u; case "-detA-2x2": function detA($matrix){ $ad = $matrix[0][0] * $matrix[1][1]; $bc = $matrix[0][1] * $matrix[1][0]; $DetA = $ad - $bc; return $DetA; } return detA(matrix($argv[$x + 1])); case "-detA-3x3": function detA($matrix){ $aei = $matrix[0][0] * ($matrix[1][1] * $matrix[2][2]); $bfg = $matrix[0][1] * ($matrix[1][2] * $matrix[2][0]); $cdh = $matrix[0][2] * ($matrix[1][0] * $matrix[2][1]); $gec = $matrix[2][0] * ($matrix[1][1] * $matrix[0][2]); $hfa = $matrix[2][1] * ($matrix[1][2] * $matrix[0][0]); $idb = $matrix[2][2] * ($matrix[1][0] * $matrix[0][1]); $detA = ($aei + $bfg + $cdh) - ($gec + $hfa + $idb); return $detA; } return detA(matrix($argv[$x + 1])); case "-ack": return Ack($argv[$x + 1], $argv[$x + 2]); default: return "Do it right, moron.\n\n"; } } } $answer = calc($argc, $argv); echo "The Answer is: " . $answer . "\n\n";?>