All pastes #907050 Raw Edit

PHPCalc

public php v1 · immutable
·published 2008-02-17 05:20 UTC
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";?>