exp_root_log 0.1.0

Fast and interpretable function approximation with exp-root-log basis
Documentation
# ExpRoot+Log: A Linear and Universal Basis for Function Approximation

ExpRoot+Log is a fast and interpretable function approximation method based on a hybrid linear basis. It combines exponential square-root, polynomial, and logarithmic terms to efficiently approximate a wide range of functions, including smooth, discontinuous, and decaying ones.

## Features

-   **Fast and accurate**: Uses a minimal set of basis functions for efficient function approximation.
-   **Interpretable**: Each term in the basis has a clear mathematical interpretation.
-   **Flexible**: Can handle smooth, discontinuous, and asymptotically decaying functions.
-   **Linear regression**: Uses standard least-squares fitting for optimal performance.

## Usage

### Add the dependency to `Cargo.toml`:

```toml
[dependencies]
exp_root_log = "0.1.0"
```

---

## 📂 `examples/demo.rs`:

```rust
use exp_root_log::approx_exp_root_log;

fn main() {
    // Generate test data
    let x: Vec<f64> = (0..100).map(|i| i as f64 / 100.0).collect();
    let y: Vec<f64> = x.iter().map(|&x| (2.0 * std::f64::consts::PI * x).sin()).collect();

    // Create the approximation function using ExpRoot+Log
    let approx_fn = approx_exp_root_log(
        &x,
        &y,
        &[0.5, 2.0, 5.0, 10.0, 20.0],    //  b_i
        5,                                  //  x^5
        &[1.0, 5.0, 10.0, 20.0],           // log params
    );


    // Evaluate the approximation
    let y_pred: Vec<f64> = x.iter().map(|&xi| approx_fn(xi)).collect();

    // Print the result
    println!("Approximated values: {:?}", y_pred);
}
```