[an error occurred while processing this directive]
|
Лучше их вообще не читать
В функции bitrev128 я один битик пропустил. Нужно к выражению для j добавить |(i&8). Эта функция в 7-ми разрядном индексе биты зеркально переставлять должна. Т.е. бит 0 должен поменяться местами с битом 6, бит 1 -с битом 5, бит 2 - с битом 4. А бит 3 должен остаться на месте, ему пары нет. Этот битик я и потерял.
'Вот товарищ с Востока,
Он танцует жестоко.
Ему пара нужна.
Только пары не видно,
Танцору обидно.
И уводит его старшина.'
Роль старшины я и сыграл в данном случае, битик увел.
Но случайно, поверьте, совсем, совсем случайно.
А вторую ошибку Вы нашли. Только по модулю 256 нужно.
Тоже не хотел, а вон оно как...
Ее можно и по другому исправить - увеличить размер KOEF до 320 (на 64 отсчета, четверть периода). И сгенерировать 1.25 периода
синуса. Т.е.
for(i=0;i.lt.320;i++) koeff[i]=sin(2pi*i/256).
Тогда элементы массива с номерами 0-255 - синус, с номерами 64 -319 - косинус.
Тогда никаких операций по модулю не нужно будет.
В общем прошу прощения. Вроде больше нет ошибок.
Но програмка далеко не оптимальная, чтобы разобраться разве только.
E-mail: info@telesys.ru