poly_eval — MATH interp_poly op

• Data kinds: signal × signal → signal

• Call: import fullseye as fs; fs.ledger.poly_eval(coeffs, x) (implementation को सीधे call करना हो तो import mathops; mathops.poly_eval(coeffs, x), registry से लेना हो तो opsmath.get("poly_eval"))

उपयोग

polynomial (coefficients उच्चतम power पहले) को *x* पर evaluate करता है।

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

*coeffs* is the 1-D array poly_fit returns in "coeffs" (or any hand-written one, [c_d, ..., c_1, c_0]); *x* is a finite scalar or 1-D array. A scalar returns a Python float, an array returns float64. Evaluation is by Horner's scheme (np.polyval) — numerically the right way to evaluate, though it cannot repair a badly-conditioned *fit* (see poly_fit's cond).

HALCON: no polynomial tuple operator (compose tuple_pow + arithmetic).

Raises ValueError when a finite input overflows float64 — a degree-*d* polynomial at |x| well above 1 grows like |x|**d, so mixing up the two arguments (a long signal used as coefficients) silently produced inf before this guard (chain fuzzer wave-7: 256 coefficients evaluated at |x|<=22 -> 22**255). An unusable inf must not flow downstream.

पूरी 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

• signal_filter — py -3.11 examples/signal_filter.py

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

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

इसी category के (interp_poly)

interp_linear · interp_cubic · interp_scattered · poly_fit · 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.