Как на asm написать тригонометрическую функцию?

Тема в разделе "WASM.BEGINNERS", создана пользователем Rashides, 23 май 2007.

  1. Rashides

    Rashides New Member

    Публикаций:
    0
    Регистрация:
    5 май 2007
    Сообщения:
    20
    Привет, воины ДZена! Как на asm написать тригонометрическую функцию? Спасибо! :)
     
  2. asd

    asd New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    952
    Адрес:
    Russia
    Rashides
    Используй FPU. Статьи есть на сайте.
     
  3. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    http://www.wasm.ru/publist.php?list=11
    http://www.wasm.ru/article.php?article=1010025
     
  4. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    может быть его интересовала реализация разложения в ряд Тейлора...? =))
     
  5. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    Great
    Да ни каких проблем :))
    sin(x) = x/1! - x^3/3! + x^5/5! - x^7/7! + ...
    cos(x) = 1 - x^2/2! + x^4/4! - x^6/6! + ...
    Пусть извращается на здоровье, только не рассчитывает переплюнуть FPU по скорости ;)
     
  6. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    Y_Mur, а если считать с точностью до единиц :)
     
  7. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Y_Mur
    Можно и табличку заюзать, если точность не критична и критерий размера позволяет. Будет быстрее, чем fsin. Особенно это актуально когда нужен не голый sin, а, к примеру, ftol(A * sin(x)).

    FreeManCPM
    :)
     
  8. mr_Infern0

    mr_Infern0 New Member

    Публикаций:
    0
    Регистрация:
    13 фев 2007
    Сообщения:
    52
    Y_Mur
    а он SSE может заюзать
     
  9. m1x

    m1x New Member

    Публикаций:
    0
    Регистрация:
    27 май 2007
    Сообщения:
    2
    А где мой пост?
     
  10. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    offtop вот и удалили
     
  11. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Вопрос не совсем по асму, но раз тут уже о разложении функций в ряд Тейлора... , то может кто-нибудь подскажет разложение для cth(x)? (но не только для x<<1, а в общем случае)
     
  12. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    l_inc
    "Классического" разложения в степенной ряд для cth(x) не существует поскольку cth(0) = оо.
    Однако можно извратиться и вывести степенной ряд в виде суммы An*(x+d)^n, где An коэффициенты ряда, а d - константа сдвигающая точку разложения в безопасное место ;)
    Но если нужно всё таки вычислить cth(x), а не разложить его в ряд как самоцель, то рулит cth(x) = (exp(x)+exp(-x))/(exp(x)-exp(-x))
     
  13. m1x

    m1x New Member

    Публикаций:
    0
    Регистрация:
    27 май 2007
    Сообщения:
    2
    а куда мне писать то? Вроде бы я начинающий. Не серьезно все это. Лучше уйти отсюда
     
  14. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Y_Mur
    Ну раз уж я такой вопрос задал, то вероятно определение cth я знаю. :)
    Нет. Мне действительно нужно разложение: связано с преобразованием функции Ланжевена, которое с экспонентами выполнять мне не по силам.
    А за вариант извращения спасибо. Мож че-нить и получится с ним.
     
  15. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    m1x
    ну дык тема то не про начинающих (обозвана просто криво), а про тригонометрию
     
  16. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    l_inc
    cth(x) = 1 + (1/x)*(SUM(B(n)/n!*(2*x)^n)); n>=0, B(n) - числа Бернулли
    Первые два члена разложения:
    cth(x) = 1 + (1/x)*(1 - x + x^2/3+...) = 1/x + x/3+...
     
  17. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    crypto
    Благодарю. Как раз то, что я искал. :)