Merge branch 'master' of git.imagemagick.org:repos/ImageMagick
diff --git a/Magick++/lib/Image.cpp b/Magick++/lib/Image.cpp
index 2a1513a..b7fc606 100644
--- a/Magick++/lib/Image.cpp
+++ b/Magick++/lib/Image.cpp
@@ -2862,8 +2862,20 @@
   ThrowImageException;
 }
 
-void Magick::Image::evaluate(const ssize_t x_,const ssize_t y_,
-  const size_t columns_,const size_t rows_,const ChannelType channel_,
+void Magick::Image::evaluate(const ChannelType channel_,
+  const MagickFunction function_,const size_t number_parameters_,
+  const double *parameters_)
+{
+  GetPPException;
+  GetAndSetPPChannelMask(channel_);
+  FunctionImage(image(),function_,number_parameters_,parameters_,
+    exceptionInfo);
+  RestorePPChannelMask;
+  ThrowImageException;
+}
+
+void Magick::Image::evaluate(const ChannelType channel_,const ssize_t x_,
+  const ssize_t y_,const size_t columns_,const size_t rows_,
   const MagickEvaluateOperator operator_,const double rvalue_)
 {
   RectangleInfo
diff --git a/Magick++/lib/Magick++/Image.h b/Magick++/lib/Magick++/Image.h
index 7017e23..b397ff8 100644
--- a/Magick++/lib/Magick++/Image.h
+++ b/Magick++/lib/Magick++/Image.h
@@ -880,8 +880,12 @@
       const MagickEvaluateOperator operator_,double rvalue_);
 
     // Apply a value with an arithmetic, relational, or logical operator.
-    void evaluate(const ::ssize_t x_,const ::ssize_t y_,const size_t columns_,
-      const size_t rows_,const ChannelType channel_,
+    void evaluate(const ChannelType channel_,const MagickFunction function_,
+      const size_t number_parameters_,const double *parameters_);
+
+    // Apply a value with an arithmetic, relational, or logical operator.
+    void evaluate(const ChannelType channel_,const ::ssize_t x_,
+      const ::ssize_t y_,const size_t columns_,const size_t rows_,
       const MagickEvaluateOperator operator_,const double rvalue_);
 
     // Extend the image as defined by the geometry.
diff --git a/Magick++/lib/Magick++/Include.h b/Magick++/lib/Magick++/Include.h
index 5d1bdb7..a397825 100644
--- a/Magick++/lib/Magick++/Include.h
+++ b/Magick++/lib/Magick++/Include.h
@@ -789,6 +789,14 @@
   using MagickCore::CommandEvent;
   using MagickCore::AllEvents;
 
+  // Magick functions
+  using MagickCore::MagickFunction;
+  using MagickCore::UndefinedFunction;
+  using MagickCore::ArcsinFunction;
+  using MagickCore::ArctanFunction;
+  using MagickCore::PolynomialFunction;
+  using MagickCore::SinusoidFunction;
+
   // Metric types
   using MagickCore::MetricType;
   using MagickCore::UndefinedErrorMetric;
diff --git a/MagickCore/statistic.h b/MagickCore/statistic.h
index 2d8f9dc..322356c 100644
--- a/MagickCore/statistic.h
+++ b/MagickCore/statistic.h
@@ -108,10 +108,10 @@
 typedef enum
 {
   UndefinedFunction,
-  PolynomialFunction,
-  SinusoidFunction,
   ArcsinFunction,
-  ArctanFunction
+  ArctanFunction,
+  PolynomialFunction,
+  SinusoidFunction
 } MagickFunction;
 
 typedef enum