Commit b3268b9ca for imagemagick.org

commit b3268b9ca64665e4205ff1e362b2f65df007dcbc
Author: Cristy <urban-warrior@imagemagick.org>
Date:   Thu Jul 23 19:54:48 2026 -0400

    divide is reserved by SVG specification; use divide-fx for mathematical divide

diff --git a/MagickCore/compare.c b/MagickCore/compare.c
index 437937947..95749dc42 100644
--- a/MagickCore/compare.c
+++ b/MagickCore/compare.c
@@ -3495,8 +3495,8 @@ static Image *SIMPhaseCorrelationImage(const Image *alpha_image,
   /*
     Divide the results.
   */
-  CompositeLayers(complex_multiplication,DivideSrcCompositeOp,(Image *)
-    magnitude_image,0,0,exception);
+  CompositeLayers((Image *) magnitude_image,DivideFxCompositeOp,
+    complex_multiplication,0,0,exception);
   /*
     Do the IFT and return the cross-correlation result.
   */
diff --git a/MagickCore/composite.c b/MagickCore/composite.c
index baa5dadd2..1fb67e7e9 100644
--- a/MagickCore/composite.c
+++ b/MagickCore/composite.c
@@ -2385,6 +2385,7 @@ MagickExport MagickBooleanType CompositeImage(Image *image,
         case DarkenCompositeOp:
         case DifferenceCompositeOp:
         case DivideDstCompositeOp:
+        case DivideFxCompositeOp:
         case DivideSrcCompositeOp:
         case ExclusionCompositeOp:
         case FreezeCompositeOp:
@@ -2932,7 +2933,6 @@ MagickExport MagickBooleanType CompositeImage(Image *image,
           }
           case DivideDstCompositeOp:
           {
-            S=(Sa > 0.0) ? (Sca/Sa) : 0.0;
             D=(Da > 0.0) ? (Dca/Da) : 0.0;
             if (fabs(S) < MagickEpsilon)
               blend=1.0;
@@ -2942,6 +2942,14 @@ MagickExport MagickBooleanType CompositeImage(Image *image,
               Sa*Da*blend);
             break;
           }
+          case DivideFxCompositeOp:
+          {
+            if (fabs(Dca) < MagickEpsilon)
+              pixel=0.0;
+            else
+              pixel=(double) QuantumRange*(Sca/Dca);
+            break;
+          }
           case DivideSrcCompositeOp:
           {
             S=(Sa > 0.0) ? (Sca/Sa) : 0.0;
diff --git a/MagickCore/composite.h b/MagickCore/composite.h
index c02d563f8..8c5e1abc2 100644
--- a/MagickCore/composite.h
+++ b/MagickCore/composite.h
@@ -105,7 +105,8 @@ typedef enum
   StampCompositeOp,
   RMSECompositeOp,
   SaliencyBlendCompositeOp,
-  SeamlessBlendCompositeOp
+  SeamlessBlendCompositeOp,
+  DivideFxCompositeOp
 } CompositeOperator;

 extern MagickExport MagickBooleanType
diff --git a/MagickCore/option.c b/MagickCore/option.c
index 430066424..33e264f64 100644
--- a/MagickCore/option.c
+++ b/MagickCore/option.c
@@ -1299,6 +1299,7 @@ static const OptionInfo
     { "Distort", DistortCompositeOp, UndefinedOptionFlag, MagickFalse },
     { "Divide", DivideDstCompositeOp, DeprecateOptionFlag, MagickTrue },
     { "DivideDst", DivideDstCompositeOp, UndefinedOptionFlag, MagickFalse },
+    { "DivideFx", DivideFxCompositeOp, UndefinedOptionFlag, MagickFalse },
     { "DivideSrc", DivideSrcCompositeOp, UndefinedOptionFlag, MagickFalse },
     { "DstAtop", DstAtopCompositeOp, UndefinedOptionFlag, MagickFalse },
     { "Dst", DstCompositeOp, UndefinedOptionFlag, MagickFalse },