Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <random>
- #include <algorithm> // not necessary
- #include <numeric>
- double midvalue(const std::vector<double> &_array)
- {
- return std::accumulate(_array.begin(), _array.end(), 0.0) / _array.size();
- }
- double square_root(const double& _value)
- {
- return pow(_value, 0.5);
- }
- double sum(const std::vector<double>& _array)
- {
- return std::accumulate(_array.begin(), _array.end(), 0.0);
- }
- double thefuck(const std::vector<double> _x, const std::vector<double> _y)
- {
- size_t n = _x.size();
- double mid_x = midvalue(_x);
- double mid_y = midvalue(_y);
- // sum is the upper part here
- double sum = 0.0;
- for (size_t i = 0; i < n; i++)
- {
- double first = _x[i] - mid_x;
- double second = _y[i] - mid_y;
- sum += first * second;
- }
- // lower part being calculated here:
- double sum_x = 0.0;
- for (size_t i = 0; i < n; i++)
- {
- double diff = _x[i] - mid_x;
- sum_x += pow(diff, 2);
- }
- double sum_y = 0.0;
- for (size_t i = 0; i < n; i++)
- {
- double diff = _y[i] - mid_y;
- sum_y += pow(diff, 2);
- }
- double lower_part = square_root(sum_x * sum_y);
- // finally:
- return sum / lower_part;
- }
- int main()
- {
- std::vector<double> x;
- std::vector<double> y;
- for (size_t i = 0; i < 50; i++)
- {
- x.push_back((double)rand() / 100);
- y.push_back((double)rand() / 100);
- }
- std::cout << thefuck(x, y);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement