Вычислить на ОМК

Aug 02, 2006 108 Replies

Доброго времени суток тебе Kirill!

08 Авг 06 13:09, Kirill Frolov -> Wladimir Tchernov:

KF> Как это работает объясняется на первом курсе института подходящей KF> направленности. Впрочем, понимать не обязательно. Достаточно взять и KF> использовать.

Так не интересно.

KF> Размеры таблиц должны быть внушительные...

Hу мен тут уже подсказали методы их заметного уменьшения используя свойство что

Будь счастлив(а) Kirill... С уважением Wladimir.

Пpивет, Wladimir!

*** 08 Aug 06 11:41, Wladimir Tchernov wrote to Vladislav Baliasov:

VB>> портированная библиотека плавучки из микрочиповской аппликухи). VB>> Принцип вычисления логарифма и значения коэффициентов взяты из VB>> библиотеки HI-Tech C для PIC.

WT> Hо она без исходников - тоесть дизассемблировал ?

Она - с исходниками. По крайней мере интересующих меня функций.

с уважением Владислав

KF>

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

KF>

KF> А оно, случайно, log.c не называется? Впрочем, для этого есть такие KF> средства как sourcenavigator, cscope, ctags наконец. я дальше grep не ходил никогда, мне его за глаза хватало, но можно и попробовать другие тулзовины :)

Hello Andrey!

08 Aug 06 05:51, you wrote to me:

AM>> if((x&0xfff0) == 0) return(t1[x]); AM>> if((x&0xffe0) == 0){ AM>> Итого получается 12 сегментов по 17 слов, что меньше, чем 512 AM>> байт. AA> Сколько тут массивов и каких они размеров?

12 массивов по 16 слов. Это в предположении о том, что функция изменяется быстро при малом аргументе и медленно при большом. Я _HЕ_ знаю точного вида функции. Итого: меньше 512 байт. AA> Зачем нужны эти бесконечные сравнения в старшОй части адреса? Затем, что от 0 до 15 результат просто берется из таблицы, а дальше делается линейная экстраполяция. AA> Какая получается в итоге в данном случае точность? Равная полученному из таблицы значению минус расчетное значение, вычисленное аналитически. Поскольку функцию я не знаю, то и про точность говорить не могу. AA> А в "и так далее" у тебя в младшОм адресе будет до 16 сравнений? Двенадцать. Хотя, при желании, на сравнениях можно и поэкономить. AM>> то вполне достаточно искать значение аргумента t[i] <= arg && arg AM>> < t[i+1]. Два байта на результат. AA> Так сколько у тебя превычесленных точек всё же? Вот в ЭТОМ случае придется иметь 4096 (или сколько там возможных значений функции) предвычисленных точек и делать до 16 сравнений двоичным поиском.

Anatoly

А тот факт использовать, что тебя к полу притягивает, а не к потолку, тебе интересно?

Что?

Hi Wladimir !

Совсем недавно 08 Aug 06 11:34, Wladimir Tchernov писал к Kirill Frolov:

KF>> Стандартная библиотека языка C.

WT> Уже посмотрел - нее я не настолько умный, что-бы понять КАК ЭТО WT> РАБОТАЕТ :) А тебе это нужно? Просто пользуйся и двигайся к решению своей задачи. А если так вглубь заглядывать, то далеко можно закопаться, забудешь, зачем копать начинал. Для меня аргументом в пользу разумной самоограниченности всегда являются воспоминания о таком институтском предмете, как физико-химические основы микроэлектроники.... И как-то хорошо на душе, что мало что кроме названия предмета в голове осталось... :)

WBRgrds Ruslan

Доброго времени суток тебе Kirill!

09 Авг 06 14:52, Kirill Frolov -> Wladimir Tchernov:

KF> А тот факт использовать, что тебя к полу притягивает, а не к KF> потолку, тебе интересно?

Мне все интересно, чего я не понимаю, но это уже оффтопик.

Будь счастлив(а) Kirill... С уважением Wladimir.

Hello Wladimir!

08 Aug 06 11:33, Wladimir Tchernov wrote to Dmitry E. Oboukhov:

WT>>> В общем это ВАХ прямосмещенного германивого дида - какой она WT>>> интересно функции подчиняется ? DO>> насколько я помню там чистая экспонента, а не логарифм. (U(I))

WT> Да - меня в схемсах просветили - а у меня на выходе именно логарифм. WT> Буду разбираться.

Стоп-стоп! iд = f(uд) - экспонента, соответственно, uд = f(iд) - логарифм.

Всего доброго!

А. Забайрацкий.

Hello Wladimir!

08 Aug 06 11:34, Wladimir Tchernov wrote to Kirill Frolov:

WT> Попробую все-же по таблицам.

Вот-вот. Двоичное число легко нормализуется сдвигами, допустим, до диапазона (1...2). А для этого нормализованного берем достаточно редкую таблицу - допустим, из 16 точек, по ней интерполируем. Почитай главу "Интерполяция" в любом учебнике по численным методам. Тем более, таблица константная, можно вообще заранее построить любой интерполяционный многочлен, подставляешь в него нормализованное число и, путем N сложений и N умножений, получаешь дробную часть искомого логарифма. Прибавляешь (вернее, приписываешь слева, в качестве целой части) к нему насчитанное количество сдвигов, логарифм готов.

Всего доброго!

А. Забайрацкий.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required