Поиск:

Ответ в темуСоздание новой темы Создание опроса
> вычисление логарифма, реализовать функцию log(x, y) 
:(
    Опции темы
Stream
Дата 2.11.2005, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 29.10.2005

Репутация: нет
Всего: нет



нужно написать функцию log(x, y), которая реализует логарифм x по основанию y


fld1
fld qword ptr [esp + 4]
fyl2x

ret

возвращает логарифм по основанию 2, помогите переделать для вышеописанного случая smile
PM MAIL   Вверх
St. Andrew
Дата 2.11.2005, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 28.3.2005
Где: Санкт-Петербург

Репутация: 1
Всего: 8



Мне кажется, что нужно преобразовать основание к двойке. Сейчас я на работе и формул под рукой нет smile Но, если я не ошибаюсь, есть формула n*log(...)=log (...) с основанием y^(1/n) Ну, или что-то вроде того.... Очевидно, можно основание преобразовать к двойке. То есть - в основании стоит какое-то число, а мы его выражаем как степень двойки. Затем показатель степени двойки в степени (-1) закидываем в st(1) и вызываем функцию fyl2x . На мой взгляд, должно работать.

Проблема здесь, на мой взгляд, решить показательное уравнение 2^n=y Но это уравнение можно преобразовать в логарифм log2(y)=n Отсюда можно найти n . Затем мы , как я уже говорил, закидываем в st(1) 1/n , в st(0) закидываем аргумент x вызываем fyl2x В вершине стека имеем заданный логарифм!

Код

fld1;
fld y;
fyl2x
fld1
divr
fld x;
fyl2x
fstp res;

ret


Это сообщение отредактировал(а) St. Andrew - 2.11.2005, 16:04
--------------------
Оглянитесь вокруг! В мире так много прекрасного!
PM MAIL WWW ICQ   Вверх
Дрон
Дата 2.11.2005, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: нет
Всего: 93



Насколько я помню со школы:

log (b,a) = log (b,c) / log (a,c)

Где log (b,a) -- логарифм b по основанию a.

Т.е. для твоего случая

log (x, y) = log (x, 2) / log (y, 2)






--------------------
Да. Именно так.
PM   Вверх
Akina
Дата 2.11.2005, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 1
Всего: 454



log(x,y) = log(x,2) / log(y,2)

Код

; draft
fld1
fld var_x
fyl2x
fld1
fld var_y
fyl2x
fdiv




--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
St. Andrew
Дата 2.11.2005, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 28.3.2005
Где: Санкт-Петербург

Репутация: 1
Всего: 8



Не успел сообщение отредактировать, как уже другой вариант написали! Я проверил, мой тоже работает! Хотя и формула другая немного smile
--------------------
Оглянитесь вокруг! В мире так много прекрасного!
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для начинающих"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для начинающих | Следующая тема »


 




[ Время генерации скрипта: 0.0534 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.