Skip to content
This repository has been archived by the owner on Sep 10, 2022. It is now read-only.

Commit

Permalink
Merge pull request #37 from MudroadWhite/MRW-intern
Browse files Browse the repository at this point in the history
Added Identity Function for Math lib
  • Loading branch information
Gaoooooo authored May 24, 2022
2 parents 7767cb3 + 151bae3 commit f00ba65
Show file tree
Hide file tree
Showing 2 changed files with 64 additions and 0 deletions.
38 changes: 38 additions & 0 deletions identity.hhs
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
/**
* @author Mudroad White
* @param input - a positive integer denoting the size of the expected matrix.
* @returns - a Mat object representing a 2D identity matrix.
*/

function identity(input) {

*import math: is_number

// Corner cases for input
// Argument length should be only one
if ( !(arguments.length === 1) ) {
throw new Error('Identity expects only one argument');
}
// Input should be a positive integer
if (!Number.isInteger(input) || input < 0) {
throw new Error('Excepted positive integer input');
}

// Then we return special Mat value when input is 0 or 1
if (input === 0) {
return new Mat([]);
}

if (input === 1) {
return new Mat([[1]]);
}

// Now we can start on creating the Id matrix
let result = new Mat().zeros(input, input);
for (let i = 0; i < input; i++){
result.val[i][i] = 1;
}

// return as a Mat object
return result;
}
26 changes: 26 additions & 0 deletions identity_test.hhs
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
/**
* @author Mudroad White
* @param
* @returns
*
* Functions for testing the identity function.
*/

function identity_test(){
*import math: identity

// Corner cases
if (!(identity(0) === new Mat([]))){
throw 'identity unit test failed on identity(0)';
}

if (!(identity(1) === new Mat([[1]]) )){
throw 'identity unit test failed on identity(1)';
}

// Ordinary case
const test1 = new Mat([[1, 0], [0, 1]]);
if (!(identity(2)) === test1){
throw 'identity unit test failed on identity(2)';
}
}

0 comments on commit f00ba65

Please sign in to comment.