From 5e96122439b4a0361cdb6bb38f580ee4e9471ee3 Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Mon, 28 Dec 2020 18:47:32 +0000 Subject: [PATCH] EgtNumKernel 2.3a1 : - piccola miglioria nel calcolo dei polinomi quadratici - ricompilazione per nuova versione 2.3. --- EgtNumKernel.rc | Bin 11670 -> 11662 bytes PolynomialRoots.cpp | 28 +++++++++++++--------------- 2 files changed, 13 insertions(+), 15 deletions(-) diff --git a/EgtNumKernel.rc b/EgtNumKernel.rc index 678d111041720cdc3598fdf6a72b9e246a6d7512..741e2f573ee3785f0c832f60511c01524ad610ce 100644 GIT binary patch delta 226 zcmbOh-50C1NJgU;lQa{7$Mn;*)(XJR#GNMtaa%qXHeSx0Ieqv7O@N>eBIaNl4w z28xMqPLQ!;+`Nrfh!I8GLZ-5YwHTH!9^a QLTs9xAoFUof@&ED0C8PIC;$Ke delta 236 zcmeB+o)*2~6C0}$gARk?K3PxY)#MYr7MthrYB8ed{mIA8j79I{$rZx4(De3*600{u8eMOVESg?yZr;37 ODVGsq>1I8Z1Wo|uh)$9K diff --git a/PolynomialRoots.cpp b/PolynomialRoots.cpp index 6b1939b..3e348a5 100644 --- a/PolynomialRoots.cpp +++ b/PolynomialRoots.cpp @@ -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 ; }