[an error occurred while processing this directive] [an error occurred while processing this directive]
Вычисление десятичного логарифма на ADSP21xx
(«Телесистемы»: Конференция «Цифровые сигнальные процессоры (DSP) и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено Dima 15 августа 2001 г. 14:02

Из USING THE ADSP-2100 FAMILY VOL.1 взял программу вычисления десятичного логарифма. Но она выдает неправильный результат. Кто-нибудь с этим сталкивался, в чем может быть проблема?
Входные числа у меня типа int(например, число 1000 (десятичное), я представляю как MR1=0, MR0=0x3e8)

Программа на VDSP++2.0 ниже:
.VAR LOG10_COEFFS[5]=0x6f15,0xc987,0x1fc3,0xf135,0x037d;

// Calculates the Log to the base 10 of a 16.16 number
// INPUTS: MR1 = integer part in unsigned 16.0 format
// MR0 = fractional part in 0.16 unsigned format
// Need M5=1, L5=0
// OUTPUTS: SR1 in 4.12 format
LOG10: I5=LOG10_COEFFS;
MY1=0x2688;
SE=EXP MR1 (HI);
SE=EXP MR0 (LO);
AY0=SE;
AR=AY0-1;
AX0=14;
SE=AR, AR=AX0+AY0;
SR=NORM MR1 (HI);
SR=SR OR NORM MR0 (LO);
MR=AR*MY1(SS);
MY1=MR1;
MR1=MR0;
MR2=MY1;
MR0=0;
AY0=0x8000;
AR=SR1-AY0;
MY1=AR;
MF=AR*MY1(RND), MX1=DM(I5,M5);
MR=MR+MX1*MY1(SS), MX1=DM(I5,M5);
CNTR=3;
DO APPROX UNTIL CE;
MR=MR+MX1*MF(SS);
APPROX: MF=AR*MF(RND), MX1=DM(I5,M5);
MR=MR+MX1*MF(RND);
SR=ASHIFT MR2 BY 12 (HI);
SR=SR OR LSHIFT MR1 BY 12 (LO);
RTS;

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru