From ef7bb7ac86d3dfc89f6ddb7b5df0e8f10a89c0a2 Mon Sep 17 00:00:00 2001 From: Ananya Pathak <54628162+ana-pat@users.noreply.github.com> Date: Mon, 25 Oct 2021 14:21:02 +0530 Subject: [PATCH] Kasturba.java Implements Kasturba Algorithm for Matrix Multiplication --- Kasturba.java | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 Kasturba.java diff --git a/Kasturba.java b/Kasturba.java new file mode 100644 index 0000000..78b4eae --- /dev/null +++ b/Kasturba.java @@ -0,0 +1,58 @@ +/* +Karatsuba Algorithm for matrix multiplication. +*/ + +import java.util.*; + + +public class KaratsubaAlgo{ + + + +long karatsuba(long X, long Y){ + + if(X<10 && Y<10){ + return X*Y; + } + + + int size = Math.max((Long.toString(X)).length(), (Long.toString(Y)).length()); + + + int n = (int)Math.ceil(size/2.0); + long p = (long)Math.pow(10,n); + long a = (long)Math.floor(X/(double)p); + long b = X%p; + long c = (long)Math.floor(Y/(double)p); + long d = Y%p; + + + long ac = karatsuba(a, c); + long bd = karatsuba(b, d); + long e = karatsuba(a+b, c+d) - ac - bd; + + + return (long)(Math.pow(10*1L, 2*n)*ac + Math.pow(10*1L, n)*e + bd); + } + + + + +public static void main (String[] args){ + + Scanner input = new Scanner(System.in); + + System.out.println("Karatsuba Algorithm\n"); + + Main karatsubaMult = new Main(); + + + System.out.println("Enter two numbers: \n"); + long n1 = input.nextLong(); + long n2 = input.nextLong(); + + long product = karatsubaMult.karatsuba(n1, n2); + System.out.println("\nThe product is "+ product); + } +} +