powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Функция гиперболического тангенса
24 сообщений из 24, страница 1 из 1
Функция гиперболического тангенса
    #38217437
cucutnog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем добрый день!

Если взять два числа A и B и сложить их, то процессор проделает одну операцию сложения,так?

А сколько операций и каких проделает процессор, если я хочу взять гиперболический тангенс от аргумента?

Например, tanh(3).

Такой же вопрос про экспоненту в какой либо степени. Напрмиер, exp(3)
...
Рейтинг: 0 / 0
Функция гиперболического тангенса
    #38217476
Abstraction
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cucutnogВсем добрый день!

Если взять два числа A и B и сложить их, то процессор проделает одну операцию сложения,так?

А сколько операций и каких проделает процессор, если я хочу взять гиперболический тангенс от аргумента?

Например, tanh(3).

Такой же вопрос про экспоненту в какой либо степени. Напрмиер, exp(3)Знаете, вопрос, заданный дважды , в общем случае не приносит вдвое больше информации.AbstractionСтандарт C++ таких вещей не оговаривает.
Простейший способ - написать программу, скомпилировать, взять что-нибудь вроде IDA Pro и посмотреть, чего там скомпилировалось.
...
Рейтинг: 0 / 0
Функция гиперболического тангенса
    #38217665
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cucutnogВсем добрый день!

Если взять два числа A и B и сложить их, то процессор проделает одну операцию сложения,так?

А сколько операций и каких проделает процессор, если я хочу взять гиперболический тангенс от аргумента?

Например, tanh(3).

Такой же вопрос про экспоненту в какой либо степени. Напрмиер, exp(3)
Гипер-тангенс считается через частное от двух экспонент. А сама экспонента
- инструкция математического модуля в процессоре (FPU). Сколько она
операций делает - Х.З. но думаю что достаточно быстро чтобы мы этого
вообще не замечали. Аппаратно.

http://www.cyberforum.ru/assembler/thread186752.html
...
Рейтинг: 0 / 0
Функция гиперболического тангенса
    #38217682
m_Sla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cucutnogВсем добрый день!
Если взять два числа A и B и сложить их, то процессор проделает одну операцию сложения,так?
А сколько операций и каких проделает процессор, если я хочу взять гиперболический тангенс от аргумента?
Например, tanh(3).
Такой же вопрос про экспоненту в какой либо степени. Напрмиер, exp(3)Компилятор mingw32 4.6.2.
tanh(3) и exp(3) заменил константами на этапе компиляции, вычислять во время исполнения не стал. :)
Если вместо аргумента использовать переменную, то для расчета, как я понял, используется функция tanh из msvcrt.dll. Код там достаточно большой и запутанный.
...
Рейтинг: 0 / 0
Функция гиперболического тангенса
    #38217783
Фотография tehKosh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Простейший способ - написать программу, скомпилировать, взять что-нибудь вроде IDA Pro и посмотреть, чего там скомпилировалось.
Приятная новость для вас: в любом современном компиляторе можно включить генерацию ассемблерного кода.
...
Рейтинг: 0 / 0
Функция гиперболического тангенса
    #38217861
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tehKoshв любом современном компиляторе можно включить генерацию ассемблерного кода.

Вот только это скорее всего будет абстрактный ассемблер, не зависящий от железного ЦПУ.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Функция гиперболического тангенса
    #38217871
Dimitry SibiryakovtehKoshв любом современном компиляторе можно включить генерацию ассемблерного кода.

Вот только это скорее всего будет абстрактный ассемблер, не зависящий от железного ЦПУ.

Имеете ввиду что GCC вне зависимости от того на какой аппаратной платформе его используете, всегда будет показывать один и тот же ассемблерный код?
Для одного и того же исходно кода.
...
Рейтинг: 0 / 0
Функция гиперболического тангенса
    #38217876
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вне зависимостиИмеете ввиду что GCC вне зависимости от того на какой аппаратной
платформе его используете, всегда будет показывать один и тот же ассемблерный код?

