FxEvaluateSubexpression(FxInfo *,const PixelChannel,const ssize_t,
const ssize_t,const char *,MagickRealType *,ExceptionInfo *);
+static MagickOffsetType FxGCD(MagickOffsetType alpha,MagickOffsetType beta)
+{
+ if (beta != 0)
+ return(FxGCD(beta,alpha % beta));
+ return(alpha);
+}
+
static inline MagickRealType FxMax(FxInfo *fx_info,const PixelChannel channel,
const ssize_t x,const ssize_t y,const char *expression,
ExceptionInfo *exception)
gamma=exp((double) (-alpha*alpha/2.0))/sqrt(2.0*MagickPI);
return((MagickRealType) gamma);
}
+ if (LocaleNCompare(expression,"gcd",3) == 0)
+ {
+ MagickOffsetType
+ gcd;
+
+ alpha=FxEvaluateSubexpression(fx_info,channel,x,y,expression+3,beta,
+ exception);
+ gcd=FxGCD((MagickOffsetType) alpha,(MagickOffsetType) *beta);
+ return((MagickRealType) gcd);
+ }
if (LocaleCompare(expression,"g") == 0)
return(FxGetSymbol(fx_info,channel,x,y,expression,exception));
break;