Наклон последнего графика у Вас 25 раз на десятичный порядок по

Не, наклон равен

на десятичный порядок (если можно так выразиться для логарифмического масштаба).
Я Вас не понимаю. Смотрю на Ваш
прошлый график, точки

и

, вижу отношение

раз по величине при изменении аргумента в

раз, т.е. порядок по значениям набегает примерно за

раза по аргументу, или значения растут в

раза быстрее аргумента. Проверяю,

и

, значения снова отличаются в

раз при отличии аргумента вчетверо. Значит наклон правильный. И значит при возрастании

с

до

значение увеличится с 4с до 100с (примерно). Что не так?
Для

время работы будет

секунд или 11 часов 40 минут.
Квадратичный алгоритм не интересен, считаем Карацубу.
Ну почему же? Вы сами написали, что операция умножения в среднем занимает 3 такта. Это почти четверть от этих 13 тактов.
Нет, я написал что она может занимать от 1 до 5 тактов (смотря сможет ли спариться с другими умножениями), но деление то занимает 22-29 такта! Если не спарится или 8-11 тактов если все деления спарятся. Под спариванием я имею в виду как минимум (прочие условия лень обговаривать) отсутствие зависимости по данным между командами. Так как здесь означенная зависимость явно есть, то время выполнения будет 27-34 такта минимум (разброс зависит от конкретных чисел делимого и делителя). А у Вас 84млн итераций выполняется за 4с на частоте 2ГГц, т.е.

тактов на итерацию Карацубы. Не 13.
Да, если нижние уровни считаются квадратично, то количество умножений будет выше и соответственно тактов на итерацию меньше, но 13 всё равно не получается, в лучшем случае 22-25.
Кстати первый уровень, где возводятся в квадрат двухразрядные числа, можно квадрат считать тоже за 3 умножения вместо 4-х (потому что произведение старшей части на младшую одинаково для обоих вариантов комбинации сомножителей) даже без Карацубы. Правда только квадрат, не умножение, но вроде бы квадратов там вдвое больше произведений. Это вроде даёт около 20% ускорения ...
-- 11.02.2020, 15:27 --[Я практически уверен, что в этом случае основное время занимает библиотечная функция умножения,
Замерялось время именно только её, кодом
t=getabstime(); z=x^2; t=getabstime()-t; print(t);. Время вызова
getabstime() на порядки меньше миллисекунд и погрешности не вносит. Тем более что реальная точность порядка 10% (тик времени 16мс). Сюда же уходит и время размещения новой переменной
z (а число в
x подобрано так чтобы
z не сильно превышало
x).