cplx_contour_integral — MATH complex op

• Data kinds: cpoints × cpoints → cscalar

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

उपयोग

chordal trapezoidal rule से closed contour integral ∮ f(z) dz।

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

*z* are the contour vertices (closing segment implicit, see cplx_contour_circle) and *fz* the function sampled at exactly those points — the op never calls back into Python, so any f is allowed as long as you can sample it. The quadrature is sum_k (f_k + f_{k+1})/2 * (z_{k+1} - z_k), i.e. the trapezoidal rule along the *chords*; it is exact for a piecewise-linear integrand and second order otherwise.

Ground truth it reproduces: f = 1/(z - a) around a circle enclosing a integrates to 2*pi*i (Cauchy); measured on the unit circle with a = 0, the relative error is 1.0e-4 at n = 256 and 6.3e-6 at n = 1024 — a factor 16.0 for 4x refinement, i.e. the O(n^-2) rate, *not* the spectral accuracy the trapezoid rule enjoys when applied in the angle parameter. That difference is the honest price of accepting an arbitrary point list instead of a parametrisation.

Orientation follows the sample order: a clockwise contour returns the negative of the counter-clockwise one.

Raises ValueError: fewer than 3 points, len(z) != len(fz), a degenerate contour (all points coincide), non-finite/masked input, or a sum that overflowed (|f| near a pole *on* the path).

HALCON: no operator (contour integration is not part of its tuple/XLD API).

पूरी 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_complex — py -3.11 examples/math_complex.py

• representation_conversion — py -3.11 examples/representation_conversion.py

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

—

इसी category के (complex)

cplx_contour_circle · cplx_poly_eval · cplx_winding_number · cplx_cauchy_value · cplx_argument_principle · cplx_laurent_coeffs · cplx_joukowski · cplx_mobius


*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.