the-honk/languages/python/calculators
2024-10-09 18:02:42 +01:00
..
_helpers refactor: this whole honk thing is getting out of hand 2024-10-09 18:02:40 +01:00
Babylonian Square Root.py refactor: the big cleanse! 2024-10-09 18:02:42 +01:00
Binomial Distribution.py refactor: this whole honk thing is getting out of hand 2024-10-09 18:02:40 +01:00
Binomial Expansion.py refactor: the big cleanse! 2024-10-09 18:02:42 +01:00
Karatsuba Algorithm.py refactor: this whole honk thing is getting out of hand 2024-10-09 18:02:40 +01:00
Pascal's Triangle.py refactor: this whole honk thing is getting out of hand 2024-10-09 18:02:40 +01:00
PMCC.py refactor: this whole honk thing is getting out of hand 2024-10-09 18:02:40 +01:00
readme.md refactor: the big cleanse! 2024-10-09 18:02:42 +01:00
SRCC.py refactor: this whole honk thing is getting out of hand 2024-10-09 18:02:40 +01:00
Trigometric Functions.py refactor: this whole honk thing is getting out of hand 2024-10-09 18:02:40 +01:00

Babylonian Square Root

LaTeX

x_0 \approx \sqrt{S} \\
x_{n + 1} = \frac{x_n + \frac{S}{x_n}}{2} \\
\sqrt{S} = \displaystyle \lim_{n \to \infty}x_n

Karatsuba Algorithm

Wikipedia

An amazing video on the topic

function karatsuba (num1, num2)
    if (num1 < 10) or (num2 < 10)
        return num1 × num2 /* fall back to traditional multiplication */

    /* Calculates the size of the numbers. */
    m = min (size_base10(num1), size_base10(num2))
    m2 = floor (m / 2)
    /* m2 = ceil (m / 2) will also work */

    /* Split the digit sequences in the middle. */
    high1, low1 = split_at (num1, m2)
    high2, low2 = split_at (num2, m2)

    /* 3 recursive calls made to numbers approximately half the size. */
    z0 = karatsuba (low1, low2)
    z1 = karatsuba (low1 + high1, low2 + high2)
    z2 = karatsuba (high1, high2)

    return (z2 × 10 ^ (m2 × 2)) + ((z1 - z2 - z0) × 10 ^ m2) + z0