diff --git a/Algorithms.ts b/Algorithms.ts
new file mode 100644
index 0000000..1a2fecd
--- /dev/null
+++ b/Algorithms.ts
@@ -0,0 +1,97 @@
+//typescriptClasses/Algorithms.ts
+//Matthew Ellison
+// Created: 10-19-20
+//Modified: 10-19-20
+//This class holds many algorithms that I have found it useful to keep around
+/*
+Copyright (C) 2020 Matthew Ellison
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see .
+*/
+
+
+export function arrayEquals(array1: any[], array2: any[]): boolean{
+ //If they aren't the same type they aren't equal
+ if((typeof array1) != (typeof array2)){
+ return false;
+ }
+ //If they aren't the same length they aren't equal
+ else if(array1.length != array2.length){
+ return false;
+ }
+ else{
+ //Loop through every element to see if each one is equal
+ for(let cnt = 0;cnt < array1.length;++cnt){
+ //If any element in the same location is different return false
+ if(array1[cnt] != array2[cnt]){
+ return false;
+ }
+ }
+ //If every element was the same they are equal
+ return true;
+ }
+}
+export function getAllFib(goalNumber: number): number[]{
+ //Setup the variables
+ let fibNums: number[] = [];
+
+ //If the number is <= 0 return an empty list
+ if(goalNumber <= 0){
+ return fibNums;
+ }
+ else if(goalNumber == 1){
+ fibNums.push(1);
+ return fibNums;
+ }
+
+ //This means that at least 2 1's are elements
+ fibNums.push(1);
+ fibNums.push(1);
+
+ //Loop to generate the rest of the Fibonacci numbers
+ while(fibNums[fibNums.length - 1] <= goalNumber){
+ fibNums.push((fibNums[fibNums.length - 1]) + (fibNums[fibNums.length - 2]));
+ }
+
+ //At this point the most recent number is > goalNumber, so remove it and return the rest of the list
+ fibNums.pop();
+ return fibNums;
+}
+export function getAllFibBig(goalNumber: bigint): bigint[]{
+ //Setup the variables
+ let fibNums:bigint[] = [];
+
+ //If the number is <= 0 return an empty list
+ if(goalNumber <= 0){
+ return fibNums;
+ }
+ else if(goalNumber == BigInt(1)){
+ fibNums.push(BigInt(1));
+ return fibNums;
+ }
+
+ //This means that at least 2 1's are elements
+ fibNums.push(BigInt(1));
+ fibNums.push(BigInt(1));
+
+ //Loop to generate the rest of the Fibonacci numbers
+ while(fibNums[fibNums.length - 1] <= goalNumber){
+ fibNums.push((fibNums[fibNums.length - 1]) + (fibNums[fibNums.length - 2]));
+ }
+
+ //At this point the most recent number is > goalNumber, so remove it and return the rest of the list
+ fibNums.pop();
+ return fibNums;
+}
+
diff --git a/TestAlgorithms.ts b/TestAlgorithms.ts
new file mode 100644
index 0000000..bf72bfc
--- /dev/null
+++ b/TestAlgorithms.ts
@@ -0,0 +1,50 @@
+//typescriptClasses/Algorithms.ts
+//Matthew Ellison
+// Created: 10-19-20
+//Modified: 10-19-20
+//This class holds many algorithms that I have found it useful to keep around
+/*
+Copyright (C) 2020 Matthew Ellison
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see .
+*/
+
+import assert = require("assert");
+import { arrayEquals, getAllFib, getAllFibBig } from "./Algorithms";
+
+
+function testGetAllFib(){
+ //Test 1
+ let correctAnswer = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89];
+ let highestNumber = 100;
+ let answer = getAllFib(highestNumber);
+ assert.ok(arrayEquals(answer, correctAnswer), "getAllFib Integer 1 failed");
+
+ //Test 2
+ correctAnswer = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987]
+ highestNumber = 1000;
+ answer = getAllFib(highestNumber);
+ assert.ok(arrayEquals(answer, correctAnswer), "getAllFib Integer 2 failed");
+
+ //Test 3
+ let bigCorrectAnswer = [BigInt(1), BigInt(1), BigInt(2), BigInt(3), BigInt(5), BigInt(8), BigInt(13), BigInt(21), BigInt(34), BigInt(55), BigInt(89)];
+ let bigHighestNumber = BigInt(100);
+ let bigAnswer = getAllFibBig(bigHighestNumber);
+ assert.ok(arrayEquals(bigAnswer, bigCorrectAnswer), "getAllFibBig failed");
+ console.log("testGetAllFib passed");
+}
+
+
+//Run all of the tests
+testGetAllFib();
\ No newline at end of file