Metadata-Version: 2.4
Name: numforge
Version: 0.5.3
Summary: NumPy + engineering numerical methods cheatcode pack.
Author-email: Aferiad Kamal <kamal@aferiad.xyz>
Project-URL: Homepage, https://numforge.gadzarts.xyz/
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.8
Description-Content-Type: text/markdown
Requires-Dist: numpy>=1.20.0
Requires-Dist: matplotlib>=3.3.0

# numforge 🧬

> **NumPy + engineering numerical methods cheatcode pack.**

`numforge` (built as `numpyy` internally) is a lightweight Python library designed for engineering students. It wraps NumPy and adds essential numerical methods, formulas, and code snippets taught in introductory numerical analysis courses.

## Installation

```bash
pip install numforge
```

## Import Style

```python
import numpyy as np
```

## Why numforge?

| Feature                  | NumPy | numforge |
| ------------------------ | ----- | -------- |
| Numerical methods        | ❌     | ✅        |
| Formula database         | ❌     | ✅        |
| Exam snippets            | ❌     | ✅        |
| Educational explanations | ❌     | ✅        |
| Step-by-step tables      | ❌     | ✅        |
| Exam-ready representations| ❌     | ✅        |
| Lab Assistant Mode       | ❌     | ✅        |
| **TP Report Generation**  | ❌     | ✅        |

---

## 🧪 Lab Assistant Mode

Need a quick workflow for your lab or project? Use `solve_tp`:

```python
import numpyy as np
np.solve_tp("interpolation")
```

Want to generate a professional Markdown report for your results?

```python
findings = [
    {'method': 'Simpson', 'result': 0.3333, 'error': 1e-7},
    {'method': 'Trapezoidal', 'result': 0.3437, 'error': 0.01}
]
np.tp_report("Integration Lab", "Student Name", findings)
```

---

## 🎓 Educational Features

### Educational Mode
See intermediate steps, formulas, and error warnings:
```python
np.set_mode("educational") # Global
np.simpson(f, 0, 1, educational=True) # Per call
```

### Help & Summary
```python
np.explain("simpson") # Instant revision guide
np.exam_formula_sheet() # Compact printable revision page 😭
```

---

## 🛠 Modules & Functions

### 1. Floating Point & Errors (`np.floating`)
*   `np.float_repr(x)` - **Exam Clutch:** Sign, Exponent, Mantissa representation
*   `np.ieee754_encode(x)` / `np.ieee754_decode(bits)` - IEEE754 components
*   `np.cancellation_demo()` / `np.absorption_demo()` - Precision loss demos
*   **Constants:** `np.EPSILON`, `np.FLOAT32_EPSILON`, `np.FLOAT64_EPSILON`

### 2. Interpolation (`np.interpolation`)
*   `np.lagrange(x_pts, y_pts)` / `np.newton_interpolation(x_pts, y_pts)`
*   `np.newton_polynomial(x_pts, coeffs)` - Newton form evaluation
*   `np.divided_differences(x, y)` - Newton coefficients
*   `np.chebyshev_nodes(a, b, n)` - Optimal nodes
*   `np.vandermonde_matrix(x)` - Construct Vandermonde matrix
*   `np.legendre(n)` - Legendre coefficients via recurrence

### 3. Approximation & Stability (`np.approximation`)
*   `np.least_squares(x, y, degree)` / `np.least_squares_origin(x, y)`
*   `np.normal_equations(x, y, degree)` - Returns $(A^T A, A^T y)$
*   `np.condition_number(A)` / `np.is_ill_conditioned(A)` - Stability checks

### 4. Polynomials (`np.polynomials`)
*   `np.horner(coeffs, x)` / `np.horner_steps(coeffs, x)` - Horner's evaluation
*   `np.pretty_polynomial(coeffs)` - `P(x) = 3x^2 - 2x + 1`
*   `np.taylor(f, a, n)` - Taylor series coefficients

### 5. Numerical Integration (`np.integration`)
*   **Methods:** `np.rectangle`, `np.midpoint`, `np.trapezoidal`, `np.simpson`
*   **Composite:** `np.composite_trapezoidal`, `np.composite_simpson`, `np.composite_midpoint`
*   **Error Formulas:** `np.trapezoidal_error`, `np.simpson_error`, etc.
*   **Gauss:** `np.gauss_legendre(f, a, b, n)`

### 6. Numerical Differentiation (`np.differentiation`)
*   `np.forward_diff`, `np.backward_diff`, `np.centered_diff`
*   `np.second_derivative`, `np.third_derivative`, `np.nth_derivative`
*   `np.optimal_h(f, x)` / `np.taylor_error(...)`

### 7. ODE Solvers (`np.ode`)
*   `np.euler`, `np.rk4`, `np.adams_bashforth`, `np.adams_moulton`

---

## 📊 Plotting Helpers
```python
np.plot_interpolation(f, poly, x_pts, y_pts, a, b)
np.plot_runge_phenomenon(n_points)
np.plot_convergence(ns, errors)
np.plot_integration(f, a, b, method="simpson")
```

---

## 🚀 Examples
Check `demo.py` for a complete tour of the library.
