Fix parentheses mismatch error in zero-denominator check when multiple divisions close #119

This commit is contained in:
Brian Miyaji
2015-02-07 15:54:22 +11:00
parent 19c5d88fc4
commit a4f3027e7e

View File

@@ -1085,12 +1085,22 @@ if ( !function_exists( 'sp_solve' ) ) {
// Remove space between equation parts // Remove space between equation parts
$equation = str_replace( ' ', '', $equation ); $equation = str_replace( ' ', '', $equation );
// Check if denominator is zero // Initialize subequation
$pos = strpos( $equation, '/' ); $subequation = $equation;
if ( $pos ):
if ( $eos->solveIF( substr( $equation, $pos + 1 ), $vars ) == 0 ) // Check each subequation separated by division
while ( $pos = strpos( $subequation, '/' ) ) {
$subequation = substr( $subequation, $pos + 1 );
// Make sure paretheses match
if ( substr_count( $subequation, '(' ) === substr_count( $subequation, ')' ) ) {
// Return zero if denominator is zero
if ( $eos->solveIF( $subequation, $vars ) == 0 ) {
return 0; return 0;
endif; }
}
}
// Return solution // Return solution
return number_format( $eos->solveIF( str_replace( ' ', '', $equation ), $vars ), $precision, '.', '' ); return number_format( $eos->solveIF( str_replace( ' ', '', $equation ), $vars ), $precision, '.', '' );