@@ -226,9 +226,9 @@ MagickExport Image *ComplexImages(const Image *images,const ComplexOperator op,
226226 progress = 0 ;
227227#if defined(MAGICKCORE_OPENMP_SUPPORT )
228228 #pragma omp parallel for schedule(static) shared(progress,status) \
229- magick_number_threads(images ,complex_images,images ->rows,1L)
229+ magick_number_threads(Cr_image ,complex_images,Cr_image ->rows,1L)
230230#endif
231- for (y = 0 ; y < (ssize_t ) images -> rows ; y ++ )
231+ for (y = 0 ; y < (ssize_t ) Cr_image -> rows ; y ++ )
232232 {
233233 register const PixelPacket
234234 * magick_restrict Ai ,
@@ -245,14 +245,10 @@ MagickExport Image *ComplexImages(const Image *images,const ComplexOperator op,
245245
246246 if (status == MagickFalse )
247247 continue ;
248- Ar = GetCacheViewVirtualPixels (Ar_view ,0 ,y ,
249- MagickMax (Ar_image -> columns ,Cr_image -> columns ),1 ,exception );
250- Ai = GetCacheViewVirtualPixels (Ai_view ,0 ,y ,
251- MagickMax (Ai_image -> columns ,Ci_image -> columns ),1 ,exception );
252- Br = GetCacheViewVirtualPixels (Br_view ,0 ,y ,
253- MagickMax (Br_image -> columns ,Cr_image -> columns ),1 ,exception );
254- Bi = GetCacheViewVirtualPixels (Bi_view ,0 ,y ,
255- MagickMax (Bi_image -> columns ,Ci_image -> columns ),1 ,exception );
248+ Ar = GetCacheViewVirtualPixels (Ar_view ,0 ,y ,Cr_image -> columns ,1 ,exception );
249+ Ai = GetCacheViewVirtualPixels (Ai_view ,0 ,y ,Cr_image -> columns ,1 ,exception );
250+ Br = GetCacheViewVirtualPixels (Br_view ,0 ,y ,Cr_image -> columns ,1 ,exception );
251+ Bi = GetCacheViewVirtualPixels (Bi_view ,0 ,y ,Cr_image -> columns ,1 ,exception );
256252 Cr = QueueCacheViewAuthenticPixels (Cr_view ,0 ,y ,Cr_image -> columns ,1 ,exception );
257253 Ci = QueueCacheViewAuthenticPixels (Ci_view ,0 ,y ,Ci_image -> columns ,1 ,exception );
258254 if ((Ar == (const PixelPacket * ) NULL ) ||
@@ -264,7 +260,7 @@ MagickExport Image *ComplexImages(const Image *images,const ComplexOperator op,
264260 status = MagickFalse ;
265261 continue ;
266262 }
267- for (x = 0 ; x < (ssize_t ) images -> columns ; x ++ )
263+ for (x = 0 ; x < (ssize_t ) Cr_image -> columns ; x ++ )
268264 {
269265 switch (op )
270266 {
@@ -305,55 +301,70 @@ MagickExport Image *ComplexImages(const Image *images,const ComplexOperator op,
305301 gamma ;
306302
307303 gamma = PerceptibleReciprocal (Br -> red * Br -> red + Bi -> red * Bi -> red + snr );
308- Cr -> red = gamma * (Ar -> red * Br -> red + Ai -> red * Bi -> red );
309- Ci -> red = gamma * (Ai -> red * Br -> red - Ar -> red * Bi -> red );
310- gamma = PerceptibleReciprocal (Br -> green * Br -> green + Bi -> green * Bi -> green +
311- snr );
312- Cr -> green = gamma * (Ar -> green * Br -> green + Ai -> green * Bi -> green );
313- Ci -> green = gamma * (Ai -> green * Br -> green - Ar -> green * Bi -> green );
314- gamma = PerceptibleReciprocal (Br -> blue * Br -> blue + Bi -> blue * Bi -> blue + snr );
315- Cr -> blue = gamma * (Ar -> blue * Br -> blue + Ai -> blue * Bi -> blue );
316- Ci -> blue = gamma * (Ai -> blue * Br -> blue - Ar -> blue * Bi -> blue );
304+ Cr -> red = gamma * ((double ) Ar -> red * Br -> red + (double ) Ai -> red * Bi -> red );
305+ Ci -> red = gamma * ((double ) Ai -> red * Br -> red - (double ) Ar -> red * Bi -> red );
306+ gamma = PerceptibleReciprocal ((double ) Br -> green * Br -> green + (double )
307+ Bi -> green * Bi -> green + snr );
308+ Cr -> green = gamma * ((double ) Ar -> green * Br -> green + (double )
309+ Ai -> green * Bi -> green );
310+ Ci -> green = gamma * ((double ) Ai -> green * Br -> green - (double )
311+ Ar -> green * Bi -> green );
312+ gamma = PerceptibleReciprocal ((double ) Br -> blue * Br -> blue + (double )
313+ Bi -> blue * Bi -> blue + snr );
314+ Cr -> blue = gamma * ((double ) Ar -> blue * Br -> blue + (double )
315+ Ai -> blue * Bi -> blue );
316+ Ci -> blue = gamma * ((double ) Ai -> blue * Br -> blue - (double )
317+ Ar -> blue * Bi -> blue );
317318 if (images -> matte != MagickFalse )
318319 {
319- gamma = PerceptibleReciprocal (Br -> opacity * Br -> opacity + Bi -> opacity *
320- Bi -> opacity + snr );
321- Cr -> opacity = gamma * (Ar -> opacity * Br -> opacity + Ai -> opacity *
322- Bi -> opacity );
323- Ci -> opacity = gamma * (Ai -> opacity * Br -> opacity - Ar -> opacity *
324- Bi -> opacity );
320+ gamma = PerceptibleReciprocal (( double ) Br -> opacity * Br -> opacity +
321+ ( double ) Bi -> opacity * Bi -> opacity + snr );
322+ Cr -> opacity = gamma * (( double ) Ar -> opacity * Br -> opacity + ( double )
323+ Ai -> opacity * Bi -> opacity );
324+ Ci -> opacity = gamma * (( double ) Ai -> opacity * Br -> opacity - ( double )
325+ Ar -> opacity * Bi -> opacity );
325326 }
326327 break ;
327328 }
328329 case MagnitudePhaseComplexOperator :
329330 {
330- Cr -> red = sqrt (Ar -> red * Ar -> red + Ai -> red * Ai -> red );
331- Ci -> red = atan2 (Ai -> red ,Ar -> red )/(2.0 * MagickPI )+ 0.5 ;
332- Cr -> green = sqrt (Ar -> green * Ar -> green + Ai -> green * Ai -> green );
333- Ci -> green = atan2 (Ai -> green ,Ar -> green )/(2.0 * MagickPI )+ 0.5 ;
334- Cr -> blue = sqrt (Ar -> blue * Ar -> blue + Ai -> blue * Ai -> blue );
331+ Cr -> red = sqrt ((double ) Ar -> red * Ar -> red + (double ) Ai -> red * Ai -> red );
332+ Ci -> red = atan2 ((double ) Ai -> red ,(double ) Ar -> red )/(2.0 * MagickPI )+ 0.5 ;
333+ Cr -> green = sqrt ((double ) Ar -> green * Ar -> green + (double )
334+ Ai -> green * Ai -> green );
335+ Ci -> green = atan2 ((double ) Ai -> green ,(double ) Ar -> green )/
336+ (2.0 * MagickPI )+ 0.5 ;
337+ Cr -> blue = sqrt ((double ) Ar -> blue * Ar -> blue + (double ) Ai -> blue * Ai -> blue );
335338 Ci -> blue = atan2 (Ai -> blue ,Ar -> blue )/(2.0 * MagickPI )+ 0.5 ;
336339 if (images -> matte != MagickFalse )
337340 {
338- Cr -> opacity = sqrt (Ar -> opacity * Ar -> opacity + Ai -> opacity * Ai -> opacity );
339- Ci -> opacity = atan2 (Ai -> opacity ,Ar -> opacity )/(2.0 * MagickPI )+ 0.5 ;
341+ Cr -> opacity = sqrt ((double ) Ar -> opacity * Ar -> opacity + (double )
342+ Ai -> opacity * Ai -> opacity );
343+ Ci -> opacity = atan2 ((double ) Ai -> opacity ,(double ) Ar -> opacity )/
344+ (2.0 * MagickPI )+ 0.5 ;
340345 }
341346 break ;
342347 }
343348 case MultiplyComplexOperator :
344349 {
345- Cr -> red = QuantumScale * (Ar -> red * Br -> red - Ai -> red * Bi -> red );
346- Ci -> red = QuantumScale * (Ai -> red * Br -> red + Ar -> red * Bi -> red );
347- Cr -> green = QuantumScale * (Ar -> green * Br -> green - Ai -> green * Bi -> green );
348- Ci -> green = QuantumScale * (Ai -> green * Br -> green + Ar -> green * Bi -> green );
349- Cr -> blue = QuantumScale * (Ar -> blue * Br -> blue - Ai -> blue * Bi -> blue );
350- Ci -> blue = QuantumScale * (Ai -> blue * Br -> blue + Ar -> blue * Bi -> blue );
350+ Cr -> red = QuantumScale * ((double ) Ar -> red * Br -> red - (double )
351+ Ai -> red * Bi -> red );
352+ Ci -> red = QuantumScale * ((double ) Ai -> red * Br -> red + (double )
353+ Ar -> red * Bi -> red );
354+ Cr -> green = QuantumScale * ((double ) Ar -> green * Br -> green - (double )
355+ Ai -> green * Bi -> green );
356+ Ci -> green = QuantumScale * ((double ) Ai -> green * Br -> green + (double )
357+ Ar -> green * Bi -> green );
358+ Cr -> blue = QuantumScale * ((double ) Ar -> blue * Br -> blue - (double )
359+ Ai -> blue * Bi -> blue );
360+ Ci -> blue = QuantumScale * ((double ) Ai -> blue * Br -> blue + (double )
361+ Ar -> blue * Bi -> blue );
351362 if (images -> matte != MagickFalse )
352363 {
353- Cr -> opacity = QuantumScale * (Ar -> opacity * Br -> opacity - Ai -> opacity *
354- Bi -> opacity );
355- Ci -> opacity = QuantumScale * (Ai -> opacity * Br -> opacity + Ar -> opacity *
356- Bi -> opacity );
364+ Cr -> opacity = QuantumScale * (( double ) Ar -> opacity * Br -> opacity -
365+ ( double ) Ai -> opacity * Bi -> opacity );
366+ Ci -> opacity = QuantumScale * (( double ) Ai -> opacity * Br -> opacity +
367+ ( double ) Ar -> opacity * Bi -> opacity );
357368 }
358369 break ;
359370 }
@@ -380,7 +391,7 @@ MagickExport Image *ComplexImages(const Image *images,const ComplexOperator op,
380391 Ci -> green = Ai -> green - Bi -> green ;
381392 Cr -> blue = Ar -> blue - Br -> blue ;
382393 Ci -> blue = Ai -> blue - Bi -> blue ;
383- if (images -> matte != MagickFalse )
394+ if (Cr_image -> matte != MagickFalse )
384395 {
385396 Cr -> opacity = Ar -> opacity - Br -> opacity ;
386397 Ci -> opacity = Ai -> opacity - Bi -> opacity ;
0 commit comments