Metadata-Version: 2.4
Name: rthon
Version: 0.4.0
Summary: R-style probability functions for Python with high-performance C linear regression
Author-email: Sam Switz <samuel76@illinois.edu>
License-Expression: MIT
Project-URL: Homepage, https://github.com/sdswitz/rthon
Keywords: statistics,probability,R,distributions,normal,uniform,binomial,poisson,exponential,gamma
Classifier: Programming Language :: Python :: 3
Classifier: Intended Audience :: Science/Research
Classifier: Topic :: Scientific/Engineering :: Mathematics
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy>=1.19.0
Provides-Extra: dev
Requires-Dist: pytest; extra == "dev"
Requires-Dist: hypothesis; extra == "dev"
Requires-Dist: ruff; extra == "dev"
Requires-Dist: black; extra == "dev"
Requires-Dist: build; extra == "dev"
Requires-Dist: twine; extra == "dev"
Dynamic: license-file

# rthon

R-style probability functions for Python, providing familiar statistical distribution functions with R-compatible interfaces.

## Features

Currently supports these probability distributions:

- **Normal Distribution**: `dnorm`, `pnorm`, `qnorm`, `rnorm`
- **Uniform Distribution**: `dunif`, `punif`, `qunif`, `runif`
- **Binomial Distribution**: `dbinom`, `pbinom`, `qbinom`, `rbinom`
- **Poisson Distribution**: `dpois`, `ppois`, `qpois`, `rpois`
- **Exponential Distribution**: `dexp`, `pexp`, `qexp`, `rexp`
- **Gamma Distribution**: `dgamma`, `pgamma`, `qgamma`, `rgamma`

### TODO:
- Implement the lm() function, which uses the QR decomposition (WIP)
    - It does something, but is very wrong. Maybe look into using basic numpy functions
    - or vibe code some C/C++ functions, starting with very basic building blocks

## Installation

```bash
pip install rthon
```

## Quick Start

```python
from rprob import dnorm, pnorm, qnorm, rnorm

# Normal distribution examples
dnorm(0)        # PDF at x=0
pnorm(1.96)     # CDF at x=1.96
qnorm(0.975)    # Quantile for p=0.975
rnorm(10)       # 10 random samples

# All functions support R-style parameters
pnorm(1.96, lower_tail=False, log=True)
dnorm([0, 1, 2], mean=1, sd=2)
```

## License

MIT License 
