|
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"
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();
157 if (N != b.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 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
Definition: trie_tree.cpp:8
int main()
main function
Definition: double_factorial.cpp:36
int main()
Definition: gcd_of_n_numbers.cpp:28
T setprecision(T... args)
static bool isCyclicBFS(Graph const &graph)
Definition: cycle_check_directed_graph.cpp:241
void addVertices(unsigned int num=1)
Definition: cycle_check_directed_graph.cpp:122
bool test1()
Definition: large_factorial.cpp:17
T inner_product(T... args)
uint64_t f[MAX]
Definition: fibonacci_fast.cpp:27
int gcd(int num1, int num2)
Definition: gcd_iterative_euclidean.cpp:15
Definition: complex_numbers.cpp:19
int main()
Main function.
Definition: fibonacci.cpp:28
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:16
adaline(int num_features, const double eta=0.01f, const double accuracy=1e-5)
Definition: adaline_learning.cpp:53
Definition: trie_modern.cpp:16
void test1()
Definition: kohonen_som_topology.cpp:359
double fit(const std::vector< double > &x, const int &y)
Definition: adaline_learning.cpp:112
double arg() const
Definition: complex_numbers.cpp:81
ll ans(ll n)
Definition: matrix_exponentiation.cpp:94
Complex operator*(const Complex &other)
Definition: complex_numbers.cpp:108
Definition: large_number.h:24
large_number fib(uint64_t n)
Definition: fibonacci_large.cpp:24
int main()
Definition: fibonacci_fast.cpp:47
void print(uint32_t N)
Definition: sieve_of_eratosthenes.cpp:40
int main(int argc, char **argv)
Definition: kohonen_som_topology.cpp:566
static bool hasChildren(std::shared_ptr< TrieNode > node)
Definition: trie_modern.cpp:41
Complex operator-(const Complex &other)
Definition: complex_numbers.cpp:98
Complex(const Complex &other)
Definition: complex_numbers.cpp:55
Complex(double x=0.f, double y=0.f, bool is_polar=false)
Definition: complex_numbers.cpp:40
double abs() const
Definition: complex_numbers.cpp:73
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:347
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()
Definition: complex_numbers.cpp:186
int binExpo_alt(int a, int b)
Definition: binary_exponent.cpp:42
int save_nd_data(const char *fname, const std::vector< std::valarray< double >> &X)
Definition: kohonen_som_trace.cpp:57
double get_clock_diff(clock_t start_t, clock_t end_t)
Definition: kohonen_som_trace.cpp:438
Graph(unsigned int vertices, std::vector< Edge > const &edges)
Definition: cycle_check_directed_graph.cpp:90
int predict(const std::vector< double > &x, double *out=nullptr)
Definition: adaline_learning.cpp:92
void tests()
Definition: complex_numbers.cpp:191
Machine learning algorithms.
const Complex & operator=(const Complex &other)
Definition: complex_numbers.cpp:148
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:193
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:99
bool check_size_match(const std::vector< double > &x)
Definition: adaline_learning.cpp:176
Definition: double_hash_hash_table.cpp:28
void test1()
Definition: kohonen_som_trace.cpp:225
large_number & operator+=(large_number n)
Definition: large_number.h:192
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
int y
Point respect to x coordinate.
Definition: line_segment_intersection.cpp:14
int main(int argc, char **argv)
Definition: kohonen_som_trace.cpp:443
double real() const
Definition: complex_numbers.cpp:60
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
static bool isCyclicDFS(Graph const &graph)
Definition: cycle_check_directed_graph.cpp:206
int top
pointer to track stack index
Definition: paranthesis_matching.cpp:23
void test3()
Definition: kohonen_som_topology.cpp:523
node * createNode(int data)
Definition: avltree.cpp:21
Definition: cycle_check_directed_graph.cpp:153
static bool isCyclicDFSHelper(AdjList const &adjList, std::vector< nodeStates > *state, unsigned int node)
Definition: cycle_check_directed_graph.cpp:165
large_number & operator*=(const T n)
Definition: large_number.h:238
large_number()
Definition: large_number.h:27
void init()
Definition: sieve_of_eratosthenes.cpp:52
int main()
Main function.
Definition: binary_exponent.cpp:55
Definition: huffman.cpp:7
int main()
Definition: line_segment_intersection.cpp:92
Complex operator/(const Complex &other)
Definition: complex_numbers.cpp:131
large_number & operator++()
Definition: large_number.h:175
void test1(double eta=0.01)
Definition: adaline_learning.cpp:204
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
std::remove_reference_t< AdjList > const & getAdjList() const
Definition: cycle_check_directed_graph.cpp:105
const double eta
learning rate of the algorithm
Definition: adaline_learning.cpp:187
ll k
Definition: matrix_exponentiation.cpp:48
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:42
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:140
int main()
Definition: factorial.cpp:15
void multiply(const T n)
Definition: large_number.h:258
Complex operator~() const
Definition: complex_numbers.cpp:120
std::ostream & operator<<(std::ostream &os, const Complex &num)
Definition: complex_numbers.cpp:172
#define ll
Definition: matrix_exponentiation.cpp:33
std::vector< double > weights
weights of the neural network
Definition: adaline_learning.cpp:189
Definition: line_segment_intersection.cpp:22
large_number & operator=(const large_number &b)
Definition: large_number.h:229
int main()
Main function.
Definition: extended_euclid_algorithm.cpp:87
void test_3d_classes1(std::vector< std::valarray< double >> *data)
Definition: kohonen_som_topology.cpp:399
uint64_t fib(uint64_t n)
Definition: fibonacci_fast.cpp:30
void test2()
Definition: kohonen_som_topology.cpp:439
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)
Definition: complex_numbers.cpp:162
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:305
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:78
vector< ll > a
Definition: matrix_exponentiation.cpp:53
int save_2d_data(const char *fname, const std::vector< std::valarray< double >> &X)
Definition: kohonen_som_topology.cpp:62
void test_lamniscate(std::vector< std::valarray< double >> *data)
Definition: kohonen_som_trace.cpp:267
int main()
Definition: trie_modern.cpp:160
Definition: bellman_ford.cpp:7
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
Definition: complex_numbers.cpp:65
static bool test()
Definition: large_number.h:65
int main()
Definition: complex_numbers.cpp:253
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:74
int save_u_matrix(const char *fname, const std::vector< std::vector< std::valarray< double >>> &W)
Definition: kohonen_som_topology.cpp:135
unsigned int factorial(unsigned int n)
Definition: factorial.cpp:8
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
int main()
Definition: avltree.cpp:134
T sync_with_stdio(T... args)
double get_clock_diff(clock_t start_t, clock_t end_t)
Definition: kohonen_som_topology.cpp:561
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:29
bool search(const std::string &word)
Definition: trie_modern.cpp:132
Definition: knapsack.cpp:4
const uint64_t MAX
Definition: fibonacci_fast.cpp:24
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:402
void test()
Definition: check_amicable_pair.cpp:56
bool isEmptyStack()
Definition: stack.h:80
std::remove_reference_t< unsigned int > const & getVertices() const
Definition: cycle_check_directed_graph.cpp:112
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)
Definition: complex_numbers.cpp:88
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:188
int main()
Definition: gcd_iterative_euclidean.cpp:47
void test_2d_classes(std::vector< std::valarray< double >> *data)
Definition: kohonen_som_topology.cpp:320
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:261
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:479
char pop()
pop a byte out of stack variable
Definition: paranthesis_matching.cpp:29
void fit(std::vector< double > const (&X)[N], const int *y)
Definition: adaline_learning.cpp:136
double _random(double a, double b)
Definition: kohonen_som_topology.cpp:50
void addEdge(Edge const &edge)
Definition: cycle_check_directed_graph.cpp:128
double fast_power_linear(T a, T b)
Definition: fast_power.cpp:50
Graph(unsigned int vertices, AdjList const &adjList)
Definition: cycle_check_directed_graph.cpp:70
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:238
void test3(double eta=0.01)
Definition: adaline_learning.cpp:289
Definition: adaline_learning.cpp:44
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 kohonen_som_tracer(const std::vector< std::valarray< double >> &X, std::vector< std::valarray< double >> *W, double alpha_min)
Definition: kohonen_som_trace.cpp:145
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:333
void test_circle(std::vector< std::valarray< double >> *data)
Definition: kohonen_som_trace.cpp:188
int main()
Definition: check_amicable_pair.cpp:68
This class specifies the basic operation on a stack as a linked list.