EgtNumKernel 2.3a1 :

- piccola miglioria nel calcolo dei polinomi quadratici
- ricompilazione per nuova versione 2.3.
This commit is contained in:
Dario Sassi
2020-12-28 18:47:32 +00:00
parent 5075bbfe39
commit 5e96122439
2 changed files with 13 additions and 15 deletions
BIN
View File
Binary file not shown.
+13 -15
View File
@@ -51,7 +51,7 @@ PolynomialRoots( int nDegree, DBLVECTOR& vdPoly, DBLVECTOR& vdRoot, int* pnIter)
if ( nDegree == 1)
return LinearPolynomialRoots( vdPoly, vdRoot, pnIter) ;
// se polinomi quadratico
// se polinomio quadratico
if ( nDegree == 2)
return QuadraticPolynomialRoots( vdPoly, vdRoot, pnIter) ;
@@ -209,21 +209,19 @@ QuadraticPolynomialRoots( DBLVECTOR& vdPoly, DBLVECTOR& vdRoot, int* pnIter)
double q = vdPoly[0] / vdPoly[2] ;
double Delta = p * p - q ;
if ( abs( Delta) < DBL_EPSILON * DBL_EPSILON) {
vdRoot.clear() ;
vdRoot.reserve( 1) ;
vdRoot.push_back( -p) ;
return 1 ;
}
if ( Delta < 0.0) {
}
if ( Delta < 0.0) {
return 0 ;
}
// Delta positivo
double dSqrtD = sqrt( Delta) ;
double r1 = -( p + copysign( dSqrtD, p)) ;
double r2 = q / r1 ;
if ( r1 > r2)
swap( r1, r2) ;
vdRoot.push_back( r1) ;
vdRoot.push_back( r2) ;
return 2 ;
}
// Delta positivo
double dSqrtD = sqrt( Delta) ;
double r1 = -( p + copysign( dSqrtD, p)) ;
double r2 = q / r1 ;
if ( r1 > r2)
swap( r1, r2) ;
vdRoot.push_back( r1) ;
vdRoot.push_back( r2) ;
return 2 ;
}