Это было бы вполне логично.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Функция гиперболического тангенса
    #38217882
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вне зависимостиDimitry Sibiryakovпропущено...

Вот только это скорее всего будет абстрактный ассемблер, не зависящий от железного ЦПУ.

Имеете ввиду что GCC вне зависимости от того на какой аппаратной платформе его используете, всегда будет показывать один и тот же ассемблерный код?
Для одного и того же исходно кода.
Да разный будет ассемблерный код.
И вообще в этом и суть генерации ассеблерного кода - она должна показывать конкретные команды на конкретной платформе. Иначе никакого смысла в ней нет.
...
Рейтинг: 0 / 0
Функция гиперболического тангенса
    #38217892
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyИначе никакого смысла в ней нет.
Насколько мне известно, классическая схема компиляции С четырёхпроходная:
препроцессор-компилятор-оптимизатор-ассемблер. Гораздо удобнее сконцентрировать
платформо-зависимость в одном месте. Иначе пришлось бы для каждой платформы писать
собственный компилятор в дополнение к ассемблеру и линкеру.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Функция гиперболического тангенса
    #38217898
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovНасколько мне известно, классическая схема компиляции С четырёхпроходная:
препроцессор-компилятор-оптимизатор-ассемблер.

Ну так на последней стадии создается либо машинный код, либо как в случае с опцией -S у gcc - ассемблерный листинг эквивалентный тому машинному коду.
...
Рейтинг: 0 / 0
Функция гиперболического тангенса
    #38217904
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cucutnogВсем добрый день!

Если взять два числа A и B и сложить их, то процессор проделает одну операцию сложения,так?

А сколько операций и каких проделает процессор, если я хочу взять гиперболический тангенс от аргумента?

Например, tanh(3).

Такой же вопрос про экспоненту в какой либо степени. Напрмиер, exp(3)

Обычно в библиотеке существуют функции, вычисляющие значения таких функций за счет разложений в ряд.
Элементы ряда вычисляются рекурсивно в цикле до тех пор, пока очередной член ряда не станет меньше, чем нужная погрешность вычисления.

Какие конкретно ряды для каждой из этих функций я не знаю, это можно в справочнике расложений посмотреть.

Т.е. с точки зрения оригинального вопроса — это вызов функции и цикл с несколькими операциями. Функция может быть встроенной.
...
Рейтинг: 0 / 0
Функция гиперболического тангенса
    #38217908
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyНу так на последней стадии создается либо машинный код, либо как в
случае с опцией -S у gcc - ассемблерный листинг эквивалентный тому машинному коду.

Звучит сомнительно если учесть, что ассемблерный файл генерируется и при обычной
компиляции, что подтверждает результат работы ключа "не удалять временные файлы".

Хотя я могу и заблуждаться. Вопрос на засыпку: ассемблерные вставки в gcc пишутся на каком
ассемблере?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Функция гиперболического тангенса
    #38217916
Dimitry SibiryakovAnatoly MoskovskyИначе никакого смысла в ней нет.
Насколько мне известно, классическая схема компиляции С четырёхпроходная:
препроцессор-компилятор-оптимизатор-ассемблер. Гораздо удобнее сконцентрировать
платформо-зависимость в одном месте. Иначе пришлось бы для каждой платформы писать
собственный компилятор в дополнение к ассемблеру и линкеру.

А объектные(obj) файлы на какой стадии появляются?
...
Рейтинг: 0 / 0
Функция гиперболического тангенса
    #38217919
Anatoly Moskovskyвне зависимостипропущено...

