node_info=cube_info->root;
for (level=1; level <= MaxTreeDepth; level++)
{
+ double
+ distance;
+
bisect*=0.5;
id=ColorToNodeId(cube_info,&pixel,index);
mid.red+=(id & 1) != 0 ? bisect : -bisect;
error.blue=QuantumScale*(pixel.blue-mid.blue);
if (cube_info->associate_alpha != MagickFalse)
error.alpha=QuantumScale*(pixel.alpha-mid.alpha);
- node_info->quantize_error+=count*sqrt((double) (error.red*error.red+
- error.green*error.green+error.blue*error.blue+
- error.alpha*error.alpha));
+ distance=(double) (error.red*error.red+error.green*error.green+
+ error.blue*error.blue+error.alpha*error.alpha);
+ if (IsNaN(distance) != MagickFalse)
+ distance=0.0;
+ node_info->quantize_error+=count*sqrt(distance);
cube_info->root->quantize_error+=node_info->quantize_error;
index--;
}
node_info=cube_info->root;
for (level=1; level <= cube_info->depth; level++)
{
+ double
+ distance;
+
bisect*=0.5;
id=ColorToNodeId(cube_info,&pixel,index);
mid.red+=(id & 1) != 0 ? bisect : -bisect;
error.blue=QuantumScale*(pixel.blue-mid.blue);
if (cube_info->associate_alpha != MagickFalse)
error.alpha=QuantumScale*(pixel.alpha-mid.alpha);
- node_info->quantize_error+=count*sqrt((double) (error.red*error.red+
- error.green*error.green+error.blue*error.blue+
- error.alpha*error.alpha));
+ distance=(double) (error.red*error.red+error.green*error.green+
+ error.blue*error.blue+error.alpha*error.alpha);
+ if (IsNaN(distance) != MagickFalse)
+ distance=0.0;
+ node_info->quantize_error+=count*sqrt(distance);
cube_info->root->quantize_error+=node_info->quantize_error;
index--;
}