From d35e733799bcd1131f5e0f15657f5c5f7fff37d3 Mon Sep 17 00:00:00 2001 From: fdai7930 Date: Thu, 8 Feb 2024 01:15:15 +0100 Subject: [PATCH] multiplication using lookup table --- src/multiplication.c | 16 ++++++++++++++++ src/multiplication.h | 1 + 2 files changed, 17 insertions(+) diff --git a/src/multiplication.c b/src/multiplication.c index 3c5c479..9cbc11f 100644 --- a/src/multiplication.c +++ b/src/multiplication.c @@ -64,5 +64,21 @@ int multiply_by_even(int num, int factor) { return (num >> 1) << (factor + 1); } +int multiply_using_lookup_table(int num1, int num2) { + int lookup_table[10][10] = { + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, + {0, 2, 4, 6, 8, 10, 12, 14, 16, 18}, + {0, 3, 6, 9, 12, 15, 18, 21, 24, 27}, + {0, 4, 8, 12, 16, 20, 24, 28, 32, 36}, + {0, 5, 10, 15, 20, 25, 30, 35, 40, 45}, + {0, 6, 12, 18, 24, 30, 36, 42, 48, 54}, + {0, 7, 14, 21, 28, 35, 42, 49, 56, 63}, + {0, 8, 16, 24, 32, 40, 48, 56, 64, 72}, + {0, 9, 18, 27, 36, 45, 54, 63, 72, 81} + }; + return lookup_table[num1][num2]; +} + diff --git a/src/multiplication.h b/src/multiplication.h index a3c42b1..378e860 100644 --- a/src/multiplication.h +++ b/src/multiplication.h @@ -12,6 +12,7 @@ int multiply_string(const char* str, int factor); int multiply_by_sum(int num1, int num2); int multiply_using_two_complements(int num1, int num2); int multiply_by_even(int num, int factor); +int multiply_using_lookup_table(int num1, int num2); #endif // MULTIPLICATION_H