]> git.wincent.com - hextrapolate.git/blob - src/multiplyDigits.js
5819bbf9cb66c6e5c37f76941c06bf80df981c6a
[hextrapolate.git] / src / multiplyDigits.js
1 /**
2  * Copyright 2015-present Greg Hurrell. All rights reserved.
3  * Licensed under the terms of the MIT license.
4  *
5  * @flow
6  */
7
8 'use strict';
9
10 import addDigits from './addDigits';
11
12 /**
13  * Multiplication is repeated addition.
14  */
15 export default function multiplyDigits(
16   multiplicand: Array<number>,
17   multiplier: number,
18   base: number
19 ): Array<number> {
20   let result = [0];
21   let count = 0;
22
23   while (multiplier) {
24     if (count && count * 2 < multiplier) {
25       multiplier -= count;
26       count *= 2;
27       result = addDigits(result, result, base);
28     } else {
29       result = addDigits(result, multiplicand, base);
30       count++;
31       multiplier--;
32     }
33   }
34
35   return result;
36 }