@@ -451,7 +451,7 @@ static MagickBooleanType GetAESimilarity(const Image *image,
451
451
{
452
452
error = Sa * (double ) GetPixelRed (p )- Da * (double )
453
453
GetPixelRed (q );
454
- if ((error * error ) > ( fuzz * ( 1.0 + FLT_EPSILON )) )
454
+ if (MagickSafeSignificantError (error * error , fuzz ) != MagickFalse )
455
455
{
456
456
channel_similarity [RedChannel ]++ ;
457
457
count ++ ;
@@ -461,7 +461,7 @@ static MagickBooleanType GetAESimilarity(const Image *image,
461
461
{
462
462
error = Sa * (double ) GetPixelGreen (p )- Da * (double )
463
463
GetPixelGreen (q );
464
- if ((error * error ) > ( fuzz * ( 1.0 + FLT_EPSILON )) )
464
+ if (MagickSafeSignificantError (error * error , fuzz ) != MagickFalse )
465
465
{
466
466
channel_similarity [GreenChannel ]++ ;
467
467
count ++ ;
@@ -471,7 +471,7 @@ static MagickBooleanType GetAESimilarity(const Image *image,
471
471
{
472
472
error = Sa * (double ) GetPixelBlue (p )- Da * (double )
473
473
GetPixelBlue (q );
474
- if ((error * error ) > ( fuzz * ( 1.0 + FLT_EPSILON )) )
474
+ if (MagickSafeSignificantError (error * error , fuzz ) != MagickFalse )
475
475
{
476
476
channel_similarity [BlueChannel ]++ ;
477
477
count ++ ;
@@ -480,9 +480,8 @@ static MagickBooleanType GetAESimilarity(const Image *image,
480
480
if (((channel & OpacityChannel ) != 0 ) &&
481
481
(image -> matte != MagickFalse ))
482
482
{
483
- error = (double ) GetPixelOpacity (p )- (double )
484
- GetPixelOpacity (q );
485
- if ((error * error ) > (fuzz * (1.0 + FLT_EPSILON )))
483
+ error = (double ) GetPixelOpacity (p )- (double ) GetPixelOpacity (q );
484
+ if (MagickSafeSignificantError (error * error ,fuzz ) != MagickFalse )
486
485
{
487
486
channel_similarity [OpacityChannel ]++ ;
488
487
count ++ ;
@@ -491,9 +490,8 @@ static MagickBooleanType GetAESimilarity(const Image *image,
491
490
if (((channel & IndexChannel ) != 0 ) &&
492
491
(image -> colorspace == CMYKColorspace ))
493
492
{
494
- error = Sa * (double ) indexes [x ]- Da * (double )
495
- reconstruct_indexes [x ];
496
- if ((error * error ) > (fuzz * (1.0 + FLT_EPSILON )))
493
+ error = Sa * (double ) indexes [x ]- Da * (double ) reconstruct_indexes [x ];
494
+ if (MagickSafeSignificantError (error * error ,fuzz ) != MagickFalse )
497
495
{
498
496
channel_similarity [IndexChannel ]++ ;
499
497
count ++ ;
@@ -593,7 +591,7 @@ static MagickBooleanType GetFUZZSimilarity(const Image *image,
593
591
if ((channel & RedChannel ) != 0 )
594
592
{
595
593
error = QuantumScale * (Sa * GetPixelRed (p )- Da * GetPixelRed (q ));
596
- if ((error * error ) > ( fuzz * ( 1.0 + FLT_EPSILON )) )
594
+ if (MagickSafeSignificantError (error * error , fuzz ) != MagickFalse )
597
595
{
598
596
channel_similarity [RedChannel ]+= error * error ;
599
597
channel_similarity [CompositeChannels ]+= error * error ;
@@ -603,7 +601,7 @@ static MagickBooleanType GetFUZZSimilarity(const Image *image,
603
601
if ((channel & GreenChannel ) != 0 )
604
602
{
605
603
error = QuantumScale * (Sa * GetPixelGreen (p )- Da * GetPixelGreen (q ));
606
- if ((error * error ) > ( fuzz * ( 1.0 + FLT_EPSILON )) )
604
+ if (MagickSafeSignificantError (error * error , fuzz ) != MagickFalse )
607
605
{
608
606
channel_similarity [GreenChannel ]+= error * error ;
609
607
channel_similarity [CompositeChannels ]+= error * error ;
@@ -613,7 +611,7 @@ static MagickBooleanType GetFUZZSimilarity(const Image *image,
613
611
if ((channel & BlueChannel ) != 0 )
614
612
{
615
613
error = QuantumScale * (Sa * GetPixelBlue (p )- Da * GetPixelBlue (q ));
616
- if ((error * error ) > ( fuzz * ( 1.0 + FLT_EPSILON )) )
614
+ if (MagickSafeSignificantError (error * error , fuzz ) != MagickFalse )
617
615
{
618
616
channel_similarity [BlueChannel ]+= error * error ;
619
617
channel_similarity [CompositeChannels ]+= error * error ;
@@ -623,7 +621,7 @@ static MagickBooleanType GetFUZZSimilarity(const Image *image,
623
621
if (((channel & OpacityChannel ) != 0 ) && (image -> matte != MagickFalse ))
624
622
{
625
623
error = QuantumScale * ((double ) GetPixelOpacity (p )- GetPixelOpacity (q ));
626
- if ((error * error ) > ( fuzz * ( 1.0 + FLT_EPSILON )) )
624
+ if (MagickSafeSignificantError (error * error , fuzz ) != MagickFalse )
627
625
{
628
626
channel_similarity [OpacityChannel ]+= error * error ;
629
627
channel_similarity [CompositeChannels ]+= error * error ;
@@ -635,7 +633,7 @@ static MagickBooleanType GetFUZZSimilarity(const Image *image,
635
633
{
636
634
error = QuantumScale * (Sa * GetPixelIndex (indexes + x )- Da *
637
635
GetPixelIndex (reconstruct_indexes + x ));
638
- if ((error * error ) > ( fuzz * ( 1.0 + FLT_EPSILON )) )
636
+ if (MagickSafeSignificantError (error * error , fuzz ) != MagickFalse )
639
637
{
640
638
channel_similarity [BlackChannel ]+= error * error ;
641
639
channel_similarity [CompositeChannels ]+= error * error ;
0 commit comments