UNPKG

1.62 kBJavaScriptView Raw
1import { factory } from '../../utils/factory'
2import { multiplyNumber } from '../../plain/number'
3
4const name = 'multiplyScalar'
5const dependencies = ['typed']
6
7export const createMultiplyScalar = /* #__PURE__ */ factory(name, dependencies, ({ typed }) => {
8 /**
9 * Multiply two scalar values, `x * y`.
10 * This function is meant for internal use: it is used by the public function
11 * `multiply`
12 *
13 * This function does not support collections (Array or Matrix).
14 *
15 * @param {number | BigNumber | Fraction | Complex | Unit} x First value to multiply
16 * @param {number | BigNumber | Fraction | Complex} y Second value to multiply
17 * @return {number | BigNumber | Fraction | Complex | Unit} Multiplication of `x` and `y`
18 * @private
19 */
20 const multiplyScalar = typed('multiplyScalar', {
21
22 'number, number': multiplyNumber,
23
24 'Complex, Complex': function (x, y) {
25 return x.mul(y)
26 },
27
28 'BigNumber, BigNumber': function (x, y) {
29 return x.times(y)
30 },
31
32 'Fraction, Fraction': function (x, y) {
33 return x.mul(y)
34 },
35
36 'number | Fraction | BigNumber | Complex, Unit': function (x, y) {
37 const res = y.clone()
38 res.value = (res.value === null) ? res._normalize(x) : multiplyScalar(res.value, x)
39 return res
40 },
41
42 'Unit, number | Fraction | BigNumber | Complex': function (x, y) {
43 const res = x.clone()
44 res.value = (res.value === null) ? res._normalize(y) : multiplyScalar(res.value, y)
45 return res
46 },
47
48 'Unit, Unit': function (x, y) {
49 return x.multiply(y)
50 }
51
52 })
53
54 return multiplyScalar
55})