diff --git a/Maths/Signum.js b/Maths/Signum.js new file mode 100644 index 0000000000..35047cac18 --- /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 0000000000..ac00676a00 --- /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) + }) +})
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies: