Skip to content

Commit

Permalink
algorithm: signum (TheAlgorithms#1266)
Browse files Browse the repository at this point in the history
  • Loading branch information
SpiderMath authored Dec 8, 2022
1 parent f954fb1 commit 65cceae
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 0 deletions.
25 changes: 25 additions & 0 deletions Maths/Signum.js
Original file line number Diff line number Diff line change
@@ -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 }
19 changes: 19 additions & 0 deletions Maths/test/Signum.test.js
Original file line number Diff line number Diff line change
@@ -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)
})
})

0 comments on commit 65cceae

Please sign in to comment.