* Document addition function using bitwise operations
Added docstring explaining the bitwise addition method.
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Refactor addition function documentation and output
Updated docstring to clarify the use of bitwise operations for addition. Modified the output format of the result to include both input values.
---------
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Christian Clauss <cclauss@me.com>
* Improve documentation and educational comments in find_max.py
- Added clear explanation of Divide and Conquer approach
- Improved parameter descriptions for better understanding
- Enhanced comments to explain the algorithm steps
- Better documentation for educational purposes
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
---------
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Christian Clauss <cclauss@me.com>
Replace generic Exception with TypeError for non-integer inputs and ValueError for non-positive integers. Split the combined validation check into two separate checks for clearer error reporting. This follows Python best practices for exception handling.
Co-authored-by: Christian Clauss <cclauss@me.com>
sum_of_digits_recursion() was calling sum_of_digits() (the iterative version) instead of itself in the recursive case. This meant the function was not actually recursive as its name suggests.
Co-authored-by: Christian Clauss <cclauss@me.com>
* Add algorithm for approximating the nth root with Newton's Method
* updating DIRECTORY.md
* Fix typos in nth_root.py documentation and code
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
---------
Co-authored-by: Christian Clauss <cclauss@me.com>
Co-authored-by: cclauss <cclauss@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Replace for i in range(len(numbers)) with for number in numbers in both multiplicative_persistence() and additive_persistence(). Direct iteration is more Pythonic and avoids unnecessary index lookups.
* Fix ZeroDivisionError on zero operands in least_common_multiple
least_common_multiple_slow raised ZeroDivisionError for a zero operand (0 % n in the loop guard), e.g. least_common_multiple_slow(0, 5), and least_common_multiple_fast raised it for (0, 0) via floor-division by gcd(0, 0) == 0. The least common multiple is 0 whenever an operand is 0 (consistent with math.lcm), so both functions return 0 in that case. Adds doctests covering the zero inputs.
* Add zero-operand cases to least_common_multiple unit test
* Apply suggestion from @cclauss
---------
Co-authored-by: Christian Clauss <cclauss@me.com>
* Add evil_number algorithm in maths/special_numbers
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
---------
Co-authored-by: SARATHI-78 <sundarasarathi78@gmail.com>
Co-authored-by: Christian Clauss <cclauss@me.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* Add recursive factorial implementation
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* updating DIRECTORY.md
* Fix docstring and update input for factorial functions
Corrected docstring and improved input handling.
---------
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Christian Clauss <cclauss@me.com>
Co-authored-by: cclauss <cclauss@users.noreply.github.com>
* Add alternating harmonic series checker
* Add reference link for alternating harmonic series
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
---------
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
This adds a script to calculate the coefficients (e, f, g) of the
first fundamental form for parametric surfaces. This mathematical
framework is a core concept in differential geometry, used to measure
lengths, angles, and areas on a surface.
The implementation uses sympy for symbolic differentiation and
simplification. While standard mathematical notation dictates capital
E, F, and G for these coefficients, they are implemented as lowercase
to strictly adhere to PEP 8 N806 and pass the repository's required
Ruff linter pre-commit hooks.
Reference: https://en.wikipedia.org/wiki/First_fundamental_form
Author: singhc7
* add alternate harmonic series
* Add Alternating Harmonic Series
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
---------
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* enahasment: add spy number in maths-special numbers
* changes in return format
* changes in return format
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
---------
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* Add implementation for Trimorphic Number
An algorithm that checks if a number is trimorphic, which is a number whose cube ends with the same digits as the number itself
* Add doctests for is_trimorphic function
Added doctests for the is_trimorphic function to validate its behavior with various inputs, including edge cases.
* Enhance docstring for is_trimorphic function
Added parameter and return type documentation to is_trimorphic function.
* Rename trimorphic_number.py to maths/special_numbers/trimorphic_number.py
* updating DIRECTORY.md
---------
Co-authored-by: Christian Clauss <cclauss@me.com>
Co-authored-by: cclauss <cclauss@users.noreply.github.com>
* Add Padovan Sequence algorithm in maths
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
---------
Co-authored-by: Prakriti Manhar <prakritim01@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* Add Next_Prime_Number with prime checking logic
Implement function to find the next prime number.
* Rename Next_Prime_Number.py to next_prime_number.py
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Refactor prime number functions and add type hints
---------
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* Add Python function to check Disarium numbers
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* updating DIRECTORY.md
* Add documentation link for Disarium number check
Added a link to Rosetta Code for Disarium numbers.
---------
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Christian Clauss <cclauss@me.com>
Co-authored-by: cclauss <cclauss@users.noreply.github.com>
* Add comprehensive test coverage for maths.abs module
- Added test_abs.py with pytest-compatible tests- Tests cover abs_val, abs_min, abs_max, and abs_max_sort functions- Includes edge cases, error conditions, and consistency checks
- Follows existing test patterns in the repository- Improves test coverage for issue #9943
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Fix import formatting for ruff linter compliance
* updating DIRECTORY.md
---------
Co-authored-by: rvasikarla <rvasikarla@splunk.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Christian Clauss <cclauss@me.com>
Co-authored-by: cclauss <cclauss@users.noreply.github.com>
* Add Gauss-Seidel method implementation
Implement Gauss-Seidel method for solving linear systems.
* Update gauss-seidel-method.py
* Rename gauss-seidel-method.py to gauss_seidel_method.py
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Rename parameters in Gauss-Seidel method
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Enhance gauss_seidel function documentation and code style
Refactor gauss_seidel method for improved readability and clarity.
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Enhance Gauss-Seidel method with result rounding
Added rounding to results for stable test comparison.
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Clean up comments in Gauss-Seidel method
Removed comments related to convergence check and result rounding.
* updating DIRECTORY.md
---------
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Christian Clauss <cclauss@me.com>
Co-authored-by: cclauss <cclauss@users.noreply.github.com>
* Add function to check abundant numbers
Introduces is_abundant_number to determine if a number is abundant by checking if the sum of its proper divisors exceeds the number itself. Includes doctests and input validation.
* updating DIRECTORY.md
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* updating DIRECTORY.md
* Clarify return value in is_abundant_number function
Updated docstring to clarify the function's return value.
---------
Co-authored-by: ArunKishoreVoleti <ArunKishoreVoleti@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Christian Clauss <cclauss@me.com>
Co-authored-by: cclauss <cclauss@users.noreply.github.com>
* Add function to check deficient numbers
Introduces is_deficient_number to determine if a number is deficient by comparing the sum of its proper divisors to the number itself. Includes input validation and doctests for correctness.
* updating DIRECTORY.md
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Update deficient_numbers.py
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Update deficient_numbers.py
Fixed code issue
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* updating DIRECTORY.md
* Add docstring for deficient number explanation
Added a docstring explaining deficient numbers and provided examples.
---------
Co-authored-by: ArunKishoreVoleti <ArunKishoreVoleti@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Christian Clauss <cclauss@me.com>
Co-authored-by: cclauss <cclauss@users.noreply.github.com>
* Add Disarium number checker implementation
Introduces is_disarium_number function to check if a number is a Disarium number, including input validation and doctests for various cases.
* updating DIRECTORY.md
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* updating DIRECTORY.md
* Clarify Disarium number definition in comments
Updated the definition of a Disarium number for clarity.
---------
Co-authored-by: ArunKishoreVoleti <ArunKishoreVoleti@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Christian Clauss <cclauss@me.com>
Co-authored-by: cclauss <cclauss@users.noreply.github.com>
* Added a polygon triangulation algorithm with the ear clipping method. (ear_clipping_polygon_triangulation.py)
* Clarification of parameter names and provide type hint for a parameter in maths/ear_clipping_polygon_triangulation.py. (Action requested by algorithms-keeper bot).
* updating DIRECTORY.md
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* updating DIRECTORY.md
---------
Co-authored-by: Christian Clauss <cclauss@me.com>
Co-authored-by: cclauss <cclauss@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <pre-commit-ci[bot]@users.noreply.github.com>
* Add binomial_expansion function building on binomial_coefficient
- Computes (a + b)^n for both positive and negative integer exponents
- Uses existing binomial_coefficient function for term computation
- Raises ZeroDivisionError when base is 0 and exponent is negative
- Includes doctests and example cases
* add URL
* add IPv6 address validator with doctests
* update documentation to include the references
* Enhance _is_valid_group with detailed docstring
Added docstring to _is_valid_group function with examples.
---------
Co-authored-by: Jishnu-Pramod <Jishnu.Pramod@ibm.com>
Co-authored-by: Christian Clauss <cclauss@me.com>
* Add digital root algorithm
* refactor: use descriptive parameter name `number` instead of `n` (algorithms-keeper)
Also see: project_euler/problem_092/sol1.py
* Update pi monte carlo script to run tests with fixed seed.
* updating DIRECTORY.md
* Update pi_monte_carlo_estimation.py
* Import pi from math module
---------
Co-authored-by: Christian Clauss <cclauss@me.com>
Co-authored-by: cclauss <cclauss@users.noreply.github.com>
Closes the remaining items in #13171: friendly ValueError for non-numeric
inputs (str/dict) instead of raw numpy messages, optional axis=None for a
whole-array distribution, documented NaN/inf behavior, and doctests covering
identical logits, large (overflow-prone) logits, 2-D axis selection, empty
input, non-numeric input, and out-of-bounds axis.
Importing maths.matrix_exponentiation raised 'NameError: name Matrix is
not defined' because __mul__ and modular_exponentiation annotate with
Matrix before the class name is bound (annotations evaluate eagerly at
class-body execution time).
Add 'from __future__ import annotations' to defer annotation evaluation,
matching the pattern used elsewhere in the repo.
Verified on current master: import succeeds (NameError gone) and all 10
doctests pass.
Signed-off-by: sudo-ai-git <sudo-ai-git@users.noreply.github.com>
Co-authored-by: sudo-ai-git <sudo-ai-git@users.noreply.github.com>
* feat: add numerical laplace transform
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Update maths/laplace_transformation.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* refactor: add input validation and fix doctest precision
* fix: address PR review comments
Updated module docstring, added validation for non-negative s_value, and replaced arrange with linspace for clarity.
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Refactor docstring and remove unnecessary blank lines
Removed extra blank lines and cleaned up docstring.
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Refactor error handling for s_value check
* Fix indentation for s_value validation
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
---------
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Add Sieve of Atkin algorithm for efficient prime generation
Implement the Sieve of Atkin algorithm as an alternative to the existing
Sieve of Eratosthenes. This modern algorithm offers better theoretical
complexity O(n / log log n) and uses quadratic forms for prime detection.
Features:
- Comprehensive docstring with algorithm explanation
- Type hints and input validation
- Extensive doctests covering edge cases
- Follows repository coding conventions
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Fix: add missing newline at end of file
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Delete pr_description.txt
* Enhance documentation for Sieve of Atkin
Added additional explanation about the Sieve of Atkin algorithm.
---------
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Christian Clauss <cclauss@me.com>
* Add Brent's Method for root finding (numerical analysis)
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Fix parameter names and lint issues in Brent's Method
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Fix import name
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Rename maths/brent_method.py to maths/numerical_analysis/brent_method.py
---------
Co-authored-by: debesh <debeshmaheshwari008@gmail.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Christian Clauss <cclauss@me.com>
* Add Tonelli-Shanks modular square root algorithm.
Implements Legendre symbol checks and both the p≡3 (mod 4) fast path and
the full Tonelli-Shanks procedure, with doctests for success and error cases.
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Fix ruff EM102 by assigning exception messages before raise.
---------
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* Add improved doctrings and doctests for math/perfect_number.py
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
---------
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Christian Clauss <cclauss@me.com>