Re-pin SNOISE_LIPSCHITZ to 7.9640074 on the tie-fixed kernel
MeasureLipschitz on e89fd687 (Yggdrasil): sampled 7.1933103, refined 7.2400064,
x 1.10 = 7.9640074, witness (229.92526, 73.37927, -66.14595). The old 9.181147
sat on the diagonal tie. C#, both Interval.hlsl copies, the pin test's witness
and design.md's provenance numbers move together; CultMath.glsl follows with the
regenerated fixture.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
e89fd68778
commit
30448bb45e
5 changed files with 5 additions and 5 deletions
|
|
@ -571,7 +571,7 @@ with no tolerance.
|
|||
`L` has provenance, not a proof. `NoiseBoundTests.MeasureLipschitz` (slow,
|
||||
explicit) takes the largest `|snoise_grad|` over 1e6 seeded points in
|
||||
[-256, 256]^3 (7.1933103), refines the 1e4 largest by gradient ascent
|
||||
(9.181147), and multiplies by 1.10: `L = 10.099261`. It also reaches
|
||||
(7.2400064), and multiplies by 1.10: `L = 7.9640074`. It also reaches
|
||||
`|snoise| = 0.9718335` by the same ascent on the value, which is what lets the
|
||||
bound intersect with `[-1, 1]`. `LipschitzConstantPinsSampledGradients`
|
||||
checks 1e5 more seeded points against `L` and climbs again from the start
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
// Included by CultMath.hlsl after its own definitions of cultmath_smoothstep and cultmath_snoise.
|
||||
|
||||
// Lipschitz constant of cultmath_snoise(float3); provenance in math.Interval.cs (SNOISE_LIPSCHITZ).
|
||||
static const float CULTMATH_SNOISE_LIPSCHITZ = 10.099261;
|
||||
static const float CULTMATH_SNOISE_LIPSCHITZ = 7.9640074;
|
||||
|
||||
float2 cultmath_iv_point(float value) { return float2(value, value); }
|
||||
float2 cultmath_iv_add(float2 a, float2 b) { return float2(a.x + b.x, a.y + b.y); }
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ public static partial class math
|
|||
// against a fast re-measure and the ascent from MeasureLipschitz's witness.
|
||||
// Empirical with a margin, not a proof; the enclosure tests are the defence. A change to the
|
||||
// snoise kernel must re-run MeasureLipschitz and re-pin this constant.
|
||||
public const float SNOISE_LIPSCHITZ = 10.099261f;
|
||||
public const float SNOISE_LIPSCHITZ = 7.9640074f;
|
||||
|
||||
/// <summary>The point interval [x, x].</summary>
|
||||
public static float2 iv_point(float value) => new(value, value);
|
||||
|
|
|
|||
|
|
@ -456,7 +456,7 @@ public sealed class NoiseBoundTests
|
|||
}
|
||||
|
||||
// The start MeasureLipschitz printed as its witness.
|
||||
private static readonly float3 LipschitzWitness = new(-241.98447f, -249.98927f, -60.058212f);
|
||||
private static readonly float3 LipschitzWitness = new(229.92526f, 73.37927f, -66.14595f);
|
||||
|
||||
/// <summary>
|
||||
/// Pins SNOISE_LIPSCHITZ: no |snoise_grad| over 1e5 seeded points exceeds it, and the ascent from
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
// Included by CultMath.hlsl after its own definitions of cultmath_smoothstep and cultmath_snoise.
|
||||
|
||||
// Lipschitz constant of cultmath_snoise(float3); provenance in math.Interval.cs (SNOISE_LIPSCHITZ).
|
||||
static const float CULTMATH_SNOISE_LIPSCHITZ = 10.099261;
|
||||
static const float CULTMATH_SNOISE_LIPSCHITZ = 7.9640074;
|
||||
|
||||
float2 cultmath_iv_point(float value) { return float2(value, value); }
|
||||
float2 cultmath_iv_add(float2 a, float2 b) { return float2(a.x + b.x, a.y + b.y); }
|
||||
|
|
|
|||
Loading…
Reference in a new issue