Skip to content

Finished Convolve + Added to Readme#12

Merged
Oceania2018 merged 1 commit into
SciSharp:masterfrom
dotChris90:master
Oct 18, 2018
Merged

Finished Convolve + Added to Readme#12
Oceania2018 merged 1 commit into
SciSharp:masterfrom
dotChris90:master

Conversation

@dotChris90

Copy link
Copy Markdown
Member

@Oceania2018 Oceania2018 merged commit badb5f5 into SciSharp:master Oct 18, 2018
Nucs added a commit that referenced this pull request Jun 6, 2026
Adds oracle/fuzz_random.py: a seeded, reproducible random generator that draws random
transposed/strided/reversed views (random ndim<=4, dims, stride perms/signs), random dtypes,
and random ops across all tiers, computes the NumPy 2.4.2 result, and writes a committed
corpus the C# harness replays. FuzzRandom replays a 2000-case seed (1234); FuzzRegression
replays shrunk soak failures from corpus/regressions/ (empty until the soak finds one).

Shrinker.cs minimizes a failing element-wise case to a single 0-D element using the corpus's
own expected byte at the diverging index (no NumPy needed); RunCorpus emits the minimal repro
in the failure message so a soak find is immediately committable. A self-test proves the
shrunk case reproduces the divergence (bool add True+True).

The random fuzzer is scoped to NumSharp-PRODUCIBLE layouts: NumSharp's slicing normalizes
offset into the storage base (Shape.offset stays 0) and keeps consistent size-1 strides, so
reconstructing NumPy's RAW offset!=0 / junk-size-1-stride representation exposes ops that
assume the normalized form (real but unreachable via the API; tracked as task #11). With that
scoping the random gate is green; it surfaced three NEW divergence classes the fixed matrices
missed (tasks #11, #12):
  bool arithmetic    True+True -> NumSharp 2 vs NumPy bool True.
  size-1 collapse    NumSharp collapses an all-size-1 result to 0-D; NumPy keeps [1].
  complex binary     multiply (and divide on some data) catastrophic cancellation + ~1 ULP.

Shape divergences now route through the classifier too. FuzzMatrix category: 16 passed.
Nucs added a commit that referenced this pull request Jun 6, 2026
Adds docs/FUZZ_FINDINGS.md: every NumSharp-vs-NumPy-2.4.2 divergence the differential fuzzer
surfaced, each bit-exact verified, with minimal NumPy-vs-NumSharp reproductions, root cause where
known, and disposition (FIXED / BUG / INTENDED / SCOPING) mapped to tasks #7-#12.

22 findings: 1 fixed (complex->bool), 18 confirmed bugs (integer ÷0/mod0, float //0,
mixed-precision mod, complex power; NaN <=/>=; NEP50 unary promotion, negative-unsigned,
reciprocal, complex unary; reduction NaN propagation, complex-axis throw, bool min/max,
summation precision, result dtype; complex where throw; bool arithmetic, size-1 collapse,
complex binary cancellation), 2 intended Misaligned (NEP50 weak-scalar, complex-divide ULP),
1 scoping note (ops vs raw offset!=0 / junk size-1 strides).
Nucs added a commit that referenced this pull request Jun 6, 2026
…al-noncontig (Phase 1)

Two findings turned out PARTIALLY resolved in committed code; tightened the classifier
to verify the resolved sub-cases bit-exact while excusing only the precise residuals.

FUZZ_FINDINGS #12 (complex axis reduction): reducing a complex 2-D+ array along an axis
(sum/mean/prod/std/var/min/max) now works bit-exact (std(complex2d, axis=0) -> real
float64, verified without the uncommitted NpyIter.cs). Only a 1-D complex array reduced
along its only axis still throws 'NDCoordinatesAxisIncrementor with a vector shape'.
The classifier now excuses just that 1-D Threw case; the 2-D matrix is gate-verified.

FUZZ_FINDINGS #9 (reciprocal non-contiguous): reciprocal on a non-contiguous FLOAT
operand (transposed/strided) now works. reciprocal(int) still returns the float64
reciprocal (vs NumPy's integer ÷0 sentinel) and still throws on a non-contiguous
integer operand (the int->float path needs a flat Address) — both pending F3b. The
classifier scoped to integer input (value diff or non-contig throw); float non-contig
is gate-verified.

No production code change — corpus replay confirmed the resolutions are in committed
code. net10.0 FuzzMatrix 17/17 green. Documents the exact resolved-vs-pending split
for #9 and #12.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants