diff --git a/Maths/Signum.js b/Maths/Signum.js new file mode 100644 index 000000000..35047cac1 --- /dev/null +++ b/Maths/Signum.js @@ -0,0 +1,25 @@ +/* + A program to demonstrate the implementation of the signum function, + also known as the sign function, in JavaScript. + + The signum function is an odd mathematical function, which returns the + sign of the provided real number. + It can return 3 values: 1 for values greater than zero, 0 for zero itself, + and -1 for values less than zero + + Wikipedia: https://en.wikipedia.org/wiki/Sign_function +*/ + +/** + * @param {Number} input + * @returns {-1 | 0 | 1 | NaN} sign of input (and NaN if the input is not a number) + */ +function signum (input) { + if (input === 0) return 0 + if (input > 0) return 1 + if (input < 0) return -1 + + return NaN +} + +export { signum } diff --git a/Maths/test/Signum.test.js b/Maths/test/Signum.test.js new file mode 100644 index 000000000..ac00676a0 --- /dev/null +++ b/Maths/test/Signum.test.js @@ -0,0 +1,19 @@ +import { signum } from '../Signum' + +describe('The sign of a number', () => { + it('Sign of 10', () => { + expect(signum(10)).toBe(1) + }) + + it('Sign of 0', () => { + expect(signum(0)).toBe(0) + }) + + it('Sign of -420', () => { + expect(signum(-420)).toBe(-1) + }) + + it('Sign of NaN', () => { + expect(signum(NaN)).toBe(NaN) + }) +})