mat_pinv — MATH linalg op

• Data kinds: matrix → matrix

• Call: import fullseye as fs; fs.ledger.mat_pinv(a, rcond=1e-12) (implementation को सीधे call करना हो तो import mathops; mathops.mat_pinv(a, rcond=1e-12), registry से लेना हो तो opsmath.get("mat_pinv"))

उपयोग

SVD से Moore-Penrose pseudo-inverse, cutoff explicit रखते हुए।

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

Singular values below rcond * s_max are treated as zero — that cutoff *is* the regularisation, so it is a named, documented parameter here (default 1e-12) rather than a hidden library default: raising it discards noisy directions (stabler, more biased), lowering it keeps them (exact for well-conditioned *A*, explosive near rank deficiency).

Works for any (m, n): pinv(A) @ b is the least-squares solution for m > n and the minimum-norm solution for m < n.

HALCON: no direct operator — HALCON reaches the same result through svd_matrix + reciprocal singular values.

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

पृष्ठभूमि guides (इस op के पीछे की physics और conventions)

• blas_threads_and_memory — Matrix decompositions धीमे क्यों हैं — BLAS threads, caches, memory layout

संदर्भ (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

• poc_machine_condition_fusion — py -3.11 examples/poc_machine_condition_fusion.py

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

mat_solve · mat_lstsq · mat_svd · mat_eigh · mat_cond · mat_lu · mat_qr · mat_cholesky

इसी category के (linalg)

mat_solve · mat_lstsq · mat_svd · mat_eigh · mat_cond · mat_lu · mat_qr · mat_cholesky


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