Envelope case validation and fix return values
git-svn-id: https://phpexcel.svn.codeplex.com/svn/trunk@91574 2327b42d-5241-43d6-9e2a-de5ac946f064
This commit is contained in:
parent
92461ae067
commit
5193c6c35d
|
@ -97,40 +97,58 @@ class PHPExcel_Calculation_MathTrig {
|
|||
* @param float $yCoordinate The y-coordinate of the point.
|
||||
* @return float The inverse tangent of the specified x- and y-coordinates.
|
||||
*/
|
||||
public static function ATAN2($xCoordinate, $yCoordinate) {
|
||||
$xCoordinate = (float) PHPExcel_Calculation_Functions::flattenSingleValue($xCoordinate);
|
||||
$yCoordinate = (float) PHPExcel_Calculation_Functions::flattenSingleValue($yCoordinate);
|
||||
public static function ATAN2($xCoordinate = NULL, $yCoordinate = NULL) {
|
||||
$xCoordinate = PHPExcel_Calculation_Functions::flattenSingleValue($xCoordinate);
|
||||
$yCoordinate = PHPExcel_Calculation_Functions::flattenSingleValue($yCoordinate);
|
||||
|
||||
$xCoordinate = ($xCoordinate !== NULL) ? $xCoordinate : 0.0;
|
||||
$yCoordinate = ($yCoordinate !== NULL) ? $yCoordinate : 0.0;
|
||||
|
||||
if (((is_numeric($xCoordinate)) || (is_bool($xCoordinate))) &&
|
||||
((is_numeric($yCoordinate))) || (is_bool($yCoordinate))) {
|
||||
$xCoordinate = (float) $xCoordinate;
|
||||
$yCoordinate = (float) $yCoordinate;
|
||||
|
||||
if (($xCoordinate == 0) && ($yCoordinate == 0)) {
|
||||
return PHPExcel_Calculation_Functions::DIV0();
|
||||
}
|
||||
|
||||
return atan2($yCoordinate, $xCoordinate);
|
||||
} // function REVERSE_ATAN2()
|
||||
}
|
||||
return PHPExcel_Calculation_Functions::VALUE();
|
||||
} // function ATAN2()
|
||||
|
||||
|
||||
/**
|
||||
* CEILING
|
||||
*
|
||||
* Returns number rounded up, away from zero, to the nearest multiple of significance.
|
||||
* For example, if you want to avoid using pennies in your prices and your product is
|
||||
* priced at $4.42, use the formula =CEILING(4.42,0.05) to round prices up to the
|
||||
* nearest nickel.
|
||||
*
|
||||
* @param float $number Number to round
|
||||
* @param float $significance Significance
|
||||
* Excel Function:
|
||||
* CEILING(number[,significance])
|
||||
*
|
||||
* @access public
|
||||
* @category Mathematical and Trigonometric Functions
|
||||
* @param float $number The number you want to round.
|
||||
* @param float $significance The multiple to which you want to round.
|
||||
* @return float Rounded Number
|
||||
*/
|
||||
public static function CEILING($number,$significance=null) {
|
||||
public static function CEILING($number, $significance = NULL) {
|
||||
$number = PHPExcel_Calculation_Functions::flattenSingleValue($number);
|
||||
$significance = PHPExcel_Calculation_Functions::flattenSingleValue($significance);
|
||||
|
||||
if ((is_null($significance)) && (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_GNUMERIC)) {
|
||||
if ((is_null($significance)) &&
|
||||
(PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_GNUMERIC)) {
|
||||
$significance = $number/abs($number);
|
||||
}
|
||||
|
||||
if ((is_numeric($number)) && (is_numeric($significance))) {
|
||||
if (self::SIGN($number) == self::SIGN($significance)) {
|
||||
if ($significance == 0.0) {
|
||||
return 0;
|
||||
}
|
||||
return 0.0;
|
||||
} elseif (self::SIGN($number) == self::SIGN($significance)) {
|
||||
return ceil($number / $significance) * $significance;
|
||||
} else {
|
||||
return PHPExcel_Calculation_Functions::NaN();
|
||||
|
@ -146,6 +164,11 @@ class PHPExcel_Calculation_MathTrig {
|
|||
* Returns the number of combinations for a given number of items. Use COMBIN to
|
||||
* determine the total possible number of groups for a given number of items.
|
||||
*
|
||||
* Excel Function:
|
||||
* COMBIN(numObjs,numInSet)
|
||||
*
|
||||
* @access public
|
||||
* @category Mathematical and Trigonometric Functions
|
||||
* @param int $numObjs Number of different objects
|
||||
* @param int $numInSet Number of objects in each combination
|
||||
* @return int Number of combinations
|
||||
|
@ -170,7 +193,16 @@ class PHPExcel_Calculation_MathTrig {
|
|||
* EVEN
|
||||
*
|
||||
* Returns number rounded up to the nearest even integer.
|
||||
* You can use this function for processing items that come in twos. For example,
|
||||
* a packing crate accepts rows of one or two items. The crate is full when
|
||||
* the number of items, rounded up to the nearest two, matches the crate's
|
||||
* capacity.
|
||||
*
|
||||
* Excel Function:
|
||||
* EVEN(number)
|
||||
*
|
||||
* @access public
|
||||
* @category Mathematical and Trigonometric Functions
|
||||
* @param float $number Number to round
|
||||
* @return int Rounded Number
|
||||
*/
|
||||
|
@ -195,7 +227,13 @@ class PHPExcel_Calculation_MathTrig {
|
|||
* FACT
|
||||
*
|
||||
* Returns the factorial of a number.
|
||||
* The factorial of a number is equal to 1*2*3*...* number.
|
||||
*
|
||||
* Excel Function:
|
||||
* FACT(factVal)
|
||||
*
|
||||
* @access public
|
||||
* @category Mathematical and Trigonometric Functions
|
||||
* @param float $factVal Factorial Value
|
||||
* @return int Factorial
|
||||
*/
|
||||
|
@ -228,6 +266,11 @@ class PHPExcel_Calculation_MathTrig {
|
|||
*
|
||||
* Returns the double factorial of a number.
|
||||
*
|
||||
* Excel Function:
|
||||
* FACTDOUBLE(factVal)
|
||||
*
|
||||
* @access public
|
||||
* @category Mathematical and Trigonometric Functions
|
||||
* @param float $factVal Factorial Value
|
||||
* @return int Double Factorial
|
||||
*/
|
||||
|
@ -255,11 +298,16 @@ class PHPExcel_Calculation_MathTrig {
|
|||
*
|
||||
* Rounds number down, toward zero, to the nearest multiple of significance.
|
||||
*
|
||||
* Excel Function:
|
||||
* FLOOR(number[,significance])
|
||||
*
|
||||
* @access public
|
||||
* @category Mathematical and Trigonometric Functions
|
||||
* @param float $number Number to round
|
||||
* @param float $significance Significance
|
||||
* @return float Rounded Number
|
||||
*/
|
||||
public static function FLOOR($number,$significance=null) {
|
||||
public static function FLOOR($number, $significance = NULL) {
|
||||
$number = PHPExcel_Calculation_Functions::flattenSingleValue($number);
|
||||
$significance = PHPExcel_Calculation_Functions::flattenSingleValue($significance);
|
||||
|
||||
|
@ -284,20 +332,27 @@ class PHPExcel_Calculation_MathTrig {
|
|||
/**
|
||||
* GCD
|
||||
*
|
||||
* Returns the greatest common divisor of a series of numbers
|
||||
* Returns the greatest common divisor of a series of numbers.
|
||||
* The greatest common divisor is the largest integer that divides both
|
||||
* number1 and number2 without a remainder.
|
||||
*
|
||||
* @param $array Values to calculate the Greatest Common Divisor
|
||||
* @return int Greatest Common Divisor
|
||||
* Excel Function:
|
||||
* GCD(number1[,number2[, ...]])
|
||||
*
|
||||
* @access public
|
||||
* @category Mathematical and Trigonometric Functions
|
||||
* @param mixed $arg,... Data values
|
||||
* @return integer Greatest Common Divisor
|
||||
*/
|
||||
public static function GCD() {
|
||||
$returnValue = 1;
|
||||
$allPoweredFactors = array();
|
||||
$allValuesFactors = array();
|
||||
// Loop through arguments
|
||||
foreach(PHPExcel_Calculation_Functions::flattenArray(func_get_args()) as $value) {
|
||||
if (!is_numeric($value)) {
|
||||
return PHPExcel_Calculation_Functions::VALUE();
|
||||
} elseif ($value == 0) {
|
||||
break;
|
||||
continue;
|
||||
} elseif($value < 0) {
|
||||
return PHPExcel_Calculation_Functions::NaN();
|
||||
}
|
||||
|
@ -306,6 +361,10 @@ class PHPExcel_Calculation_MathTrig {
|
|||
$allValuesFactors[] = $myCountedFactors;
|
||||
}
|
||||
$allValuesCount = count($allValuesFactors);
|
||||
if ($allValuesCount == 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
$mergedArray = $allValuesFactors[0];
|
||||
for ($i=1;$i < $allValuesCount; ++$i) {
|
||||
$mergedArray = array_intersect_key($mergedArray,$allValuesFactors[$i]);
|
||||
|
@ -351,6 +410,11 @@ class PHPExcel_Calculation_MathTrig {
|
|||
*
|
||||
* Casts a floating point value to an integer
|
||||
*
|
||||
* Excel Function:
|
||||
* INT(number)
|
||||
*
|
||||
* @access public
|
||||
* @category Mathematical and Trigonometric Functions
|
||||
* @param float $number Number to cast to an integer
|
||||
* @return integer Integer value
|
||||
*/
|
||||
|
@ -373,8 +437,16 @@ class PHPExcel_Calculation_MathTrig {
|
|||
* LCM
|
||||
*
|
||||
* Returns the lowest common multiplier of a series of numbers
|
||||
* The least common multiple is the smallest positive integer that is a multiple
|
||||
* of all integer arguments number1, number2, and so on. Use LCM to add fractions
|
||||
* with different denominators.
|
||||
*
|
||||
* @param $array Values to calculate the Lowest Common Multiplier
|
||||
* Excel Function:
|
||||
* LCM(number1[,number2[, ...]])
|
||||
*
|
||||
* @access public
|
||||
* @category Mathematical and Trigonometric Functions
|
||||
* @param mixed $arg,... Data values
|
||||
* @return int Lowest Common Multiplier
|
||||
*/
|
||||
public static function LCM() {
|
||||
|
@ -442,6 +514,13 @@ class PHPExcel_Calculation_MathTrig {
|
|||
/**
|
||||
* MDETERM
|
||||
*
|
||||
* Returns the matrix determinant of an array.
|
||||
*
|
||||
* Excel Function:
|
||||
* MDETERM(array)
|
||||
*
|
||||
* @access public
|
||||
* @category Mathematical and Trigonometric Functions
|
||||
* @param array $matrixValues A matrix of values
|
||||
* @return float
|
||||
*/
|
||||
|
@ -476,6 +555,13 @@ class PHPExcel_Calculation_MathTrig {
|
|||
/**
|
||||
* MINVERSE
|
||||
*
|
||||
* Returns the inverse matrix for the matrix stored in an array.
|
||||
*
|
||||
* Excel Function:
|
||||
* MINVERSE(array)
|
||||
*
|
||||
* @access public
|
||||
* @category Mathematical and Trigonometric Functions
|
||||
* @param array $matrixValues A matrix of values
|
||||
* @return array
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue