Fix parentheses mismatch error in zero-denominator check when multiple divisions close #119
This commit is contained in:
@@ -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, '.', '' );
|
||||||
|
|||||||
Reference in New Issue
Block a user