New Controllers added. Added Charts
This commit is contained in:
86
Laravel/vendor/jlawrence/eos/src/AdvancedFunctions.php
vendored
Normal file
86
Laravel/vendor/jlawrence/eos/src/AdvancedFunctions.php
vendored
Normal file
@@ -0,0 +1,86 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by: Jon Lawrence on 2015-07-13 8:42 AM
|
||||
*/
|
||||
|
||||
namespace jlawrence\eos;
|
||||
|
||||
|
||||
class AdvancedFunctions
|
||||
{
|
||||
|
||||
/**
|
||||
* Create a list for the parser of 'expressiveFunction' => 'class::function'
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public static function map()
|
||||
{
|
||||
$ret = array(
|
||||
'sum' => __NAMESPACE__ .'\AdvancedFunctions::sum',
|
||||
'log' => __NAMESPACE__ .'\AdvancedFunctions::log'
|
||||
);
|
||||
|
||||
return $ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* Summation function
|
||||
*
|
||||
* Will take an equation and run it through a summation algorithm. All parts
|
||||
* of the input can be in equation form, so the start and stops can have
|
||||
* equations to determine what they should be using the globally inputted
|
||||
* variables from the user.
|
||||
*
|
||||
* @param string $input String in the form of "equation, start, stop"
|
||||
* @param array $vars Array of variables used for solving the current equation.
|
||||
* @return float The summation of the equation
|
||||
*/
|
||||
public static function sum($input, $vars)
|
||||
{
|
||||
//remove whitespace
|
||||
$input = preg_replace("/\s/", "", $input);
|
||||
//split in to parts
|
||||
list($eq, $start, $stop) = explode(",", $input);
|
||||
$ret = 0;
|
||||
//make sure there's a variable, or return equation as-is
|
||||
if((Parser::solveIF($eq,0)) == preg_replace("/[\(\)]/", "", $eq)) {
|
||||
return $eq;
|
||||
}
|
||||
$start = Parser::solveIF($start, $vars);
|
||||
$stop = Parser::solveIF($stop, $vars);
|
||||
for($i=$start; $i <= $stop; $i++) {
|
||||
$ret += Parser::solveIF($eq, $i);
|
||||
}
|
||||
|
||||
return $ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* Log function for all non-natural logs. Defaults to base 10
|
||||
*
|
||||
* @param $input
|
||||
* @param array $vars Variable replacement
|
||||
* @return float
|
||||
* @throws \Exception
|
||||
*/
|
||||
public static function log($input, $vars)
|
||||
{
|
||||
$base = 10;
|
||||
if(stripos($input, ",")) {
|
||||
list($eq, $base) = explode(",", $input);
|
||||
} else {
|
||||
$eq = $input;
|
||||
}
|
||||
//Make sure no functions or operators are hidden inside
|
||||
$sc = Parser::solveIF($eq, $vars);
|
||||
if(10 != $base) {
|
||||
$base = Parser::solveIF($base, $vars);
|
||||
}
|
||||
$ans = log($sc, $base);
|
||||
if(is_nan($ans) || is_infinite($ans)) {
|
||||
throw new \Exception("Result of 'log({$eq}, {$base}) = {$ans}' is either infinite or a non-number in ". Parser::$inFix, Math::E_NAN);
|
||||
}
|
||||
return $ans;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user