interp_cubic — MATH interp_poly op

• Data kinds: signal × signal × signal → signal

• Call: import fullseye as fs; fs.ledger.interp_cubic(x, y, xq, out_of_range='raise', bc_type='not-a-knot') (implementation को सीधे call करना हो तो import mathops; mathops.interp_cubic(x, y, xq, out_of_range='raise', bc_type='not-a-knot'), registry से लेना हो तो opsmath.get("interp_cubic"))

उपयोग

Cubic-spline interpolation (scipy.interpolate.CubicSpline)।

> नीचे का विस्तृत विवरण मूल text में है — सारांश और headings का अनुवाद हो चुका है।

C²-smooth through all nodes — the step up from interp_linear when the underlying curve is smooth (a lens-distortion or gamma curve). Needs at least 4 points. *bc_type* is the boundary condition: 'not-a-knot' (default — reproduces a global cubic polynomial *exactly*, the property the tests pin), 'natural' (zero second derivative at the ends; slightly smoother-looking, but it will NOT reproduce a cubic), or 'clamped'.

Same strict grid and the same explicit *out_of_range* policy as interp_linear ('raise' by default, 'clamp' to hold end values) — spline extrapolation diverges cubically and is refused outright.

Honest note: between nodes a spline can overshoot (it is a minimum- curvature interpolant, not shape-preserving); for monotone data whose interpolant must stay monotone, use a PCHIP-type method instead — not provided here, stated so nobody assumes otherwise.

HALCON: no cubic tuple interpolation operator (create_funct_1d_pairs feeds linear interpolation only).

पूरी family का input contract (fail-closed)

mathops के सभी ops गणना से पहले input की जाँच करते हैं (कुछ भी चुपचाप पास नहीं होता):

• complex input से ValueError — float64 में ज़बरदस्ती बदलने पर imaginary part चुपचाप छूट जाता है (numpy केवल ComplexWarning देता है और "सही दिखने वाला पर गलत" real number लौटाता है)। .real/.imag/abs() स्पष्ट रूप से लिखें, या complex data संभालने वाले complexops का उपयोग करें।

• masked array (masked elements वाला) से ValueError — mask हटाकर नीचे के raw values इस्तेमाल करने वाला implicit conversion अस्वीकार है। भरना है या हटाना है, यह स्पष्ट रूप से बताएँ।

• हर input पर NaN/Inf से ValueError (गिनती बताकर अस्वीकार — क्योंकि यह पूरे परिणाम में फैल जाता है)।

• Shape सख़्त है: 1-D और 2-D को implicit रूप से promote या broadcast नहीं किया जाता (vector slot में matrix या matrix slot में vector देने पर ValueError; reshape स्पष्ट रूप से करें)।

• Size की सीमा: matrix लेने वाले ops और stat_histogram के bins, mathops.MAX_ELEMENTS (2^26 ≈ 6.7 करोड़ elements) से अधिक होने पर ValueError देते हैं।

उपयोग की विस्तृत guide

• math_metrology family guide

संदर्भ (sample data, साहित्य)

• Sample data catalog (DL URL / license) — 2-D के लिए skimage.data (BSD/public) + synthetic, 3-D के लिए real data sources (Stanford/PDS आदि) के DL URL।

• Operators का स्रोत और संदर्भ — इस op family के मूल research/methods के स्रोत।

• Algorithm का मानक स्रोत (लेखक, वर्ष) और उपयोग ऊपर की family usage guide में दिए गए हैं।

चलाए जा सकने वाले उदाहरण (verified samples जो सच में यह op call करते हैं)

• math_metrology — py -3.11 examples/math_metrology.py

वे अगले ops जिनसे type जुड़ता है (signal को input के रूप में लेते हैं)

mat_solve · mat_lstsq · stat_describe · stat_histogram · stat_zscore · interp_linear · interp_scattered · poly_fit

इसी category के (interp_poly)

interp_linear · interp_scattered · poly_fit · poly_eval · poly_roots


*Provenance: mathops.py — MATH operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.