Tips & Tricks & Effects & Оптимальные Алгоритмы
| |
Akyltist | Дата: Суббота, 19 Декабря 2009, 08:20 | Сообщение # 1 |
заслуженный участник
Сейчас нет на сайте
| ================================== ================================== В данную тему выкладываем самые оптимальные алгоритмы (математические, геометрические, физические, графические) не забываем про качество алгоритмов ================================== ================================== Любой флуд в теме будет наказываться очень жестоко. - [Intro] - [Mathematical Functions] ------{Функция Оптимального вычисления арккосинуса} ------{Функция Оптимального вычисления арксинуса} ------ ------ ------ - [Geometric Functions] ------ ------ ------ - [Physical calculations] ------ ------ ------ - [Algorithms graphics] ------ ------ ------ -[Cryptographic Algorithms] ------ ------ ------ ------------------------------------------------------------------------------------------------------ Правила публикации: 1. Аккуратное оформление 2. Длинные алгоритмы заносим в spoiler 3. Очень длинные заливаем на надежные хостинги, но при этом в посте составляем качественное описание 4. Желательны скачки по прямым ссылкам
|
|
| |
Akyltist | Дата: Суббота, 19 Декабря 2009, 08:21 | Сообщение # 2 |
заслуженный участник
Сейчас нет на сайте
| Функция Оптимального вычисления арккосинуса
0000 | { арккосинус [обозначение: arccos] ---------------------------------------} | 0001 | function ArcCos( x:extended):extended; assembler; | 0007 | | mov | ah,byte ptr [x+9] | | 0014 | | db | 0CDh, 35h, 0e8h | {1,x} | 0016 | | fmul | st,st(2) | {x**2,1,x} | 0018 | | fsqrt | | {sqrt(1-x**2),x} | 0022 | | mov | ah,byte ptr [sw+1] | | 0025 | | fxch | | {x,sqrt(1-x**2)} | 0027 | | shr | al,1 | { x был <0 ? } | 0030 | | db | 0CDh, 35h, 0eBh | {Pi,arccos(abs(-x))} | 0031 | | fsubrp | st(1),st | {arccos(x)} | 0035 | | shr | al,1 | { x был <0 ? } | 0037 | | db | 0CDh, 35h, 0e8h | {1,arctan(1/x)} | 0038 | | fchs | | {-1,arctan(1/x)} | 0040 | | db | 0CDh, 35h, 0eBh | {Pi,-1,arctan(1/x)} | 0041 | | fscale | | {Pi/2,-1,arctan(1/x)} | 0042 | | fstp | St(1) | {Pi/2,arctan(1/x)} | 0044 | | fadd | | {arccos(x)=Pi/2-arctan(1/x)} | 0047 | | fsubrp | st(1),st | {arccos(x)=Pi/2-arctan(1/x)} | дает прирост 30% производительностипо сравнению со стандартной от Borland t,mks c сопроцессором | t,ms без сопра, но c эмулятором | extended | double | real | single | extended | double | real | single | TYPE | 409 | 406 | 572 | 413 | 19.3 | 20.1 | 20.1 | 20.0 | NEW FUNC | 745 | 748 | 904 | 745 | 23.2 | 24.0 | 24.9 | 24.0 | STANDART | 55% | 54% | 63% | 55% | 83% | 84% | 84% | 84% | % compor. |
|
|
| |
Akyltist | Дата: Суббота, 19 Декабря 2009, 11:45 | Сообщение # 3 |
заслуженный участник
Сейчас нет на сайте
| Функция Оптимального вычисления арксинуса 0000 | { арксинус [обозначение: arcsin] -----------------------------------------} | 0001 | function ArcSin( x:extended):extended; assembler; | 0007 | | mov | ah,byte ptr [x+9] | | 0009 | | jnc | [color=red]@plus | | 0014 | | db | 0CDh, 35h, 0e8h | {1,x} | 0016 | | fmul | st,st(2) | {x**2,1,x} | 0018 | | fsqrt | | {sqrt(1-x**2),x} | 0022 | | mov | ah,byte ptr [sw+1] | | 0026 | | fpatan | | {arctan(1/x)} | 0028 | | db | 0CDh, 35h, 0e8h | {1,arctan(1/x)} | 0029 | | fchs | | {-1,arctan(1/x)} | 0030 | | db | 0CDh, 35h, 0eBh | {Pi,-1,arctan(1/x)} | 0031 | | fscale | | {Pi/2,-1,arctan(1/x)} | 0032 | | fstp | St(1) | {Pi/2,arctan(1/x)} | 0033 | | fsubrp | st(1),st | {Pi/2-arctan(1/x)} | 0038 | | shr | al,1 | { arctan(x):=-arctan(-x) } | дает прирост 30% производительностипо сравнению со стандартной от Borland t,mks c сопроцессором | t,ms без сопра, но c эмулятором | extended | double | real | single | extended | double | real | single | TYPE | 382 | 395 | 562 | 392 | 19.3 | 20.1 | 21.0 | 20.0 | NEW FUNC | 706 | 708 | 876 | 706 | 23.2 | 24.0 | 24.9 | 24.0 | STANDART | 54% | 56% | 64% | 55% | 83% | 84% | 84% | 84% | % compor. |
|
|
| |
|