fphics 0.2.0

A pure zero-dependency rust physics and maths library that deals with mathematical conversions, and physics calculations using accurate, verified formulas - with zero estimations to ensure accuracy
Documentation
# fphics

A lightweight mechanics, physics and maths solver written with zero dependencies - enforcing type safety with useful error messages.

### What does fphics do, and what is it?

- First of all, the name is an abbreviation of the following:
  - **f** - Fast (Since it's a lightweight library)
  - **ph** - Physics (Includes physics formulas for motion, forces, electricity...etc)
  - **ic** - Mechanics (Includes mechanics formulas, which of course are interchangeable with physics ones in most cases)
  - **s** - Mathematics (Includes maths formulas for percentages, unit conversions...etc)

## Features

There's various mathematical and scientific operations possible with this library:
  - **Kinematics equations operations**
  - **Unit conversions**

**NOTE:** This library does not use any dependencies and all operations dealt with involve accurate mathematics with verified equations to efficiently produce exact accurate values without estimations!

## Future features

- **Electricity equations operations**
- **Operations dealing with forces and motion**

### How to use? (Simple code example for calculating time)

```rust
use fphics::physics::suvat::*;
use fphics::errors::FphicsError;

fn main() -> Result<(), FphicsError> {
    let times = SuvatOps1D::new()
    .displacement(-2.5) // Set the displacement
    .initial_velocity(24.0) // Set the initial velocity
    //.final_velocity(25.0) // Set the final velocity (Optional, but not required since only 3 variables are required
    .acceleration(-9.8) // Set the acceleration
    .calculate_time()?; // Calculate time and propagate any possible errors
    
    // Loop through the times vector holding the positive and negative values from the calculation
    for t in times {
      println!("{t} seconds"); // Print the positive and negative value for the time
    }

    Ok(())
}

```

### An example using the maths module to convert cm to m

```rust
use fphics::maths::*;
use fphics::errors::FphicsError;

fn main() -> Result<(), FphicsError> {
  let cm = 1_234.5; // Use any floating point value for the Centimetre value

  let centimetre = Unit::new().from_metric_length(MetricLengthUnit::CentiMetre, cm); // Create an instance of the Unit struct with its unit as Centimetre
  
  let metre = centimetre.metric_to_metric(MetricLengthUnit::Metre)?; // Get the Metre value from the cm value

  println!("{}cm is {}m", cm, metre); // Print the result to stdout

    Ok(())
}

```

**NOTE:** You can also run the examples located in the `examples/` directory.

You can find the documentation on:
  - [fphics]https://crates.io/crates/fphics
  - [docs]https://docs.rs/fphics

Thank you for checking out **fphics**!