|
Algorithms_in_C++
1.0.0
Set of algorithms implemented in C++.
|
Go to the documentation of this file.
8 #ifndef MATH_LARGE_NUMBER_H_
9 #define MATH_LARGE_NUMBER_H_
15 #include <type_traits>
55 for (
size_t i = strlen(number_str); i > 0; i--) {
56 char a = number_str[i - 1] -
'0';
66 std::cout <<
"------ Checking `large_number` class implementations\t"
105 a = a +
large_number(
"7000000000000000000000000000000");
106 if (a !=
large_number(
"7000000000000000000000000005202")) {
108 <<
"!=7000000000000000000000000005202)" <<
std::endl;
139 inline const unsigned char &
operator[](
size_t n)
const {
147 for (
size_t i = a.num_digits(); i > 0; i--)
148 out << static_cast<int>(a[i - 1]);
156 size_t N = a.num_digits();
159 for (
size_t i = 0; i < N; i++)
196 unsigned int carry = 0;
198 for (i = 0; i < max_L || carry != 0; i++) {
204 (*this)[i] = carry % 10;
240 "Must be integer addition unsigned integer types.");
260 "Can only have integer types.");
265 uint64_t carry = 0, temp;
267 temp =
static_cast<uint64_t
>((*this)[i]) * n;
288 #endif // MATH_LARGE_NUMBER_H_
int number_of_digits(int num)
Definition: armstrong_number.cpp:21
int binExpo(int a, int b)
Definition: binary_exponent.cpp:28
void add_digit(unsigned int value)
Definition: large_number.h:118
void pop()
Definition: stack.h:99
bool is_armstrong(int number)
Definition: armstrong_number.cpp:36
Definition: trie_tree.cpp:8
int main()
Definition: caesar_cipher.cpp:120
int main()
Definition: double_factorial.cpp:67
int main()
Definition: gcd_of_n_numbers.cpp:28
T setprecision(T... args)
std::remove_reference< AdjList >::type const & getAdjList() const
Definition: cycle_check_directed_graph.cpp:103
static bool isCyclicBFS(Graph const &graph)
Definition: cycle_check_directed_graph.cpp:249
unsigned int getVertices() const
Definition: cycle_check_directed_graph.cpp:110
void print(uint32_t N, const bool *isprime)
Definition: sieve_of_eratosthenes.cpp:38
#define MAX
Definition: fibonacci_fast.cpp:27
void addVertices(unsigned int num=1)
Definition: cycle_check_directed_graph.cpp:118
bool test1()
Definition: large_factorial.cpp:17
T inner_product(T... args)
int gcd(int num1, int num2)
Definition: gcd_iterative_euclidean.cpp:15
Class Complex to represent complex numbers as a field.
Definition: complex_numbers.cpp:20
int main()
Main function.
Definition: fibonacci.cpp:28
std::vector< T > operator+(std::vector< T > const &A, std::vector< T > const &B)
Definition: ordinary_least_squares_regressor.cpp:204
friend std::ostream & operator<<(std::ostream &out, const large_number &a)
Definition: large_number.h:146
large_number(std::vector< unsigned char > &vec)
Definition: large_number.h:51
void update_step(T *r, T *r0, const T2 quotient)
Definition: extended_euclid_algorithm.cpp:24
uint64_t double_factorial_iterative(uint64_t n)
Definition: double_factorial.cpp:17
adaline(int num_features, const double eta=0.01f, const double accuracy=1e-5)
Definition: adaline_learning.cpp:55
Definition: trie_modern.cpp:16
void test1()
Definition: kohonen_som_topology.cpp:369
double fit(const std::vector< double > &x, const int &y)
Definition: adaline_learning.cpp:119
double arg() const
Member function to give the argument of our complex number.
Definition: complex_numbers.cpp:87
ll ans(ll n)
Definition: matrix_exponentiation.cpp:91
Complex operator*(const Complex &other)
Operator overload of '*' on Complex class. Operator overload to be able to multiple two complex numbe...
Definition: complex_numbers.cpp:117
Definition: large_number.h:24
large_number fib(uint64_t n)
Definition: fibonacci_large.cpp:24
int main()
Definition: fibonacci_fast.cpp:51
int main(int argc, char **argv)
Definition: kohonen_som_topology.cpp:582
static bool hasChildren(std::shared_ptr< TrieNode > node)
Definition: trie_modern.cpp:41
Complex operator-(const Complex &other)
Operator overload of '-' on Complex class. Operator overload to be able to subtract two complex numbe...
Definition: complex_numbers.cpp:106
int main(int argc, char **argv)
Definition: spirograph.cpp:268
Complex(const Complex &other)
Copy Constructor.
Definition: complex_numbers.cpp:58
Complex(double x=0.f, double y=0.f, bool is_polar=false)
Complex Constructor which initialises our complex number.
Definition: complex_numbers.cpp:43
double abs() const
Member function to give the modulus of our complex number. Member function to which gives the absolut...
Definition: complex_numbers.cpp:79
int main(int argc, char *argv[])
Definition: large_factorial.cpp:89
void test_3d_classes(std::vector< std::valarray< double >> *data)
Definition: kohonen_som_trace.cpp:359
Definition: trie_modern.cpp:26
int gcd(int num1, int num2)
Definition: gcd_recursive_euclidean.cpp:14
Library to perform arithmatic operations on arbitrarily large numbers.
Definition: avltree.cpp:13
double get_rand()
Function to get random numbers to generate our complex numbers for test.
Definition: complex_numbers.cpp:201
int binExpo_alt(int a, int b)
Definition: binary_exponent.cpp:42
void explore(int, vector< bool > &)
Utility function for depth first seach algorithm this function explores the vertex which is passed in...
Definition: connected_components.cpp:101
int save_nd_data(const char *fname, const std::vector< std::valarray< double >> &X)
Definition: kohonen_som_trace.cpp:58
double get_clock_diff(clock_t start_t, clock_t end_t)
Definition: kohonen_som_trace.cpp:452
void test2(const std::string &text)
Self test 2 - using 8x8 randomly generated key.
Definition: hill_cipher.cpp:505
Graph(unsigned int vertices, std::vector< Edge > const &edges)
Definition: cycle_check_directed_graph.cpp:88
int predict(const std::vector< double > &x, double *out=nullptr)
Definition: adaline_learning.cpp:95
void tests()
Definition: complex_numbers.cpp:206
Machine learning algorithms.
const Complex & operator=(const Complex &other)
Operator overload of '=' on Complex class. Operator overload to be able to copy RHS instance of Compl...
Definition: complex_numbers.cpp:160
bool is_square(std::vector< std::vector< T >> const &A)
Definition: ordinary_least_squares_regressor.cpp:59
int activation(double x)
Definition: adaline_learning.cpp:186
int main()
Definition: gcd_recursive_euclidean.cpp:42
double update_weights(const std::valarray< double > &X, std::vector< std::vector< std::valarray< double >>> *W, std::vector< std::valarray< double >> *D, double alpha, int R)
Definition: kohonen_som_topology.cpp:200
size_t num_digits() const
Definition: large_number.h:130
Definition: bellman_ford.cpp:13
Definition: bridge_finding_with_tarjan_algorithm.cpp:13
void get_min_2d(const std::vector< std::valarray< double >> &X, double *val, int *x_idx, int *y_idx)
Definition: kohonen_som_topology.cpp:105
bool check_size_match(const std::vector< double > &x)
Definition: adaline_learning.cpp:196
int stack_idx
pointer to track stack index
Definition: paranthesis_matching.cpp:23
Definition: double_hash_hash_table.cpp:28
void test1()
Definition: kohonen_som_trace.cpp:233
large_number & operator+=(large_number n)
Definition: large_number.h:192
std::vector< std::vector< T > > operator*(std::vector< std::vector< T >> const &A, std::vector< std::vector< T >> const &B)
Definition: ordinary_least_squares_regressor.cpp:78
constexpr int MAX_ITER
Definition: adaline_learning.cpp:40
bool is_prime(T num)
Definition: check_prime.cpp:22
double fast_power_recursive(T a, T b)
Definition: fast_power.cpp:26
Definition: linkedlist_implentation_usingarray.cpp:14
void test(uint64_t n, uint64_t expected)
Definition: double_factorial.cpp:42
int y
Point respect to x coordinate.
Definition: line_segment_intersection.cpp:14
void depth_first_search()
Function that perfoms depth first search algorithm on graph.
Definition: connected_components.cpp:83
int main(int argc, char **argv)
Definition: kohonen_som_trace.cpp:457
double real() const
Member function to get real value of our complex number. Member function (getter) to access the class...
Definition: complex_numbers.cpp:64
large_number(const large_number &a)
Definition: large_number.h:48
int fibonacci(unsigned int n)
Definition: fibonacci.cpp:17
void insert(const std::string &word)
Definition: trie_modern.cpp:109
std::ostream & operator<<(std::ostream &out, std::vector< std::vector< T >> const &v)
Definition: ordinary_least_squares_regressor.cpp:22
static bool isCyclicDFS(Graph const &graph)
Definition: cycle_check_directed_graph.cpp:212
void test3()
Definition: kohonen_som_topology.cpp:537
node * createNode(int data)
Definition: avltree.cpp:21
Definition: cycle_check_directed_graph.cpp:158
static bool isCyclicDFSHelper(AdjList const &adjList, std::vector< nodeStates > *state, unsigned int node)
Definition: cycle_check_directed_graph.cpp:170
large_number & operator*=(const T n)
Definition: large_number.h:238
large_number()
Definition: large_number.h:27
int main()
Main function.
Definition: binary_exponent.cpp:55
Definition: huffman.cpp:7
int main()
Definition: line_segment_intersection.cpp:92
int main()
Definition: connected_components.cpp:111
Complex operator/(const Complex &other)
Operator overload of '/' on Complex class. Operator overload to be able to divide two complex numbers...
Definition: complex_numbers.cpp:142
large_number & operator++()
Definition: large_number.h:175
void test1(double eta=0.01)
Definition: adaline_learning.cpp:224
node * insert(node *root, int item)
Definition: avltree.cpp:66
char digit_char(size_t i) const
Definition: large_number.h:248
unsigned char & operator[](size_t n)
Definition: large_number.h:137
int h(int key)
Definition: hash_search.cpp:45
int direction(Point first_point, Point second_point, Point third_point)
Definition: line_segment_intersection.cpp:63
const double eta
learning rate of the algorithm
Definition: adaline_learning.cpp:207
uint64_t phiFunction(uint64_t n)
Definition: eulers_totient_function.cpp:32
Edge(unsigned int source, unsigned int destination)
Definition: cycle_check_directed_graph.cpp:40
Trie()
constructor to initialise the root of the trie.
Definition: trie_modern.cpp:103
Definition: prims_minimum_spanning_tree.cpp:9
void addEdge(unsigned int source, unsigned int destination)
Definition: cycle_check_directed_graph.cpp:136
void test()
Definition: armstrong_number.cpp:59
int main()
Definition: factorial.cpp:15
void multiply(const T n)
Definition: large_number.h:258
Complex operator~() const
Operator overload of '~' on Complex class. Operator overload of the BITWISE NOT which gives us the co...
Definition: complex_numbers.cpp:130
std::ostream & operator<<(std::ostream &os, const Complex &num)
Operator overload of '<<' of ostream for Complex class. Overloaded insersion operator to accommodate ...
Definition: complex_numbers.cpp:186
#define ll
Definition: matrix_exponentiation.cpp:33
std::vector< double > weights
weights of the neural network
Definition: adaline_learning.cpp:209
Definition: line_segment_intersection.cpp:22
int main()
Definition: ordinary_least_squares_regressor.cpp:423
std::vector< float > predict_OLS_regressor(std::vector< std::vector< T >> const &X, std::vector< float > const &beta)
Definition: ordinary_least_squares_regressor.cpp:352
large_number & operator=(const large_number &b)
Definition: large_number.h:229
int main()
Main function.
Definition: extended_euclid_algorithm.cpp:87
void fit(std::array< std::vector< double >, N > const &X, std::array< int, N > const &Y)
Definition: adaline_learning.cpp:145
void test_3d_classes1(std::vector< std::valarray< double >> *data)
Definition: kohonen_som_topology.cpp:411
uint64_t fib(uint64_t n)
Definition: fibonacci_fast.cpp:30
void test2()
Definition: kohonen_som_topology.cpp:451
bool on_segment(Point first_point, Point second_point, Point third_point)
Definition: line_segment_intersection.cpp:75
bool operator==(const Complex &a, const Complex &b)
Operator overload of '==' on Complex class. Logical Equal overload for our Complex class.
Definition: complex_numbers.cpp:175
std::vector< unsigned char > _digits
Definition: large_number.h:285
#define endl
Definition: matrix_exponentiation.cpp:36
void push(Type item)
Definition: stack.h:83
void test2()
Definition: kohonen_som_trace.cpp:315
int main()
Definition: check_prime.cpp:45
bool test2()
Definition: large_factorial.cpp:54
Graph(unsigned int vertices, AdjList &&adjList)
Definition: cycle_check_directed_graph.cpp:76
int save_2d_data(const char *fname, const std::vector< std::valarray< double >> &X)
Definition: kohonen_som_topology.cpp:65
void test_lamniscate(std::vector< std::valarray< double >> *data)
Definition: kohonen_som_trace.cpp:277
int main()
Definition: trie_modern.cpp:160
Definition: bellman_ford.cpp:7
int getConnectedComponents()
Function the calculates the connected compoents in the graph by performing the depth first search on ...
Definition: connected_components.cpp:63
int sum_of_divisor(int num)
Definition: check_amicable_pair.cpp:21
Type top()
Definition: stack.h:93
int data[MAX]
test data
Definition: hash_search.cpp:24
double imag() const
Member function to get imaginary value of our complex number. Member function (getter) to access the ...
Definition: complex_numbers.cpp:70
void test()
Test function to save resulting points to a CSV file.
Definition: spirograph.cpp:93
static bool test()
Definition: large_number.h:65
std::vector< float > fit_OLS_regressor(std::vector< std::vector< T >> const &X, std::vector< T > const &Y)
Definition: ordinary_least_squares_regressor.cpp:321
std::vector< T > operator-(std::vector< T > const &A, std::vector< T > const &B)
Definition: ordinary_least_squares_regressor.cpp:183
int main()
Definition: armstrong_number.cpp:77
std::vector< std::vector< float > > get_inverse(std::vector< std::vector< T >> const &A)
Definition: ordinary_least_squares_regressor.cpp:226
int main()
Definition: complex_numbers.cpp:268
vector< vector< int > > adj
adj stores adjacency list representation of graph
Definition: connected_components.cpp:40
friend bool operator==(large_number const &a, large_number const &b)
Definition: large_number.h:155
friend std::ostream & operator<<(std::ostream &out, const adaline &ada)
Definition: adaline_learning.cpp:76
int save_u_matrix(const char *fname, const std::vector< std::vector< std::valarray< double >>> &W)
Definition: kohonen_som_topology.cpp:142
unsigned int factorial(unsigned int n)
Definition: factorial.cpp:8
void tests()
Definition: double_factorial.cpp:50
constexpr double MIN_DISTANCE
Definition: kohonen_som_topology.cpp:129
void show(const struct tower *const F, const struct tower *const T, const struct tower *const U)
Definition: tower_of_hanoi.cpp:19
Definition: huffman.cpp:28
T sync_with_stdio(T... args)
double get_clock_diff(clock_t start_t, clock_t end_t)
Definition: kohonen_som_topology.cpp:577
int gcd(int *a, int n)
Definition: gcd_of_n_numbers.cpp:15
int main()
Definition: fast_power.cpp:68
uint64_t double_factorial_recursive(uint64_t n)
Definition: double_factorial.cpp:30
bool search(const std::string &word)
Definition: trie_modern.cpp:132
Definition: knapsack.cpp:4
void display()
Definition: stack.h:29
void extendedEuclid(T A, T B, T *GCD, T2 *x, T2 *y)
Definition: extended_euclid_algorithm.cpp:70
void test3()
Definition: kohonen_som_trace.cpp:414
graph(int n)
Constructor that intiliazes the graph on creation and set the connected components to 0.
Definition: connected_components.cpp:53
void test()
Definition: check_amicable_pair.cpp:56
void ols_test()
Definition: ordinary_least_squares_regressor.cpp:369
bool isEmptyStack()
Definition: stack.h:80
std::string add(std::string a, std::string b)
Definition: string_fibonacci.cpp:24
large_number(int n)
Definition: large_number.h:39
char stack[MAX]
Definition: paranthesis_matching.cpp:20
Complex operator+(const Complex &other)
Operator overload of '+' on Complex class. Operator overload to be able to add two complex numbers.
Definition: complex_numbers.cpp:95
void extendedEuclid_1(T1 A, T1 B, T1 *GCD, T2 *x, T2 *y)
Definition: extended_euclid_algorithm.cpp:41
const double accuracy
model fit convergence accuracy
Definition: adaline_learning.cpp:208
int main()
Definition: gcd_iterative_euclidean.cpp:47
void test_2d_classes(std::vector< std::valarray< double >> *data)
Definition: kohonen_som_topology.cpp:330
Definition: line_segment_intersection.cpp:12
friend bool operator!=(large_number const &a, large_number const &b)
Definition: large_number.h:168
void kohonen_som(const std::vector< std::valarray< double >> &X, std::vector< std::vector< std::valarray< double >>> *W, double alpha_min)
Definition: kohonen_som_topology.cpp:269
void push(char ch)
push byte to stack variable
Definition: paranthesis_matching.cpp:26
std::shared_ptr< TrieNode > removeWordHelper(const std::string &word, std::shared_ptr< TrieNode > curr, size_t index)
Definition: trie_modern.cpp:64
void test_3d_classes2(std::vector< std::valarray< double >> *data)
Definition: kohonen_som_topology.cpp:493
char pop()
pop a byte out of stack variable
Definition: paranthesis_matching.cpp:29
double _random(double a, double b)
Definition: kohonen_som_topology.cpp:53
void addEdge(Edge const &edge)
Definition: cycle_check_directed_graph.cpp:124
double fast_power_linear(T a, T b)
Definition: fast_power.cpp:50
void spirograph(std::array< std::pair< double, double >, N > *points, double l, double k, double rot)
Definition: spirograph.cpp:70
Graph(unsigned int vertices, AdjList const &adjList)
Definition: cycle_check_directed_graph.cpp:68
large_number & operator++(int)
Definition: large_number.h:183
void quickSort(int arr[], int low, int high)
Definition: quick_sort.cpp:63
void test2(double eta=0.01)
Definition: adaline_learning.cpp:262
void test3(double eta=0.01)
Definition: adaline_learning.cpp:313
Definition: adaline_learning.cpp:46
int main(int argc, char *argv[])
Main function.
Definition: eulers_totient_function.cpp:48
friend large_number & operator+(const large_number &a, const T &b)
Definition: large_number.h:220
void addEdge(int, int)
Function that add edge between two nodes or vertices of graph.
Definition: connected_components.cpp:75
std::vector< float > operator/(std::vector< T > const &A, float const scalar)
Definition: ordinary_least_squares_regressor.cpp:174
void kohonen_som_tracer(const std::vector< std::valarray< double >> &X, std::vector< std::valarray< double >> *W, double alpha_min)
Definition: kohonen_som_trace.cpp:149
int connected_components
keep track of connected components
Definition: connected_components.cpp:43
bool are_amicable(int x, int y)
Definition: check_amicable_pair.cpp:48
void clear()
Definition: stack.h:112
int main(int argc, char **argv)
Definition: adaline_learning.cpp:357
void test_circle(std::vector< std::valarray< double >> *data)
Definition: kohonen_som_trace.cpp:196
int main()
Definition: check_amicable_pair.cpp:68
This class specifies the basic operation on a stack as a linked list.
std::vector< std::vector< T > > get_transpose(std::vector< std::vector< T >> const &A)
Definition: ordinary_least_squares_regressor.cpp:300