I found the cause of the side effect: In GradientCoherentNoise3D there is an initialization block: int x0 = (x > 0.0? (int)x: (int)x - 1); int x1 = x0 + 1; int y0 = (y > 0.0? (int)y: (int)y - 1); int y1 = y0 + 1; int z0 = (z > 0.0? (int)z: (int)z - 1); int z1 = z0 + 1;
These values sometimes cause the distance from X to X0 or from X to X1 to be greater than 1, and fixing GradientNoise3D causes GradientCoherentNoise3D to jump out of bounds. I believe this qualifies as a new bug, but the effect of this bug will only appear if Bug#1093642 is fixed.