Передать значение chrono::duration в функцию

Всем привет. Проблема такая, в функции число в секундах выводится коректно, но если я передам значение(duration_atk) в int main то передается не коректное число {_MyRep=1.401e-45#DEN}. Как это исправить?

#include <iostream>
#include <windows.h>
#include <math.h>
#include <chrono>
using namespace std;

void Atkin(bool massiv[], int N);

int main(chrono::duration<float> duration_atk)
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    int N;
    bool* massiv;
    cout << endl << "Введіть число до якого робити пошук простих чисел:"<<endl;
    cin >> N;
    massiv = new bool[N];

    Atkin(massiv, N);
    cout << "int main:" << endl;
    printf("Алгоритм Aткіна завершив роботу за %f\n", duration_atk.count());
}

void Atkin(bool massiv[], int N)
{
   chrono::steady_clock::time_point start_atk = chrono::high_resolution_clock::now();
    int sqr_lim;
    int x, y; // квадраты i и j
    int i, j;
    int k;

    sqr_lim = (int)sqrt((long double)N);
    for (i = 0; i < N; ++i)
    {
        massiv[i] = false;
    }
    massiv[2] = true;
    massiv[3] = true;
    x = 0;
    for (i = 1; i < sqr_lim; ++i) {
        x += 2 * i - 1;
        y = 0;
        for (j = 1; j < sqr_lim; ++j) {
            y += 2 * j - 1;
            k = 4 * x + y;
            if ((k <= N) && (k % 12 == 1 || k % 12 == 5))
            {
                massiv[k] = !massiv[k];
            }
            // n = 3 * x2 + y2;
            k -= x;
            if ((k <= N) && (k % 12 == 7))
            {
                massiv[k] = !massiv[k];
            }
            // n = 3 * x2 - y2;
            k -= 2 * y;
            if ((i > j) && (k <= N) && (k % 12 == 11))
            {
                massiv[k] = !massiv[k];
            }
        }
    }
    for (i = 5; i < sqr_lim; ++i) {
        if (massiv[i]) {
            k = i * i;
            for (j = k; j < N; j += k)
            {
                massiv[j] = false;
            }
        }
    }

    chrono::steady_clock::time_point end_atk = chrono::high_resolution_clock::now();
    chrono::duration<float>duration_atk = end_atk - start_atk;
    cout << "void Atkin:";
    printf("\nАлгоритм Аткіна завершив роботу за %f\n\n", duration_atk.count());

}

введите сюда описание изображения


Ответы (0 шт):