Имеете ввиду что GCC вне зависимости от того на какой аппаратной платформе его используете, всегда будет показывать один и тот же ассемблерный код?
Для одного и того же исходно кода.
Да разный будет ассемблерный код.
И вообще в этом и суть генерации ассеблерного кода - она должна показывать конкретные команды на конкретной платформе. Иначе никакого смысла в ней нет.
По идее да. GCC есть под ARM, x86 и PowerPC, и часть ассемблерных команд одной архитектуры просто может не существовать на другой.
...
Рейтинг: 0 / 0
Функция гиперболического тангенса
    #38217920
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вне зависимостичасть ассемблерных команд одной архитектуры просто может не
существовать на другой.
А Вы таки думаете, что ассемблерная команда должна компилироваться в машинный код 1:1?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Функция гиперболического тангенса
    #38217927
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovAnatoly MoskovskyНу так на последней стадии создается либо машинный код, либо как в
случае с опцией -S у gcc - ассемблерный листинг эквивалентный тому машинному коду.

Звучит сомнительно если учесть, что ассемблерный файл генерируется и при обычной
компиляции, что подтверждает результат работы ключа "не удалять временные файлы".

Хорош уже тут фантазировать.
Откройте любой ассемблерный листинг и увидите там такое:
Код: plaintext
1.
movl    %edi, -4(%rbp)


Это никак не может быть абстрактным ассемблером.
Тут как минимум привязка к x86, а точнее к x86_64.
...
Рейтинг: 0 / 0
Функция гиперболического тангенса
    #38217941
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyЭто никак не может быть абстрактным ассемблером.
Тут как минимум привязка к x86, а точнее к x86_64.
Не вижу в этой строчке ничего, что помешало бы ей скомпилироваться в пару инструкций
"010455,177774".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Функция гиперболического тангенса
    #38217949
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Вы говорите про какие-то потенциальные возможности.
А я вам говорю как оно есть в существующей на данный момент объективной реальности: опция -S (и ее аналоги в других мейнстримных компиляторах) генерируют код для конкретной платформы, а не абстрактный.
...
Рейтинг: 0 / 0
Функция гиперболического тангенса
    #38217967
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,
Anatoly Moskovsky,

Тише, горячие парни. Вы оба правы.
GCC действительно сначала компилирует текст в IR (Intermediate Representation) .
IR это нечто вроде абстрактного машинного кода для несуществующего процессора. На основе IR делается основная оптимизация кода.
Потом запускается модуль конвертации из IR в машинный код целевой платформы. На этом этапе может быть второй этап оптимизации уже с учетом особенностей процессора.

Ключ -S всегда выдает текст на языке ассемблера целевой платформы.
Прямой доступ к IR (насколько я знаю) gcc не дает.
...
Рейтинг: 0 / 0
Функция гиперболического тангенса
    #38217983
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl,

Речь изначально шла только про -S.
IR тут каким боком?
...
Рейтинг: 0 / 0
Функция гиперболического тангенса
    #38218103
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
Dimitry Sibiryakovвне зависимостичасть ассемблерных команд одной архитектуры просто может не
существовать на другой.
А Вы таки думаете, что ассемблерная команда должна компилироваться в машинный код 1:1?..
Таки да. Ассемблер - это именно человекочитабельное представление машинного кода.
...
Рейтинг: 0 / 0
Функция гиперболического тангенса
    #38219311
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
?Dimitry Sibiryakovпропущено...

А Вы таки думаете, что ассемблерная команда должна компилироваться в машинный код 1:1?..
Таки да. Ассемблер - это именно человекочитабельное представление машинного кода.И будете не правы.
Практически каждый из ассемблеров имеет команды являющиеся комбинацией из двух машинных.
Например классический MIPS: la и lb. Одна команда в исходнике - две в маш-коде.
Даже move reg1, reg2 в ассемблере присутствует, а в машинном коде отсутствует.
Я уж не буду говорить о командах управляющих размещением кода и данных - это вообще не машинные кода а команды для компилятора и линкера, но тем не менее они являются необходимыми командами ассемблера.

Но это все не тема для этого форума. Так что завязываем оффтопичить.
...
Рейтинг: 0 / 0
Функция гиперболического тангенса
    #38219431
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Жаль что автор не очень ценит наше внимание.
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Функция гиперболического тангенса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]