Dear Maintainer, I observed out of bounds condition with GradientCoherentNoise3D. Per source header documentation: /// @returns The generated gradient-coherent-noise value. /// /// The return value ranges from -1.0 to +1.0. Test cases: GradientCoherentNoise3D(0.25,-0.45,0.5)=1.00355 GradientCoherentNoise3D(-0.05,-0.45,0.5)=1.00432 GradientCoherentNoise3D(0.3,-0.5,0.5)=1.00751 GradientCoherentNoise3D(0.2,-0.45,0.5)=1.01694 GradientCoherentNoise3D(0,-0.45,0.5)=1.02274 GradientCoherentNoise3D(0.15,-0.45,0.5)=1.02594 GradientCoherentNoise3D(0.05,-0.45,0.5)=1.02919 GradientCoherentNoise3D(0.1,-0.45,0.5)=1.03015 GradientCoherentNoise3D(0.25,-0.5,0.5)=1.03285 GradientCoherentNoise3D(-0.05,-0.5,0.5)=1.03658 GradientCoherentNoise3D(0.2,-0.5,0.5)=1.05275 GradientCoherentNoise3D(0,-0.5,0.5)=1.06107 GradientCoherentNoise3D(0.15,-0.5,0.5)=1.06634 GradientCoherentNoise3D(0.05,-0.5,0.5)=1.07129 GradientCoherentNoise3D(0.1,-0.5,0.5)=1.07279 Expected results: Return value ranges from -1.0 to +1.0 I contacted the author, who confirmed the source is unmaintained, and indicated that this may just be a documentation error. But, if anyone built software based on the documented domain, it will eventually fall beyond the documented domain. Hence I classified this as "important" and not "normal".
This appears to be caused by another bug, which I will report separately. From the headers: /// A <i>gradient</i>-noise function generates better-quality noise than a /// <i>value</i>-noise function. Most noise modules use gradient noise for /// this reason, although it takes much longer to calculate. /// /// The return value ranges from -1.0 to +1.0. Actual test cases: WAAAAAY out of bounds. GradientNoise3D(0.95,0.9,0.9,0,0,0)=-3.14675 GradientNoise3D(0.95,0.9,0.95,0,0,0)=-3.17288 GradientNoise3D(0.95,0.95,-1,0,0,-2)=1.37768 GradientNoise3D(0.95,0.95,-0.95,0,0,-1)=2.76058 GradientNoise3D(0.95,0.95,-0.9,0,0,-1)=2.78524 GradientNoise3D(0.95,0.95,-0.85,0,0,-1)=2.8099 GradientNoise3D(0.95,0.95,-0.8,0,0,-1)=2.83456 GradientNoise3D(0.95,0.95,-0.75,0,0,-1)=2.85921 GradientNoise3D(0.95,0.95,-0.7,0,0,-1)=2.88387 GradientNoise3D(0.95,0.95,-0.65,0,0,-1)=2.90853 GradientNoise3D(0.95,0.95,-0.6,0,0,-1)=2.93319 GradientNoise3D(0.95,0.95,-0.55,0,0,-1)=2.95785 GradientNoise3D(0.95,0.95,-0.5,0,0,-1)=2.98251 GradientNoise3D(0.95,0.95,-0.45,0,0,-1)=3.00717 GradientNoise3D(0.95,0.95,-0.4,0,0,-1)=3.03183 GradientNoise3D(0.95,0.95,-0.35,0,0,-1)=3.05649 GradientNoise3D(0.95,0.95,-0.3,0,0,-1)=3.08115 GradientNoise3D(0.95,0.95,-0.25,0,0,-1)=3.10581 GradientNoise3D(0.95,0.95,-0.2,0,0,-1)=3.13047 GradientNoise3D(0.95,0.95,-0.15,0,0,-1)=3.15513 GradientNoise3D(0.95,0.95,-0.1,0,0,-1)=3.17979 GradientNoise3D(0.95,0.95,-0.05,0,0,-1)=3.20445
If Bug#1093642 is fixed by setting the scale to ~0.5, This function stops generating values anywhere close to -1 .. 1, it appears to fall within -0.29 .. 0.29 I am working on determining the cause of this side effect, it may result in a new bug report.