Commit de81b9a63 for imagemagick.org

commit de81b9a6314abeeea1f8798fc7256a9b048d1000
Author: Cristy <urban-warrior@imagemagick.org>
Date:   Tue Jul 7 21:17:39 2026 -0400

    normalize AE metric

diff --git a/MagickCore/compare.c b/MagickCore/compare.c
index d5717af5d..b6c611c6f 100644
--- a/MagickCore/compare.c
+++ b/MagickCore/compare.c
@@ -312,6 +312,7 @@ static MagickBooleanType GetAESimilarity(const Image *image,
     *reconstruct_view;

   double
+    area,
     fuzz;

   MagickBooleanType
@@ -322,6 +323,7 @@ static MagickBooleanType GetAESimilarity(const Image *image,
     rows;

   ssize_t
+    k,
     y;

   /*
@@ -427,6 +429,10 @@ static MagickBooleanType GetAESimilarity(const Image *image,
   similarity[CompositePixelChannel]/=(double) GetImageChannels(image);
   reconstruct_view=DestroyCacheView(reconstruct_view);
   image_view=DestroyCacheView(image_view);
+  area=MagickSafeReciprocal((double) columns*rows);
+  for (k=0; k < (ssize_t) GetPixelChannels(image); k++)
+    similarity[k]*=area;
+  similarity[CompositePixelChannel]*=area;
   return(status);
 }

diff --git a/MagickWand/compare.c b/MagickWand/compare.c
index 434b0f5d1..4cc3f5d49 100644
--- a/MagickWand/compare.c
+++ b/MagickWand/compare.c
@@ -1325,18 +1325,6 @@ WandExport MagickBooleanType CompareImagesCommand(ImageInfo *image_info,
         {
           switch (metric)
           {
-            case AbsoluteErrorMetric:
-            {
-              if (distortion == (long long) distortion)
-                {
-                  (void) FormatLocaleFile(stderr,"%.20g (%.20g)",distortion,
-                    distortion/scale);
-                  break;
-                }
-              (void) FormatLocaleFile(stderr,"%.*g (%.*g)",GetMagickPrecision(),
-                distortion,GetMagickPrecision(),distortion/scale);
-              break;
-            }
             case MeanErrorPerPixelErrorMetric:
             {
               if (subimage_search == MagickFalse)
@@ -1456,7 +1444,6 @@ WandExport MagickBooleanType CompareImagesCommand(ImageInfo *image_info,
                 GetMagickPrecision(),channel_distortion[MaxPixelChannels]);
               break;
             }
-            case AbsoluteErrorMetric:
             case DotProductCorrelationErrorMetric:
             case NormalizedCrossCorrelationErrorMetric:
             case PeakSignalToNoiseRatioErrorMetric:
@@ -1525,6 +1512,7 @@ WandExport MagickBooleanType CompareImagesCommand(ImageInfo *image_info,
                 GetMagickPrecision(),image->error.normalized_maximum_error);
               break;
             }
+            case AbsoluteErrorMetric:
             case PixelDifferenceCountErrorMetric:
             {
               switch (image->colorspace)