Metadata-Version: 2.4
Name: nrt-math-utils
Version: 1.0.5
Summary: Math utilities in Python
Home-page: https://github.com/etuzon/python-nrt-math-utils
Author: Eyal Tuzon
Author-email: Eyal Tuzon <eyal.tuzon.dev@gmail.com>
Project-URL: Homepage, https://github.com/etuzon/python-nrt-math-utils
Project-URL: Bug Tracker, https://github.com/etuzon/python-nrt-math-utils/issues
Project-URL: documentation, https://github.com/etuzon/python-nrt-math-utils/wiki
Keywords: python,python3,python-3,tool,tools,math,mathematics,utilities,utils,util,nrt,nrt-utils,nrt-utilities,math-utils,math-utilities,nrt-utilities,nrt-math-utils,nrt-math-utilities
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Operating System :: OS Independent
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy>=1.26.4
Requires-Dist: nrt-collections-utils>=1.0.0
Dynamic: author
Dynamic: home-page
Dynamic: license-file
Dynamic: requires-dist

# Mathematics Utilities

### Mathematics utilities in Python.

![PyPI](https://img.shields.io/pypi/v/nrt-math-utils?color=blueviolet&style=plastic)
![PyPI - Python Version](https://img.shields.io/pypi/pyversions/nrt-math-utils?color=greens&style=plastic)
![PyPI - License](https://img.shields.io/pypi/l/nrt-math-utils?color=blue&style=plastic)
![PyPI - Downloads](https://img.shields.io/pypi/dd/nrt-math-utils?style=plastic)
![PyPI - Downloads](https://img.shields.io/pypi/dm/nrt-math-utils?color=yellow&style=plastic)
[![Coverage Status](https://coveralls.io/repos/github/etuzon/python-nrt-math-utils/badge.svg)](https://coveralls.io/github/etuzon/pytohn-nrt-math-utils)
![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/etuzon/python-nrt-math-utils?style=plastic)
![GitHub last commit](https://img.shields.io/github/last-commit/etuzon/python-nrt-math-utils?style=plastic)
[![DeepSource](https://app.deepsource.com/gh/etuzon/python-nrt-math-utils.svg/?label=active+issues&show_trend=false&token=Ly6vE3lLp94vOwUzDfMzb9Oy)](https://app.deepsource.com/gh/etuzon/python-nrt-math-utils/)

## MathUtil class

### Methods

| **Method**       | **Description**                                                                                           | **Parameters**                                                                                             | **Returns**                                               |
|------------------|-----------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------|
| `average`        | Calculates the weighted average of a list of numbers.                                                     | `numbers (list)` The list of numbers to calculate the average of.<br>`weights (list)` The list of weights. | `DecimalNumber` The average of the numbers.               |
| `floor`          | Returns the floor of a number.                                                                            | `number` The number to calculate the floor of.<br>`digits` Digits amount to cut from the number.           | `number type` The floor of the number.                    |
| `is_all_numbers` | Checks if all elements in a list are numbers.                                                             | `elements (list)` The list of elements to check.                                                           | `bool` True if all elements are numbers, False otherwise. |
| `max`            | Returns the maximum number from variable elements, which can be numbers or an iterable objects like list. | `*elements` Variable arguments, which can be numbers or an iterable objects like list.                     | `number type` The maximum number in the list.             |
| `min`            | Returns the minimum number from variable elements, which can be numbers or an iterable objects like list. | `*elements` Variable arguments, which can be numbers or an iterable objects like list.                     | `number type` The minimum number in the list.             |
| `sum_0_to_n`     | Returns the sum of numbers from 0 to n.                                                                   | `n` The number to sum up to.                                                                               | `number type` The sum of numbers from 0 to n.             |

### Examples:

- #### MathUtil.average

  **Code**
  ```python
  from nrt_math_utils.math_utils import MathUtil
  
  # Calculate the weighted average of a list of numbers
  average = MathUtil.average([1, 2, 3, 4, 5], [1, 5, 6, 7, 8])
  
  print(average)
  ```
  **Output**
  ```
  3.592593
  ```
  
- #### MathUtil.floor
        
  **Code**
  ```python
  from nrt_math_utils.math_utils import MathUtil
  
  # Calculate the floor of a number
  floor = MathUtil.floor(3.14159, 2)
  
  print(floor)
  ```
  **Output**
  ```
  3.14
  ```

- #### MathUtil.is_all_numbers
  
  **Code**
  ```python
  from nrt_math_utils.math_utils import MathUtil

  # Check if all elements in a list are numbers
  is_all_numbers = MathUtil.is_all_numbers([1, 2, 3, 4, 5])

  print(is_all_numbers)
  ```
  **Output**
  ```
  True
  ```

- #### MathUtil.max

  **Code**
  ```python
  from nrt_math_utils.math_utils import MathUtil

  # Get the maximum number from a list
  max_number = MathUtil.max(1, [2, 7, [8, 9]], 3, 4, 5)

  print(max_number)
  ```
  **Output**
  ```
  9
  ```
  
- #### MathUtil.min
    
  **Code**
  ```python
  from nrt_math_utils.math_utils import MathUtil

  # Get the minimum number from a list
  min_number = MathUtil.min(1, [2, 7, [0, 9]], 3, 4, 5)

  print(min_number)
  ```
  **Output**
  ```
  0
  ```

- #### MathUtil.sum_0_to_n
  
  **Code**
  ```python
  from nrt_math_utils.math_utils import MathUtil

  # Get the sum of numbers from 0 to n
  sum_0_to_n = MathUtil.sum_0_to_n(5)

  print(sum_0_to_n)
  ```
  **Output**
  ```
  15
  ```

## DecimalNumber class

Represents a decimal number with a fixed number of decimal places.

### Examples:

- #### Create a DecimalNumber object

  **Code**
  ```python
  from nrt_math_utils.nrt_numbers import DecimalNumber

  # Create a DecimalNumber object with a value of 3.14159 and 2 decimal places
  decimal_number = DecimalNumber(3.14159, 2)

  print(decimal_number)
  ```
  **Output**
  ```
  3.14
  ```
  
- #### Create a DecimalNumber object with default decimal places

  **Code**
  ```python
  from nrt_math_utils.nrt_numbers import DecimalNumber

  # Create a DecimalNumber object with a value of 3.14159 and default 6 decimal places
  decimal_number = DecimalNumber(3.1415926535897)
  print(decimal_number)
  ```

  **Output**
  ```
  3.141593
  ```

- #### Add two DecimalNumber objects

  **Code**
  ```python
  from nrt_math_utils.nrt_numbers import DecimalNumber

  # Create two DecimalNumber objects
  decimal_number_1 = DecimalNumber(3.14159, 2)
  decimal_number_2 = DecimalNumber(2.71828, 2)

  # Add the two DecimalNumber objects
  result = decimal_number_1 + decimal_number_2

  print(result)
  ```
  **Output**
  ```
  5.86
  ```
  
- #### Subtract a number from DecimalNumber

  **Code**
  ```python
  from nrt_math_utils.nrt_numbers import DecimalNumber

  # Create a DecimalNumber object
  decimal_number = DecimalNumber(3.14159, 2)
  
  # Subtract a number from the DecimalNumber object
  result = decimal_number - 1.23456
  
  print(result)
  ```

  **Output**
  ```
  1.91
  ```

- #### Multiply DecimalNumber with other number

  **Code**
  ```python
  from nrt_math_utils.nrt_numbers import DecimalNumber

  # Create a DecimalNumber object
  decimal_number = DecimalNumber(3.14159, 2)

  # Multiply the DecimalNumber object with another number
  result = decimal_number * 2
  
  print(result)
  ```

  **Output**
  ```
  6.28
  ```
  
- #### Compare DecimalNumber to other number

  **Code**
  ```python
  from nrt_math_utils.nrt_numbers import DecimalNumber

  # Create a DecimalNumber object
  decimal_number = DecimalNumber(3.14159, 2)
  
  # Compare the DecimalNumber object to another number
  result = decimal_number > 3.14
  
  print(result)
  ```

  **Output**
  ```
  True
  ```
