User Tag List

Показано с 1 по 10 из 331

Тема: Вычисление числа Пи на ассемблере

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #10

    Регистрация
    25.11.2015
    Адрес
    г. Москва
    Сообщений
    192
    Спасибо Благодарностей отдано 
    12
    Спасибо Благодарностей получено 
    16
    Поблагодарили
    14 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Из формул Мачина наиболее замечательная для i8080 будет:

    32*atan(1/10)-4*atan(1/239)-16*atan(1/515)

    если считать в 100-ой системе, по такому алгоритму:
    Код:
    a=32/10
    b=4/239
    c=16/515
    for n=1 to len
      pi=(a-b-c)/(2n-1) ;здесь было n, что есть злобный баг
      a/=100
      b/=239 b/=239
      c/=103 c/=103 c/=25
    end for
    Деление на 25,103 и 239 делается по таблицам менее чем за 70 тактов на байт, а на 100 вообще делить не потребуется. Единственная сложная операция это деление на n, там получается примерно 400 тактов на байт, если делитель более 127. Но деление на n можно совместить для всех трёх слагаемых, при этом память будет требоваться для pi и трёх слагаемых. Результаты в EmuZWin для 3.5 МГц получились такие:

    100 цифр - 0,2 ms (=1/5 s)
    300 цифр - 2 s
    1000 цифр - 25 s
    4000 цифр - 418 s

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

Название:	PI_100.jpg 
Просмотров:	381 
Размер:	19.1 Кб 
ID:	59403Нажмите на изображение для увеличения. 

Название:	PI_300.jpg 
Просмотров:	412 
Размер:	18.9 Кб 
ID:	59405Нажмите на изображение для увеличения. 

Название:	PI_1000.jpg 
Просмотров:	406 
Размер:	21.4 Кб 
ID:	59404Нажмите на изображение для увеличения. 

Название:	PI_4000.jpg 
Просмотров:	443 
Размер:	20.6 Кб 
ID:	59406pi_fast.zip
    Последний раз редактировалось blackmirror; 30.01.2017 в 15:23. Причина: баг в алгоритме

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Арифметические процедуры на ассемблере
    от spensor в разделе Программирование
    Ответов: 27
    Последнее: 13.05.2017, 20:56
  2. Мнемокоманды и числа.
    от ALKO в разделе Программирование
    Ответов: 0
    Последнее: 15.02.2014, 03:49
  3. try-catch на ассемблере z80
    от siril в разделе Программирование
    Ответов: 22
    Последнее: 30.10.2012, 21:17
  4. Определение числа сторон
    от mungo в разделе Внешние накопители
    Ответов: 1
    Последнее: 16.03.2012, 18:06

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •