реклама на сайте
подробности

 
 
> Целочисленные алгоритмы ЦОС, надо сформулировать правила
Zelepuk
сообщение Mar 6 2011, 07:22
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 634
Регистрация: 27-10-10
Пользователь №: 60 464



Существует рабочий алгоритм(несколько фильтров и БПФ). Код работает на плавучке на обычном десктопе.
Стоит задача портировать алгоритм на процессор с фиксированой точкой.
Отсчёты, над которыми производятся преобразования, поступают в формате 1.15.
Понимаю что тупое преобразование float в int ни к чему хорошему не приведёт.
Тогда стоит вопрос: какие требования к оперрациям нужно предъявить?

Коэффиценты фильтров и БПФ должны быть тоже в 1.15?
Как производить умножение, деление, суммирование и вычитание, чтобы избегать переполнений?

(лучше если примеры коротенькие на С будут)

Используется 32-битный процессор на ARM9E ядре

Заранее спасибо.



Сообщение отредактировал Zelepuk - Mar 6 2011, 07:48
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Zelepuk
сообщение Mar 7 2011, 06:30
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 634
Регистрация: 27-10-10
Пользователь №: 60 464



Познавательное видео.

Но хотелось бы писать всё самуму руками. А тут получается вставил блок, нажал кнопочку и всё....
Причём код получается не очень читаемый...

Интересуют принципы.

Иными словами нужно перевести все float в программе в int (в крайнем случае long).
Какие могут быть общие рекомендации для таких задач? Как обезопасить код от переполнений при переходе на "фиксированую точку"?

Данные, над которыми осущесвляются операции поступают в дополнительном коде формата 1.15. Значит ли это что коэффиценты всех преобразований должны быть в таком же формате?

Микроконтроллер 32 битный.
Go to the top of the page
 
+Quote Post
diwil
сообщение Mar 7 2011, 11:58
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 366
Регистрация: 5-09-06
Из: Санкт-Петербург
Пользователь №: 20 107



Цитата(Zelepuk @ Mar 7 2011, 09:30) *
Иными словами нужно перевести все float в программе в int (в крайнем случае long).
Какие могут быть общие рекомендации для таких задач? Как обезопасить код от переполнений при переходе на "фиксированую точку"?

Данные, над которыми осущесвляются операции поступают в дополнительном коде формата 1.15. Значит ли это что коэффиценты всех преобразований должны быть в таком же формате?

Микроконтроллер 32 битный.


1. float->int:
q_1_15 = (int)(flt * 32767);
код не обезопасить - или насыщение делать, или увеличивать разрядность.

2. и да и нет. Зависит от реализации умножения и формата всего остального.

я где-то постил здесь реализацию БПФ. кстати, написанную специально оптимально для АРМа (на Це. ассемблерная - за пиво sm.gif) и, кстати, данные с коэффициентами в формате 1.15 sm.gif Все целочисленное. Поиск должен помочь.
Go to the top of the page
 
+Quote Post
Zelepuk
сообщение Mar 7 2011, 21:12
Сообщение #4


Знающий
****

Группа: Участник
Сообщений: 634
Регистрация: 27-10-10
Пользователь №: 60 464



Цитата(diwil @ Mar 7 2011, 14:58) *
1. float->int:
q_1_15 = (int)(flt * 32767);
код не обезопасить - или насыщение делать, или увеличивать разрядность.

2. и да и нет. Зависит от реализации умножения и формата всего остального.

я где-то постил здесь реализацию БПФ. кстати, написанную специально оптимально для АРМа (на Це. ассемблерная - за пиво sm.gif) и, кстати, данные с коэффициентами в формате 1.15 sm.gif Все целочисленное. Поиск должен помочь.


Никак не могу найти вашу реализацию. Может дадите ссылку... интересует именно реализация на Си. Посмотреть принципы хочу... rolleyes.gif
Go to the top of the page
 
+Quote Post
diwil
сообщение Mar 9 2011, 08:05
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 366
Регистрация: 5-09-06
Из: Санкт-Петербург
Пользователь №: 20 107



Цитата(Zelepuk @ Mar 8 2011, 00:12) *
Никак не могу найти вашу реализацию. Может дадите ссылку... интересует именно реализация на Си. Посмотреть принципы хочу... rolleyes.gif



да, тоже не могу найти... странно... ну ладно, вот код -

Код
#ifndef __FFT_TWIDDLES_H__
#define __FFT_TWIDDLES_H__

#define FR2(x) (x*32767)

const int16_t
fft_twiddles_1024[] = {
/*N:1024,i: 0 */ FR2(+1.0000000000000000), FR2(+0.0000000000000000),
/*N:1024,i: 0 */ FR2(+1.0000000000000000), FR2(+0.0000000000000000),
/*N:1024,i: 0 */ FR2(+1.0000000000000000), FR2(+0.0000000000000000),
/*N:1024,i: 1 */ FR2(+0.9999247018391445), FR2(+0.0122715382857199),
/*N:1024,i: 1 */ FR2(+0.9999811752826011), FR2(+0.0061358846491545),
/*N:1024,i: 1 */ FR2(+0.9998305817958234), FR2(+0.0184067299058048),
/*N:1024,i: 2 */ FR2(+0.9996988186962043), FR2(+0.0245412285229123),
/*N:1024,i: 2 */ FR2(+0.9999247018391445), FR2(+0.0122715382857199),
/*N:1024,i: 2 */ FR2(+0.9993223845883495), FR2(+0.0368072229413588),
/*N:1024,i: 3 */ FR2(+0.9993223845883495), FR2(+0.0368072229413588),
/*N:1024,i: 3 */ FR2(+0.9998305817958234), FR2(+0.0184067299058048),
/*N:1024,i: 3 */ FR2(+0.9984755805732948), FR2(+0.0551952443496899),
/*N:1024,i: 4 */ FR2(+0.9987954562051724), FR2(+0.0490676743274180),
/*N:1024,i: 4 */ FR2(+0.9996988186962043), FR2(+0.0245412285229123),
/*N:1024,i: 4 */ FR2(+0.9972904566786902), FR2(+0.0735645635996674),
/*N:1024,i: 5 */ FR2(+0.9981181129001492), FR2(+0.0613207363022086),
/*N:1024,i: 5 */ FR2(+0.9995294175010931), FR2(+0.0306748031766366),
/*N:1024,i: 5 */ FR2(+0.9957674144676598), FR2(+0.0919089564971327),
/*N:1024,i: 6 */ FR2(+0.9972904566786902), FR2(+0.0735645635996674),
/*N:1024,i: 6 */ FR2(+0.9993223845883495), FR2(+0.0368072229413588),
/*N:1024,i: 6 */ FR2(+0.9939069700023561), FR2(+0.1102222072938831),
/*N:1024,i: 7 */ FR2(+0.9963126121827780), FR2(+0.0857973123444399),
/*N:1024,i: 7 */ FR2(+0.9990777277526454), FR2(+0.0429382569349408),
/*N:1024,i: 7 */ FR2(+0.9917097536690995), FR2(+0.1284981107937932),
/*N:1024,i: 8 */ FR2(+0.9951847266721969), FR2(+0.0980171403295606),
/*N:1024,i: 8 */ FR2(+0.9987954562051724), FR2(+0.0490676743274180),
/*N:1024,i: 8 */ FR2(+0.9891765099647810), FR2(+0.1467304744553618),
/*N:1024,i: 9 */ FR2(+0.9939069700023561), FR2(+0.1102222072938831),
/*N:1024,i: 9 */ FR2(+0.9984755805732948), FR2(+0.0551952443496899),
/*N:1024,i: 9 */ FR2(+0.9863080972445987), FR2(+0.1649131204899699),
/*N:1024,i:10 */ FR2(+0.9924795345987100), FR2(+0.1224106751992162),
/*N:1024,i:10 */ FR2(+0.9981181129001492), FR2(+0.0613207363022086),
/*N:1024,i:10 */ FR2(+0.9831054874312163), FR2(+0.1830398879551410),
/*N:1024,i:11 */ FR2(+0.9909026354277800), FR2(+0.1345807085071262),
/*N:1024,i:11 */ FR2(+0.9977230666441916), FR2(+0.0674439195636641),
/*N:1024,i:11 */ FR2(+0.9795697656854405), FR2(+0.2011046348420919),
/*N:1024,i:12 */ FR2(+0.9891765099647810), FR2(+0.1467304744553618),
/*N:1024,i:12 */ FR2(+0.9972904566786902), FR2(+0.0735645635996674),
/*N:1024,i:12 */ FR2(+0.9757021300385286), FR2(+0.2191012401568698),
/*N:1024,i:13 */ FR2(+0.9873014181578584), FR2(+0.1588581433338615),
/*N:1024,i:13 */ FR2(+0.9968202992911657), FR2(+0.0796824379714301),
/*N:1024,i:13 */ FR2(+0.9715038909862518), FR2(+0.2370236059943672),
/*N:1024,i:14 */ FR2(+0.9852776423889412), FR2(+0.1709618887603012),
/*N:1024,i:14 */ FR2(+0.9963126121827780), FR2(+0.0857973123444399),
/*N:1024,i:14 */ FR2(+0.9669764710448521), FR2(+0.2548656596045146),
/*N:1024,i:15 */ FR2(+0.9831054874312163), FR2(+0.1830398879551410),
/*N:1024,i:15 */ FR2(+0.9957674144676598), FR2(+0.0919089564971327),
/*N:1024,i:15 */ FR2(+0.9621214042690416), FR2(+0.2726213554499490),
/*N:1024,i:16 */ FR2(+0.9807852804032304), FR2(+0.1950903220161283),
/*N:1024,i:16 */ FR2(+0.9951847266721969), FR2(+0.0980171403295606),
/*N:1024,i:16 */ FR2(+0.9569403357322088), FR2(+0.2902846772544623),
/*N:1024,i:17 */ FR2(+0.9783173707196277), FR2(+0.2071113761922186),
/*N:1024,i:17 */ FR2(+0.9945645707342554), FR2(+0.1041216338720546),
/*N:1024,i:17 */ FR2(+0.9514350209690083), FR2(+0.3078496400415349),
/*N:1024,i:18 */ FR2(+0.9757021300385286), FR2(+0.2191012401568698),
/*N:1024,i:18 */ FR2(+0.9939069700023561), FR2(+0.1102222072938831),
/*N:1024,i:18 */ FR2(+0.9456073253805213), FR2(+0.3253102921622629),
/*N:1024,i:19 */ FR2(+0.9729399522055602), FR2(+0.2310581082806711),
/*N:1024,i:19 */ FR2(+0.9932119492347945), FR2(+0.1163186309119048),
/*N:1024,i:19 */ FR2(+0.9394592236021899), FR2(+0.3426607173119944),
/*N:1024,i:20 */ FR2(+0.9700312531945440), FR2(+0.2429801799032639),
/*N:1024,i:20 */ FR2(+0.9924795345987100), FR2(+0.1224106751992162),
/*N:1024,i:20 */ FR2(+0.9329927988347390), FR2(+0.3598950365349881),
/*N:1024,i:21 */ FR2(+0.9669764710448521), FR2(+0.2548656596045146),
/*N:1024,i:21 */ FR2(+0.9917097536690995), FR2(+0.1284981107937932),
/*N:1024,i:21 */ FR2(+0.9262102421383114), FR2(+0.3770074102164183),
/*N:1024,i:22 */ FR2(+0.9637760657954398), FR2(+0.2667127574748984),
/*N:1024,i:22 */ FR2(+0.9909026354277800), FR2(+0.1345807085071262),
/*N:1024,i:22 */ FR2(+0.9191138516900578), FR2(+0.3939920400610481),
/*N:1024,i:23 */ FR2(+0.9604305194155658), FR2(+0.2785196893850531),
/*N:1024,i:23 */ FR2(+0.9900582102622971), FR2(+0.1406582393328492),
/*N:1024,i:23 */ FR2(+0.9117060320054299), FR2(+0.4108431710579039),
/*N:1024,i:24 */ FR2(+0.9569403357322088), FR2(+0.2902846772544623),
/*N:1024,i:24 */ FR2(+0.9891765099647810), FR2(+0.1467304744553618),
/*N:1024,i:24 */ FR2(+0.9039892931234433), FR2(+0.4275550934302821),
/*N:1024,i:25 */ FR2(+0.9533060403541939), FR2(+0.3020059493192281),
/*N:1024,i:25 */ FR2(+0.9882575677307495), FR2(+0.1527971852584434),
/*N:1024,i:25 */ FR2(+0.8959662497561852), FR2(+0.4441221445704292),
/*N:1024,i:26 */ FR2(+0.9495281805930367), FR2(+0.3136817403988915),
/*N:1024,i:26 */ FR2(+0.9873014181578584), FR2(+0.1588581433338615),
/*N:1024,i:26 */ FR2(+0.8876396204028539), FR2(+0.4605387109582400),
/*N:1024,i:27 */ FR2(+0.9456073253805213), FR2(+0.3253102921622629),
/*N:1024,i:27 */ FR2(+0.9863080972445987), FR2(+0.1649131204899699),
/*N:1024,i:27 */ FR2(+0.8790122264286335), FR2(+0.4767992300633221),
/*N:1024,i:28 */ FR2(+0.9415440651830208), FR2(+0.3368898533922201),
/*N:1024,i:28 */ FR2(+0.9852776423889412), FR2(+0.1709618887603012),
/*N:1024,i:28 */ FR2(+0.8700869911087115), FR2(+0.4928981922297840),
/*N:1024,i:29 */ FR2(+0.9373390119125750), FR2(+0.3484186802494346),
/*N:1024,i:29 */ FR2(+0.9842100923869290), FR2(+0.1770042204121488),
/*N:1024,i:29 */ FR2(+0.8608669386377673), FR2(+0.5088301425431070),
/*N:1024,i:30 */ FR2(+0.9329927988347390), FR2(+0.3598950365349881),
/*N:1024,i:30 */ FR2(+0.9831054874312163), FR2(+0.1830398879551410),
/*N:1024,i:30 */ FR2(+0.8513551931052652), FR2(+0.5245896826784690),
/*N:1024,i:31 */ FR2(+0.9285060804732156), FR2(+0.3713171939518375),
/*N:1024,i:31 */ FR2(+0.9819638691095552), FR2(+0.1890686641498062),
/*N:1024,i:31 */ FR2(+0.8415549774368984), FR2(+0.5401714727298929),
/*N:1024,i:32 */ FR2(+0.9238795325112867), FR2(+0.3826834323650898),
/*N:1024,i:32 */ FR2(+0.9807852804032304), FR2(+0.1950903220161283),
/*N:1024,i:32 */ FR2(+0.8314696123025452), FR2(+0.5555702330196022),
/*N:1024,i:33 */ FR2(+0.9191138516900578), FR2(+0.3939920400610481),
/*N:1024,i:33 */ FR2(+0.9795697656854405), FR2(+0.2011046348420919),
/*N:1024,i:33 */ FR2(+0.8211025149911047), FR2(+0.5707807458869673),
/*N:1024,i:34 */ FR2(+0.9142097557035307), FR2(+0.4052413140049899),
/*N:1024,i:34 */ FR2(+0.9783173707196277), FR2(+0.2071113761922186),
/*N:1024,i:34 */ FR2(+0.8104571982525948), FR2(+0.5857978574564389),
/*N:1024,i:35 */ FR2(+0.9091679830905224), FR2(+0.4164295600976372),
/*N:1024,i:35 */ FR2(+0.9770281426577544), FR2(+0.2131103199160914),
/*N:1024,i:35 */ FR2(+0.7995372691079050), FR2(+0.6006164793838690),
/*N:1024,i:36 */ FR2(+0.9039892931234433), FR2(+0.4275550934302821),
/*N:1024,i:36 */ FR2(+0.9757021300385286), FR2(+0.2191012401568698),
/*N:1024,i:36 */ FR2(+0.7883464276266063), FR2(+0.6152315905806268),
/*N:1024,i:37 */ FR2(+0.8986744656939538), FR2(+0.4386162385385277),
/*N:1024,i:37 */ FR2(+0.9743393827855759), FR2(+0.2250839113597928),
/*N:1024,i:37 */ FR2(+0.7768884656732324), FR2(+0.6296382389149270),
/*N:1024,i:38 */ FR2(+0.8932243011955153), FR2(+0.4496113296546065),
/*N:1024,i:38 */ FR2(+0.9729399522055602), FR2(+0.2310581082806711),
/*N:1024,i:38 */ FR2(+0.7651672656224590), FR2(+0.6438315428897914),
/*N:1024,i:39 */ FR2(+0.8876396204028539), FR2(+0.4605387109582400),
/*N:1024,i:39 */ FR2(+0.9715038909862518), FR2(+0.2370236059943672),
/*N:1024,i:39 */ FR2(+0.7531867990436125), FR2(+0.6578066932970786),
/*N:1024,i:40 */ FR2(+0.8819212643483551), FR2(+0.4713967368259976),
/*N:1024,i:40 */ FR2(+0.9700312531945440), FR2(+0.2429801799032639),
/*N:1024,i:40 */ FR2(+0.7409511253549591), FR2(+0.6715589548470183),
/*N:1024,i:41 */ FR2(+0.8760700941954066), FR2(+0.4821837720791227),
/*N:1024,i:41 */ FR2(+0.9685220942744174), FR2(+0.2489276057457202),
/*N:1024,i:41 */ FR2(+0.7284643904482252), FR2(+0.6850836677727004),
/*N:1024,i:42 */ FR2(+0.8700869911087115), FR2(+0.4928981922297840),
/*N:1024,i:42 */ FR2(+0.9669764710448521), FR2(+0.2548656596045146),
/*N:1024,i:42 */ FR2(+0.7157308252838186), FR2(+0.6983762494089729),
/*N:1024,i:43 */ FR2(+0.8639728561215868), FR2(+0.5035383837257176),
/*N:1024,i:43 */ FR2(+0.9653944416976894), FR2(+0.2607941179152755),
/*N:1024,i:43 */ FR2(+0.7027547444572253), FR2(+0.7114321957452164),
/*N:1024,i:44 */ FR2(+0.8577286100002721), FR2(+0.5141027441932217),
/*N:1024,i:44 */ FR2(+0.9637760657954398), FR2(+0.2667127574748984),
/*N:1024,i:44 */ FR2(+0.6895405447370669), FR2(+0.7242470829514669),
/*N:1024,i:45 */ FR2(+0.8513551931052652), FR2(+0.5245896826784690),
/*N:1024,i:45 */ FR2(+0.9621214042690416), FR2(+0.2726213554499490),
/*N:1024,i:45 */ FR2(+0.6760927035753160), FR2(+0.7368165688773698),
/*N:1024,i:46 */ FR2(+0.8448535652497071), FR2(+0.5349976198870972),
/*N:1024,i:46 */ FR2(+0.9604305194155658), FR2(+0.2785196893850531),
/*N:1024,i:46 */ FR2(+0.6624157775901718), FR2(+0.7491363945234593),
/*N:1024,i:47 */ FR2(+0.8382247055548381), FR2(+0.5453249884220465),
/*N:1024,i:47 */ FR2(+0.9587034748958716), FR2(+0.2844075372112719),
/*N:1024,i:47 */ FR2(+0.6485144010221126), FR2(+0.7612023854842618),
/*N:1024,i:48 */ FR2(+0.8314696123025452), FR2(+0.5555702330196022),
/*N:1024,i:48 */ FR2(+0.9569403357322088), FR2(+0.2902846772544623),
/*N:1024,i:48 */ FR2(+0.6343932841636455), FR2(+0.7730104533627370),
/*N:1024,i:49 */ FR2(+0.8245893027850253), FR2(+0.5657318107836131),
/*N:1024,i:49 */ FR2(+0.9551411683057708), FR2(+0.2961508882436238),
/*N:1024,i:49 */ FR2(+0.6200572117632892), FR2(+0.7845565971555752),
/*N:1024,i:50 */ FR2(+0.8175848131515837), FR2(+0.5758081914178453),
/*N:1024,i:50 */ FR2(+0.9533060403541939), FR2(+0.3020059493192281),
/*N:1024,i:50 */ FR2(+0.6055110414043256), FR2(+0.7958369046088835),
/*N:1024,i:51 */ FR2(+0.8104571982525948), FR2(+0.5857978574564389),
/*N:1024,i:51 */ FR2(+0.9514350209690083), FR2(+0.3078496400415349),
/*N:1024,i:51 */ FR2(+0.5907597018588743), FR2(+0.8068475535437992),
/*N:1024,i:52 */ FR2(+0.8032075314806449), FR2(+0.5956993044924334),
/*N:1024,i:52 */ FR2(+0.9495281805930367), FR2(+0.3136817403988915),
/*N:1024,i:52 */ FR2(+0.5758081914178453), FR2(+0.8175848131515837),
/*N:1024,i:53 */ FR2(+0.7958369046088836), FR2(+0.6055110414043256),
/*N:1024,i:53 */ FR2(+0.9475855910177411), FR2(+0.3195020308160157),
/*N:1024,i:53 */ FR2(+0.5606615761973360), FR2(+0.8280450452577558),
/*N:1024,i:54 */ FR2(+0.7883464276266063), FR2(+0.6152315905806268),
/*N:1024,i:54 */ FR2(+0.9456073253805213), FR2(+0.3253102921622629),
/*N:1024,i:54 */ FR2(+0.5453249884220465), FR2(+0.8382247055548380),
/*N:1024,i:55 */ FR2(+0.7807372285720945), FR2(+0.6248594881423863),
/*N:1024,i:55 */ FR2(+0.9435934581619604), FR2(+0.3311063057598764),
/*N:1024,i:55 */ FR2(+0.5298036246862948), FR2(+0.8481203448032971),
/*N:1024,i:56 */ FR2(+0.7730104533627370), FR2(+0.6343932841636455),
/*N:1024,i:56 */ FR2(+0.9415440651830208), FR2(+0.3368898533922201),
/*N:1024,i:56 */ FR2(+0.5141027441932217), FR2(+0.8577286100002721),
/*N:1024,i:57 */ FR2(+0.7651672656224590), FR2(+0.6438315428897914),
/*N:1024,i:57 */ FR2(+0.9394592236021899), FR2(+0.3426607173119944),
/*N:1024,i:57 */ FR2(+0.4982276669727819), FR2(+0.8670462455156927),
/*N:1024,i:58 */ FR2(+0.7572088465064846), FR2(+0.6531728429537768),
/*N:1024,i:58 */ FR2(+0.9373390119125750), FR2(+0.3484186802494346),
/*N:1024,i:58 */ FR2(+0.4821837720791228), FR2(+0.8760700941954066),
/*N:1024,i:59 */ FR2(+0.7491363945234594), FR2(+0.6624157775901718),
/*N:1024,i:59 */ FR2(+0.9351835099389476), FR2(+0.3541635254204903),
/*N:1024,i:59 */ FR2(+0.4659764957679661), FR2(+0.8847970984309378),
/*N:1024,i:60 */ FR2(+0.7409511253549591), FR2(+0.6715589548470183),
/*N:1024,i:60 */ FR2(+0.9329927988347390), FR2(+0.3598950365349881),
/*N:1024,i:60 */ FR2(+0.4496113296546066), FR2(+0.8932243011955153),
/*N:1024,i:61 */ FR2(+0.7326542716724128), FR2(+0.6806009977954530),
/*N:1024,i:61 */ FR2(+0.9307669610789837), FR2(+0.3656129978047739),
/*N:1024,i:61 */ FR2(+0.4330938188531520), FR2(+0.9013488470460220),
/*N:1024,i:62 */ FR2(+0.7242470829514670), FR2(+0.6895405447370668),
/*N:1024,i:62 */ FR2(+0.9285060804732156), FR2(+0.3713171939518375),
/*N:1024,i:62 */ FR2(+0.4164295600976373), FR2(+0.9091679830905223),
/*N:1024,i:63 */ FR2(+0.7157308252838186), FR2(+0.6983762494089729),
/*N:1024,i:63 */ FR2(+0.9262102421383114), FR2(+0.3770074102164183),
/*N:1024,i:63 */ FR2(+0.3996241998456468), FR2(+0.9166790599210427),
/*N:1024,i:64 */ FR2(+0.7071067811865476), FR2(+0.7071067811865475),
/*N:1024,i:64 */ FR2(+0.9238795325112867), FR2(+0.3826834323650898),
/*N:1024,i:64 */ FR2(+0.3826834323650898), FR2(+0.9238795325112867),
/*N:1024,i:65 */ FR2(+0.6983762494089729), FR2(+0.7157308252838186),
/*N:1024,i:65 */ FR2(+0.9215140393420420), FR2(+0.3883450466988263),
/*N:1024,i:65 */ FR2(+0.3656129978047740), FR2(+0.9307669610789837),
/*N:1024,i:66 */ FR2(+0.6895405447370669), FR2(+0.7242470829514669),
/*N:1024,i:66 */ FR2(+0.9191138516900578), FR2(+0.3939920400610481),
/*N:1024,i:66 */ FR2(+0.3484186802494345), FR2(+0.9373390119125750),
/*N:1024,i:67 */ FR2(+0.6806009977954531), FR2(+0.7326542716724128),
/*N:1024,i:67 */ FR2(+0.9166790599210427), FR2(+0.3996241998456468),
/*N:1024,i:67 */ FR2(+0.3311063057598764), FR2(+0.9435934581619604),
/*N:1024,i:68 */ FR2(+0.6715589548470183), FR2(+0.7409511253549591),
/*N:1024,i:68 */ FR2(+0.9142097557035307), FR2(+0.4052413140049899),
/*N:1024,i:68 */ FR2(+0.3136817403988916), FR2(+0.9495281805930367),
/*N:1024,i:69 */ FR2(+0.6624157775901718), FR2(+0.7491363945234593),
/*N:1024,i:69 */ FR2(+0.9117060320054299), FR2(+0.4108431710579039),
/*N:1024,i:69 */ FR2(+0.2961508882436240), FR2(+0.9551411683057707),
/*N:1024,i:70 */ FR2(+0.6531728429537768), FR2(+0.7572088465064845),
/*N:1024,i:70 */ FR2(+0.9091679830905224), FR2(+0.4164295600976372),
/*N:1024,i:70 */ FR2(+0.2785196893850531), FR2(+0.9604305194155658),
/*N:1024,i:71 */ FR2(+0.6438315428897915), FR2(+0.7651672656224590),
/*N:1024,i:71 */ FR2(+0.9065957045149153), FR2(+0.4220002707997997),
/*N:1024,i:71 */ FR2(+0.2607941179152756), FR2(+0.9653944416976894),
/*N:1024,i:72 */ FR2(+0.6343932841636455), FR2(+0.7730104533627370),
/*N:1024,i:72 */ FR2(+0.9039892931234433), FR2(+0.4275550934302821),
/*N:1024,i:72 */ FR2(+0.2429801799032640), FR2(+0.9700312531945440),
/*N:1024,i:73 */ FR2(+0.6248594881423865), FR2(+0.7807372285720944),
/*N:1024,i:73 */ FR2(+0.9013488470460220), FR2(+0.4330938188531520),
/*N:1024,i:73 */ FR2(+0.2250839113597928), FR2(+0.9743393827855759),
/*N:1024,i:74 */ FR2(+0.6152315905806268), FR2(+0.7883464276266062),
/*N:1024,i:74 */ FR2(+0.8986744656939538), FR2(+0.4386162385385277),
/*N:1024,i:74 */ FR2(+0.2071113761922186), FR2(+0.9783173707196277),
/*N:1024,i:75 */ FR2(+0.6055110414043256), FR2(+0.7958369046088835),
/*N:1024,i:75 */ FR2(+0.8959662497561852), FR2(+0.4441221445704292),
/*N:1024,i:75 */ FR2(+0.1890686641498063), FR2(+0.9819638691095552),
/*N:1024,i:76 */ FR2(+0.5956993044924335), FR2(+0.8032075314806448),
/*N:1024,i:76 */ FR2(+0.8932243011955153), FR2(+0.4496113296546065),
/*N:1024,i:76 */ FR2(+0.1709618887603014), FR2(+0.9852776423889412),
/*N:1024,i:77 */ FR2(+0.5857978574564389), FR2(+0.8104571982525948),
/*N:1024,i:77 */ FR2(+0.8904487232447579), FR2(+0.4550835871263438),
/*N:1024,i:77 */ FR2(+0.1527971852584434), FR2(+0.9882575677307495),
/*N:1024,i:78 */ FR2(+0.5758081914178453), FR2(+0.8175848131515837),
/*N:1024,i:78 */ FR2(+0.8876396204028539), FR2(+0.4605387109582400),
/*N:1024,i:78 */ FR2(+0.1345807085071262), FR2(+0.9909026354277800),
/*N:1024,i:79 */ FR2(+0.5657318107836132), FR2(+0.8245893027850253),
/*N:1024,i:79 */ FR2(+0.8847970984309378), FR2(+0.4659764957679662),
/*N:1024,i:79 */ FR2(+0.1163186309119049), FR2(+0.9932119492347945),
/*N:1024,i:80 */ FR2(+0.5555702330196023), FR2(+0.8314696123025452),
/*N:1024,i:80 */ FR2(+0.8819212643483551), FR2(+0.4713967368259976),
/*N:1024,i:80 */ FR2(+0.0980171403295608), FR2(+0.9951847266721968),
/*N:1024,i:81 */ FR2(+0.5453249884220465), FR2(+0.8382247055548380),
/*N:1024,i:81 */ FR2(+0.8790122264286335), FR2(+0.4767992300633221),
/*N:1024,i:81 */ FR2(+0.0796824379714301), FR2(+0.9968202992911657),
/*N:1024,i:82 */ FR2(+0.5349976198870973), FR2(+0.8448535652497070),
/*N:1024,i:82 */ FR2(+0.8760700941954066), FR2(+0.4821837720791227),
/*N:1024,i:82 */ FR2(+0.0613207363022086), FR2(+0.9981181129001492),
/*N:1024,i:83 */ FR2(+0.5245896826784688), FR2(+0.8513551931052652),
/*N:1024,i:83 */ FR2(+0.8730949784182901), FR2(+0.4875501601484360),
/*N:1024,i:83 */ FR2(+0.0429382569349410), FR2(+0.9990777277526454),
/*N:1024,i:84 */ FR2(+0.5141027441932217), FR2(+0.8577286100002721),
/*N:1024,i:84 */ FR2(+0.8700869911087115), FR2(+0.4928981922297840),
/*N:1024,i:84 */ FR2(+0.0245412285229123), FR2(+0.9996988186962043),
/*N:1024,i:85 */ FR2(+0.5035383837257176), FR2(+0.8639728561215867),
/*N:1024,i:85 */ FR2(+0.8670462455156927), FR2(+0.4982276669727819),
/*N:1024,i:85 */ FR2(+0.0061358846491545), FR2(+0.9999811752826011),
/*N:1024,i:86 */ FR2(+0.4928981922297841), FR2(+0.8700869911087114),
/*N:1024,i:86 */ FR2(+0.8639728561215868), FR2(+0.5035383837257176),
/*N:1024,i:86 */ FR2(-0.0122715382857198), FR2(+0.9999247018391445),
/*N:1024,i:87 */ FR2(+0.4821837720791228), FR2(+0.8760700941954066),
/*N:1024,i:87 */ FR2(+0.8608669386377673), FR2(+0.5088301425431070),
/*N:1024,i:87 */ FR2(-0.0306748031766365), FR2(+0.9995294175010931),
/*N:1024,i:88 */ FR2(+0.4713967368259978), FR2(+0.8819212643483549),
/*N:1024,i:88 */ FR2(+0.8577286100002721), FR2(+0.5141027441932217),
/*N:1024,i:88 */ FR2(-0.0490676743274180), FR2(+0.9987954562051724),
/*N:1024,i:89 */ FR2(+0.4605387109582400), FR2(+0.8876396204028539),
/*N:1024,i:89 */ FR2(+0.8545579883654005), FR2(+0.5193559901655896),
/*N:1024,i:89 */ FR2(-0.0674439195636640), FR2(+0.9977230666441916),
/*N:1024,i:90 */ FR2(+0.4496113296546066), FR2(+0.8932243011955153),
/*N:1024,i:90 */ FR2(+0.8513551931052652), FR2(+0.5245896826784690),
/*N:1024,i:90 */ FR2(-0.0857973123444398), FR2(+0.9963126121827780),
/*N:1024,i:91 */ FR2(+0.4386162385385277), FR2(+0.8986744656939538),
/*N:1024,i:91 */ FR2(+0.8481203448032972), FR2(+0.5298036246862946),
/*N:1024,i:91 */ FR2(-0.1041216338720546), FR2(+0.9945645707342554),
/*N:1024,i:92 */ FR2(+0.4275550934302822), FR2(+0.9039892931234433),
/*N:1024,i:92 */ FR2(+0.8448535652497071), FR2(+0.5349976198870972),
/*N:1024,i:92 */ FR2(-0.1224106751992162), FR2(+0.9924795345987100),
/*N:1024,i:93 */ FR2(+0.4164295600976373), FR2(+0.9091679830905223),
/*N:1024,i:93 */ FR2(+0.8415549774368984), FR2(+0.5401714727298929),
/*N:1024,i:93 */ FR2(-0.1406582393328491), FR2(+0.9900582102622971),
/*N:1024,i:94 */ FR2(+0.4052413140049899), FR2(+0.9142097557035307),
/*N:1024,i:94 */ FR2(+0.8382247055548381), FR2(+0.5453249884220465),
/*N:1024,i:94 */ FR2(-0.1588581433338613), FR2(+0.9873014181578584),
/*N:1024,i:95 */ FR2(+0.3939920400610481), FR2(+0.9191138516900578),
/*N:1024,i:95 */ FR2(+0.8348628749863800), FR2(+0.5504579729366048),
/*N:1024,i:95 */ FR2(-0.1770042204121488), FR2(+0.9842100923869290),
/*N:1024,i:96 */ FR2(+0.3826834323650898), FR2(+0.9238795325112867),
/*N:1024,i:96 */ FR2(+0.8314696123025452), FR2(+0.5555702330196022),
/*N:1024,i:96 */ FR2(-0.1950903220161282), FR2(+0.9807852804032304),
/*N:1024,i:97 */ FR2(+0.3713171939518376), FR2(+0.9285060804732155),
/*N:1024,i:97 */ FR2(+0.8280450452577558), FR2(+0.5606615761973360),
/*N:1024,i:97 */ FR2(-0.2131103199160913), FR2(+0.9770281426577544),
/*N:1024,i:98 */ FR2(+0.3598950365349883), FR2(+0.9329927988347389),
/*N:1024,i:98 */ FR2(+0.8245893027850253), FR2(+0.5657318107836131),
/*N:1024,i:98 */ FR2(-0.2310581082806711), FR2(+0.9729399522055602),
/*N:1024,i:99 */ FR2(+0.3484186802494345), FR2(+0.9373390119125750),
/*N:1024,i:99 */ FR2(+0.8211025149911047), FR2(+0.5707807458869673),
/*N:1024,i:99 */ FR2(-0.2489276057457201), FR2(+0.9685220942744174),
/*N:1024,i:100 */ FR2(+0.3368898533922201), FR2(+0.9415440651830208),
/*N:1024,i:100 */ FR2(+0.8175848131515837), FR2(+0.5758081914178453),
/*N:1024,i:100 */ FR2(-0.2667127574748983), FR2(+0.9637760657954398),
/*N:1024,i:101 */ FR2(+0.3253102921622630), FR2(+0.9456073253805213),
/*N:1024,i:101 */ FR2(+0.8140363297059484), FR2(+0.5808139580957645),
/*N:1024,i:101 */ FR2(-0.2844075372112717), FR2(+0.9587034748958716),
/*N:1024,i:102 */ FR2(+0.3136817403988916), FR2(+0.9495281805930367),
/*N:1024,i:102 */ FR2(+0.8104571982525948), FR2(+0.5857978574564389),
/*N:1024,i:102 */ FR2(-0.3020059493192281), FR2(+0.9533060403541939),
/*N:1024,i:103 */ FR2(+0.3020059493192282), FR2(+0.9533060403541938),
/*N:1024,i:103 */ FR2(+0.8068475535437993), FR2(+0.5907597018588742),
/*N:1024,i:103 */ FR2(-0.3195020308160156), FR2(+0.9475855910177412),
/*N:1024,i:104 */ FR2(+0.2902846772544623), FR2(+0.9569403357322089),
/*N:1024,i:104 */ FR2(+0.8032075314806449), FR2(+0.5956993044924334),
/*N:1024,i:104 */ FR2(-0.3368898533922199), FR2(+0.9415440651830208),
/*N:1024,i:105 */ FR2(+0.2785196893850531), FR2(+0.9604305194155658),
/*N:1024,i:105 */ FR2(+0.7995372691079050), FR2(+0.6006164793838690),
/*N:1024,i:105 */ FR2(-0.3541635254204904), FR2(+0.9351835099389476),
/*N:1024,i:106 */ FR2(+0.2667127574748984), FR2(+0.9637760657954398),
/*N:1024,i:106 */ FR2(+0.7958369046088836), FR2(+0.6055110414043256),
/*N:1024,i:106 */ FR2(-0.3713171939518375), FR2(+0.9285060804732156),
/*N:1024,i:107 */ FR2(+0.2548656596045146), FR2(+0.9669764710448521),
/*N:1024,i:107 */ FR2(+0.7921065773002124), FR2(+0.6103828062763095),
/*N:1024,i:107 */ FR2(-0.3883450466988262), FR2(+0.9215140393420420),
/*N:1024,i:108 */ FR2(+0.2429801799032640), FR2(+0.9700312531945440),
/*N:1024,i:108 */ FR2(+0.7883464276266063), FR2(+0.6152315905806268),
/*N:1024,i:108 */ FR2(-0.4052413140049898), FR2(+0.9142097557035307),
/*N:1024,i:109 */ FR2(+0.2310581082806713), FR2(+0.9729399522055601),
/*N:1024,i:109 */ FR2(+0.7845565971555752), FR2(+0.6200572117632891),
/*N:1024,i:109 */ FR2(-0.4220002707997997), FR2(+0.9065957045149153),
/*N:1024,i:110 */ FR2(+0.2191012401568698), FR2(+0.9757021300385286),
/*N:1024,i:110 */ FR2(+0.7807372285720945), FR2(+0.6248594881423863),
/*N:1024,i:110 */ FR2(-0.4386162385385274), FR2(+0.8986744656939539),
/*N:1024,i:111 */ FR2(+0.2071113761922186), FR2(+0.9783173707196277),
/*N:1024,i:111 */ FR2(+0.7768884656732324), FR2(+0.6296382389149270),
/*N:1024,i:111 */ FR2(-0.4550835871263437), FR2(+0.8904487232447580),
/*N:1024,i:112 */ FR2(+0.1950903220161283), FR2(+0.9807852804032304),
/*N:1024,i:112 */ FR2(+0.7730104533627370), FR2(+0.6343932841636455),
/*N:1024,i:112 */ FR2(-0.4713967368259977), FR2(+0.8819212643483551),
/*N:1024,i:113 */ FR2(+0.1830398879551411), FR2(+0.9831054874312163),
/*N:1024,i:113 */ FR2(+0.7691033376455797), FR2(+0.6391244448637757),
/*N:1024,i:113 */ FR2(-0.4875501601484357), FR2(+0.8730949784182902),
/*N:1024,i:114 */ FR2(+0.1709618887603014), FR2(+0.9852776423889412),
/*N:1024,i:114 */ FR2(+0.7651672656224590), FR2(+0.6438315428897914),
/*N:1024,i:114 */ FR2(-0.5035383837257175), FR2(+0.8639728561215868),
/*N:1024,i:115 */ FR2(+0.1588581433338614), FR2(+0.9873014181578584),
/*N:1024,i:115 */ FR2(+0.7612023854842618), FR2(+0.6485144010221124),
/*N:1024,i:115 */ FR2(-0.5193559901655896), FR2(+0.8545579883654005),
/*N:1024,i:116 */ FR2(+0.1467304744553618), FR2(+0.9891765099647810),
/*N:1024,i:116 */ FR2(+0.7572088465064846), FR2(+0.6531728429537768),
/*N:1024,i:116 */ FR2(-0.5349976198870970), FR2(+0.8448535652497072),
/*N:1024,i:117 */ FR2(+0.1345807085071262), FR2(+0.9909026354277800),
/*N:1024,i:117 */ FR2(+0.7531867990436125), FR2(+0.6578066932970786),
/*N:1024,i:117 */ FR2(-0.5504579729366047), FR2(+0.8348628749863801),
/*N:1024,i:118 */ FR2(+0.1224106751992163), FR2(+0.9924795345987100),
/*N:1024,i:118 */ FR2(+0.7491363945234594), FR2(+0.6624157775901718),
/*N:1024,i:118 */ FR2(-0.5657318107836132), FR2(+0.8245893027850252),
/*N:1024,i:119 */ FR2(+0.1102222072938832), FR2(+0.9939069700023561),
/*N:1024,i:119 */ FR2(+0.7450577854414661), FR2(+0.6669999223036375),
/*N:1024,i:119 */ FR2(-0.5808139580957644), FR2(+0.8140363297059485),
/*N:1024,i:120 */ FR2(+0.0980171403295608), FR2(+0.9951847266721968),
/*N:1024,i:120 */ FR2(+0.7409511253549591), FR2(+0.6715589548470183),
/*N:1024,i:120 */ FR2(-0.5956993044924334), FR2(+0.8032075314806449),
/*N:1024,i:121 */ FR2(+0.0857973123444399), FR2(+0.9963126121827780),
/*N:1024,i:121 */ FR2(+0.7368165688773699), FR2(+0.6760927035753159),
/*N:1024,i:121 */ FR2(-0.6103828062763096), FR2(+0.7921065773002123),
/*N:1024,i:122 */ FR2(+0.0735645635996675), FR2(+0.9972904566786902),
/*N:1024,i:122 */ FR2(+0.7326542716724128), FR2(+0.6806009977954530),
/*N:1024,i:122 */ FR2(-0.6248594881423862), FR2(+0.7807372285720946),
/*N:1024,i:123 */ FR2(+0.0613207363022086), FR2(+0.9981181129001492),
/*N:1024,i:123 */ FR2(+0.7284643904482252), FR2(+0.6850836677727004),
/*N:1024,i:123 */ FR2(-0.6391244448637757), FR2(+0.7691033376455796),
/*N:1024,i:124 */ FR2(+0.0490676743274181), FR2(+0.9987954562051724),
/*N:1024,i:124 */ FR2(+0.7242470829514670), FR2(+0.6895405447370668),
/*N:1024,i:124 */ FR2(-0.6531728429537765), FR2(+0.7572088465064847),
/*N:1024,i:125 */ FR2(+0.0368072229413590), FR2(+0.9993223845883495),
/*N:1024,i:125 */ FR2(+0.7200025079613817), FR2(+0.6939714608896540),
/*N:1024,i:125 */ FR2(-0.6669999223036374), FR2(+0.7450577854414661),
/*N:1024,i:126 */ FR2(+0.0245412285229123), FR2(+0.9996988186962043),
/*N:1024,i:126 */ FR2(+0.7157308252838186), FR2(+0.6983762494089729),
/*N:1024,i:126 */ FR2(-0.6806009977954530), FR2(+0.7326542716724128),
/*N:1024,i:127 */ FR2(+0.0122715382857199), FR2(+0.9999247018391445),
/*N:1024,i:127 */ FR2(+0.7114321957452164), FR2(+0.7027547444572253),
/*N:1024,i:127 */ FR2(-0.6939714608896538), FR2(+0.7200025079613818),
/*N:1024,i:128 */ FR2(+0.0000000000000001), FR2(+1.0000000000000000),
/*N:1024,i:128 */ FR2(+0.7071067811865476), FR2(+0.7071067811865475),
/*N:1024,i:128 */ FR2(-0.7071067811865475), FR2(+0.7071067811865476),
/*N:1024,i:129 */ FR2(-0.0122715382857198), FR2(+0.9999247018391445),
/*N:1024,i:129 */ FR2(+0.7027547444572253), FR2(+0.7114321957452164),
/*N:1024,i:129 */ FR2(-0.7200025079613817), FR2(+0.6939714608896540),
/*N:1024,i:130 */ FR2(-0.0245412285229121), FR2(+0.9996988186962043),
/*N:1024,i:130 */ FR2(+0.6983762494089729), FR2(+0.7157308252838186),
/*N:1024,i:130 */ FR2(-0.7326542716724127), FR2(+0.6806009977954532),
/*N:1024,i:131 */ FR2(-0.0368072229413589), FR2(+0.9993223845883495),
/*N:1024,i:131 */ FR2(+0.6939714608896540), FR2(+0.7200025079613817),
/*N:1024,i:131 */ FR2(-0.7450577854414660), FR2(+0.6669999223036376),
/*N:1024,i:132 */ FR2(-0.0490676743274180), FR2(+0.9987954562051724),
/*N:1024,i:132 */ FR2(+0.6895405447370669), FR2(+0.7242470829514669),
/*N:1024,i:132 */ FR2(-0.7572088465064846), FR2(+0.6531728429537766),
/*N:1024,i:133 */ FR2(-0.0613207363022085), FR2(+0.9981181129001492),
/*N:1024,i:133 */ FR2(+0.6850836677727004), FR2(+0.7284643904482252),
/*N:1024,i:133 */ FR2(-0.7691033376455795), FR2(+0.6391244448637758),
/*N:1024,i:134 */ FR2(-0.0735645635996673), FR2(+0.9972904566786902),
/*N:1024,i:134 */ FR2(+0.6806009977954531), FR2(+0.7326542716724128),
/*N:1024,i:134 */ FR2(-0.7807372285720945), FR2(+0.6248594881423863),
/*N:1024,i:135 */ FR2(-0.0857973123444398), FR2(+0.9963126121827780),
/*N:1024,i:135 */ FR2(+0.6760927035753160), FR2(+0.7368165688773698),
/*N:1024,i:135 */ FR2(-0.7921065773002122), FR2(+0.6103828062763097),
/*N:1024,i:136 */ FR2(-0.0980171403295606), FR2(+0.9951847266721969),
/*N:1024,i:136 */ FR2(+0.6715589548470183), FR2(+0.7409511253549591),
/*N:1024,i:136 */ FR2(-0.8032075314806448), FR2(+0.5956993044924335),
/*N:1024,i:137 */ FR2(-0.1102222072938831), FR2(+0.9939069700023561),
/*N:1024,i:137 */ FR2(+0.6669999223036375), FR2(+0.7450577854414660),
/*N:1024,i:137 */ FR2(-0.8140363297059484), FR2(+0.5808139580957645),
/*N:1024,i:138 */ FR2(-0.1224106751992162), FR2(+0.9924795345987100),
/*N:1024,i:138 */ FR2(+0.6624157775901718), FR2(+0.7491363945234593),
/*N:1024,i:138 */ FR2(-0.8245893027850251), FR2(+0.5657318107836135),
/*N:1024,i:139 */ FR2(-0.1345807085071261), FR2(+0.9909026354277800),
/*N:1024,i:139 */ FR2(+0.6578066932970786), FR2(+0.7531867990436124),
/*N:1024,i:139 */ FR2(-0.8348628749863800), FR2(+0.5504579729366049),
/*N:1024,i:140 */ FR2(-0.1467304744553616), FR2(+0.9891765099647810),
/*N:1024,i:140 */ FR2(+0.6531728429537768), FR2(+0.7572088465064845),
/*N:1024,i:140 */ FR2(-0.8448535652497071), FR2(+0.5349976198870972),
/*N:1024,i:141 */ FR2(-0.1588581433338613), FR2(+0.9873014181578584),
/*N:1024,i:141 */ FR2(+0.6485144010221126), FR2(+0.7612023854842618),
/*N:1024,i:141 */ FR2(-0.8545579883654004), FR2(+0.5193559901655898),
/*N:1024,i:142 */ FR2(-0.1709618887603012), FR2(+0.9852776423889412),
/*N:1024,i:142 */ FR2(+0.6438315428897915), FR2(+0.7651672656224590),
/*N:1024,i:142 */ FR2(-0.8639728561215867), FR2(+0.5035383837257177),
/*N:1024,i:143 */ FR2(-0.1830398879551409), FR2(+0.9831054874312163),
/*N:1024,i:143 */ FR2(+0.6391244448637757), FR2(+0.7691033376455796),
/*N:1024,i:143 */ FR2(-0.8730949784182901), FR2(+0.4875501601484359),
/*N:1024,i:144 */ FR2(-0.1950903220161282), FR2(+0.9807852804032304),
/*N:1024,i:144 */ FR2(+0.6343932841636455), FR2(+0.7730104533627370),
/*N:1024,i:144 */ FR2(-0.8819212643483549), FR2(+0.4713967368259979),
/*N:1024,i:145 */ FR2(-0.2071113761922185), FR2(+0.9783173707196277),
/*N:1024,i:145 */ FR2(+0.6296382389149271), FR2(+0.7768884656732324),
/*N:1024,i:145 */ FR2(-0.8904487232447579), FR2(+0.4550835871263439),
/*N:1024,i:146 */ FR2(-0.2191012401568697), FR2(+0.9757021300385286),
/*N:1024,i:146 */ FR2(+0.6248594881423865), FR2(+0.7807372285720944),
/*N:1024,i:146 */ FR2(-0.8986744656939539), FR2(+0.4386162385385276),
/*N:1024,i:147 */ FR2(-0.2310581082806711), FR2(+0.9729399522055602),
/*N:1024,i:147 */ FR2(+0.6200572117632892), FR2(+0.7845565971555752),
/*N:1024,i:147 */ FR2(-0.9065957045149153), FR2(+0.4220002707997999),
/*N:1024,i:148 */ FR2(-0.2429801799032639), FR2(+0.9700312531945440),
/*N:1024,i:148 */ FR2(+0.6152315905806268), FR2(+0.7883464276266062),
/*N:1024,i:148 */ FR2(-0.9142097557035307), FR2(+0.4052413140049899),
/*N:1024,i:149 */ FR2(-0.2548656596045145), FR2(+0.9669764710448521),
/*N:1024,i:149 */ FR2(+0.6103828062763095), FR2(+0.7921065773002124),
/*N:1024,i:149 */ FR2(-0.9215140393420418), FR2(+0.3883450466988266),
/*N:1024,i:150 */ FR2(-0.2667127574748983), FR2(+0.9637760657954398),
/*N:1024,i:150 */ FR2(+0.6055110414043256), FR2(+0.7958369046088835),
/*N:1024,i:150 */ FR2(-0.9285060804732155), FR2(+0.3713171939518377),
/*N:1024,i:151 */ FR2(-0.2785196893850530), FR2(+0.9604305194155659),
/*N:1024,i:151 */ FR2(+0.6006164793838690), FR2(+0.7995372691079050),
/*N:1024,i:151 */ FR2(-0.9351835099389476), FR2(+0.3541635254204904),
/*N:1024,i:152 */ FR2(-0.2902846772544622), FR2(+0.9569403357322089),
/*N:1024,i:152 */ FR2(+0.5956993044924335), FR2(+0.8032075314806448),
/*N:1024,i:152 */ FR2(-0.9415440651830207), FR2(+0.3368898533922203),
/*N:1024,i:153 */ FR2(-0.3020059493192281), FR2(+0.9533060403541939),
/*N:1024,i:153 */ FR2(+0.5907597018588743), FR2(+0.8068475535437992),
/*N:1024,i:153 */ FR2(-0.9475855910177411), FR2(+0.3195020308160158),
/*N:1024,i:154 */ FR2(-0.3136817403988914), FR2(+0.9495281805930367),
/*N:1024,i:154 */ FR2(+0.5857978574564389), FR2(+0.8104571982525948),
/*N:1024,i:154 */ FR2(-0.9533060403541939), FR2(+0.3020059493192280),
/*N:1024,i:155 */ FR2(-0.3253102921622629), FR2(+0.9456073253805214),
/*N:1024,i:155 */ FR2(+0.5808139580957645), FR2(+0.8140363297059483),
/*N:1024,i:155 */ FR2(-0.9587034748958715), FR2(+0.2844075372112721),
/*N:1024,i:156 */ FR2(-0.3368898533922199), FR2(+0.9415440651830208),
/*N:1024,i:156 */ FR2(+0.5758081914178453), FR2(+0.8175848131515837),
/*N:1024,i:156 */ FR2(-0.9637760657954398), FR2(+0.2667127574748985),
/*N:1024,i:157 */ FR2(-0.3484186802494344), FR2(+0.9373390119125750),
/*N:1024,i:157 */ FR2(+0.5707807458869674), FR2(+0.8211025149911047),
/*N:1024,i:157 */ FR2(-0.9685220942744174), FR2(+0.2489276057457201),
/*N:1024,i:158 */ FR2(-0.3598950365349882), FR2(+0.9329927988347389),
/*N:1024,i:158 */ FR2(+0.5657318107836132), FR2(+0.8245893027850253),
/*N:1024,i:158 */ FR2(-0.9729399522055601), FR2(+0.2310581082806713),
/*N:1024,i:159 */ FR2(-0.3713171939518375), FR2(+0.9285060804732156),
/*N:1024,i:159 */ FR2(+0.5606615761973360), FR2(+0.8280450452577558),
/*N:1024,i:159 */ FR2(-0.9770281426577544), FR2(+0.2131103199160914),
/*N:1024,i:160 */ FR2(-0.3826834323650897), FR2(+0.9238795325112867),
/*N:1024,i:160 */ FR2(+0.5555702330196023), FR2(+0.8314696123025452),
/*N:1024,i:160 */ FR2(-0.9807852804032304), FR2(+0.1950903220161286),
/*N:1024,i:161 */ FR2(-0.3939920400610480), FR2(+0.9191138516900578),
/*N:1024,i:161 */ FR2(+0.5504579729366048), FR2(+0.8348628749863800),
/*N:1024,i:161 */ FR2(-0.9842100923869290), FR2(+0.1770042204121489),
/*N:1024,i:162 */ FR2(-0.4052413140049898), FR2(+0.9142097557035307),
/*N:1024,i:162 */ FR2(+0.5453249884220465), FR2(+0.8382247055548380),
/*N:1024,i:162 */ FR2(-0.9873014181578584), FR2(+0.1588581433338615),
/*N:1024,i:163 */ FR2(-0.4164295600976370), FR2(+0.9091679830905225),
/*N:1024,i:163 */ FR2(+0.5401714727298930), FR2(+0.8415549774368983),
/*N:1024,i:163 */ FR2(-0.9900582102622970), FR2(+0.1406582393328495),
/*N:1024,i:164 */ FR2(-0.4275550934302819), FR2(+0.9039892931234435),
/*N:1024,i:164 */ FR2(+0.5349976198870973), FR2(+0.8448535652497070),
/*N:1024,i:164 */ FR2(-0.9924795345987100), FR2(+0.1224106751992164),
/*N:1024,i:165 */ FR2(-0.4386162385385274), FR2(+0.8986744656939539),
/*N:1024,i:165 */ FR2(+0.5298036246862948), FR2(+0.8481203448032971),
/*N:1024,i:165 */ FR2(-0.9945645707342554), FR2(+0.1041216338720546),
/*N:1024,i:166 */ FR2(-0.4496113296546067), FR2(+0.8932243011955152),
/*N:1024,i:166 */ FR2(+0.5245896826784688), FR2(+0.8513551931052652),
/*N:1024,i:166 */ FR2(-0.9963126121827780), FR2(+0.0857973123444402),
/*N:1024,i:167 */ FR2(-0.4605387109582401), FR2(+0.8876396204028539),
/*N:1024,i:167 */ FR2(+0.5193559901655895), FR2(+0.8545579883654005),
/*N:1024,i:167 */ FR2(-0.9977230666441916), FR2(+0.0674439195636642),
/*N:1024,i:168 */ FR2(-0.4713967368259977), FR2(+0.8819212643483551),
/*N:1024,i:168 */ FR2(+0.5141027441932217), FR2(+0.8577286100002721),
/*N:1024,i:168 */ FR2(-0.9987954562051724), FR2(+0.0490676743274180),
/*N:1024,i:169 */ FR2(-0.4821837720791227), FR2(+0.8760700941954066),
/*N:1024,i:169 */ FR2(+0.5088301425431070), FR2(+0.8608669386377673),
/*N:1024,i:169 */ FR2(-0.9995294175010931), FR2(+0.0306748031766369),
/*N:1024,i:170 */ FR2(-0.4928981922297840), FR2(+0.8700869911087115),
/*N:1024,i:170 */ FR2(+0.5035383837257176), FR2(+0.8639728561215867),
/*N:1024,i:170 */ FR2(-0.9999247018391445), FR2(+0.0122715382857200),
/*N:1024,i:171 */ FR2(-0.5035383837257175), FR2(+0.8639728561215868),
/*N:1024,i:171 */ FR2(+0.4982276669727819), FR2(+0.8670462455156927),
/*N:1024,i:171 */ FR2(-0.9999811752826011), FR2(-0.0061358846491546),
/*N:1024,i:172 */ FR2(-0.5141027441932217), FR2(+0.8577286100002721),
/*N:1024,i:172 */ FR2(+0.4928981922297841), FR2(+0.8700869911087114),
/*N:1024,i:172 */ FR2(-0.9996988186962043), FR2(-0.0245412285229121),
/*N:1024,i:173 */ FR2(-0.5245896826784687), FR2(+0.8513551931052652),
/*N:1024,i:173 */ FR2(+0.4875501601484361), FR2(+0.8730949784182901),
/*N:1024,i:173 */ FR2(-0.9990777277526454), FR2(-0.0429382569349408),
/*N:1024,i:174 */ FR2(-0.5349976198870970), FR2(+0.8448535652497072),
/*N:1024,i:174 */ FR2(+0.4821837720791228), FR2(+0.8760700941954066),
/*N:1024,i:174 */ FR2(-0.9981181129001492), FR2(-0.0613207363022082),
/*N:1024,i:175 */ FR2(-0.5453249884220462), FR2(+0.8382247055548382),
/*N:1024,i:175 */ FR2(+0.4767992300633223), FR2(+0.8790122264286334),
/*N:1024,i:175 */ FR2(-0.9968202992911658), FR2(-0.0796824379714299),
/*N:1024,i:176 */ FR2(-0.5555702330196020), FR2(+0.8314696123025455),
/*N:1024,i:176 */ FR2(+0.4713967368259978), FR2(+0.8819212643483549),
/*N:1024,i:176 */ FR2(-0.9951847266721969), FR2(-0.0980171403295606),
/*N:1024,i:177 */ FR2(-0.5657318107836132), FR2(+0.8245893027850252),
/*N:1024,i:177 */ FR2(+0.4659764957679661), FR2(+0.8847970984309378),
/*N:1024,i:177 */ FR2(-0.9932119492347946), FR2(-0.1163186309119045),
/*N:1024,i:178 */ FR2(-0.5758081914178453), FR2(+0.8175848131515837),
/*N:1024,i:178 */ FR2(+0.4605387109582400), FR2(+0.8876396204028539),
/*N:1024,i:178 */ FR2(-0.9909026354277800), FR2(-0.1345807085071261),
/*N:1024,i:179 */ FR2(-0.5857978574564389), FR2(+0.8104571982525948),
/*N:1024,i:179 */ FR2(+0.4550835871263438), FR2(+0.8904487232447579),
/*N:1024,i:179 */ FR2(-0.9882575677307495), FR2(-0.1527971852584434),
/*N:1024,i:180 */ FR2(-0.5956993044924334), FR2(+0.8032075314806449),
/*N:1024,i:180 */ FR2(+0.4496113296546066), FR2(+0.8932243011955153),
/*N:1024,i:180 */ FR2(-0.9852776423889413), FR2(-0.1709618887603010),
/*N:1024,i:181 */ FR2(-0.6055110414043254), FR2(+0.7958369046088836),
/*N:1024,i:181 */ FR2(+0.4441221445704293), FR2(+0.8959662497561851),
/*N:1024,i:181 */ FR2(-0.9819638691095552), FR2(-0.1890686641498061),
/*N:1024,i:182 */ FR2(-0.6152315905806267), FR2(+0.7883464276266063),
/*N:1024,i:182 */ FR2(+0.4386162385385277), FR2(+0.8986744656939538),
/*N:1024,i:182 */ FR2(-0.9783173707196277), FR2(-0.2071113761922186),
/*N:1024,i:183 */ FR2(-0.6248594881423862), FR2(+0.7807372285720946),
/*N:1024,i:183 */ FR2(+0.4330938188531520), FR2(+0.9013488470460220),
/*N:1024,i:183 */ FR2(-0.9743393827855759), FR2(-0.2250839113597926),
/*N:1024,i:184 */ FR2(-0.6343932841636454), FR2(+0.7730104533627371),
/*N:1024,i:184 */ FR2(+0.4275550934302822), FR2(+0.9039892931234433),
/*N:1024,i:184 */ FR2(-0.9700312531945440), FR2(-0.2429801799032638),
/*N:1024,i:185 */ FR2(-0.6438315428897913), FR2(+0.7651672656224591),
/*N:1024,i:185 */ FR2(+0.4220002707997998), FR2(+0.9065957045149153),
/*N:1024,i:185 */ FR2(-0.9653944416976894), FR2(-0.2607941179152756),
/*N:1024,i:186 */ FR2(-0.6531728429537765), FR2(+0.7572088465064847),
/*N:1024,i:186 */ FR2(+0.4164295600976373), FR2(+0.9091679830905223),
/*N:1024,i:186 */ FR2(-0.9604305194155659), FR2(-0.2785196893850529),
/*N:1024,i:187 */ FR2(-0.6624157775901719), FR2(+0.7491363945234593),
/*N:1024,i:187 */ FR2(+0.4108431710579039), FR2(+0.9117060320054299),
/*N:1024,i:187 */ FR2(-0.9551411683057708), FR2(-0.2961508882436238),
/*N:1024,i:188 */ FR2(-0.6715589548470184), FR2(+0.7409511253549590),
/*N:1024,i:188 */ FR2(+0.4052413140049899), FR2(+0.9142097557035307),
/*N:1024,i:188 */ FR2(-0.9495281805930368), FR2(-0.3136817403988912),
/*N:1024,i:189 */ FR2(-0.6806009977954530), FR2(+0.7326542716724128),
/*N:1024,i:189 */ FR2(+0.3996241998456468), FR2(+0.9166790599210427),
/*N:1024,i:189 */ FR2(-0.9435934581619604), FR2(-0.3311063057598763),
/*N:1024,i:190 */ FR2(-0.6895405447370669), FR2(+0.7242470829514669),
/*N:1024,i:190 */ FR2(+0.3939920400610481), FR2(+0.9191138516900578),
/*N:1024,i:190 */ FR2(-0.9373390119125750), FR2(-0.3484186802494346),
/*N:1024,i:191 */ FR2(-0.6983762494089728), FR2(+0.7157308252838187),
/*N:1024,i:191 */ FR2(+0.3883450466988263), FR2(+0.9215140393420419),
/*N:1024,i:191 */ FR2(-0.9307669610789838), FR2(-0.3656129978047736),
/*N:1024,i:192 */ FR2(-0.7071067811865475), FR2(+0.7071067811865476),
/*N:1024,i:192 */ FR2(+0.3826834323650898), FR2(+0.9238795325112867),
/*N:1024,i:192 */ FR2(-0.9238795325112869), FR2(-0.3826834323650897),
/*N:1024,i:193 */ FR2(-0.7157308252838186), FR2(+0.6983762494089729),
/*N:1024,i:193 */ FR2(+0.3770074102164183), FR2(+0.9262102421383113),
/*N:1024,i:193 */ FR2(-0.9166790599210427), FR2(-0.3996241998456468),
/*N:1024,i:194 */ FR2(-0.7242470829514668), FR2(+0.6895405447370671),
/*N:1024,i:194 */ FR2(+0.3713171939518376), FR2(+0.9285060804732155),
/*N:1024,i:194 */ FR2(-0.9091679830905225), FR2(-0.4164295600976369),
/*N:1024,i:195 */ FR2(-0.7326542716724127), FR2(+0.6806009977954532),
/*N:1024,i:195 */ FR2(+0.3656129978047740), FR2(+0.9307669610789837),
/*N:1024,i:195 */ FR2(-0.9013488470460220), FR2(-0.4330938188531519),
/*N:1024,i:196 */ FR2(-0.7409511253549589), FR2(+0.6715589548470186),
/*N:1024,i:196 */ FR2(+0.3598950365349883), FR2(+0.9329927988347389),
/*N:1024,i:196 */ FR2(-0.8932243011955153), FR2(-0.4496113296546067),
/*N:1024,i:197 */ FR2(-0.7491363945234592), FR2(+0.6624157775901720),
/*N:1024,i:197 */ FR2(+0.3541635254204905), FR2(+0.9351835099389475),
/*N:1024,i:197 */ FR2(-0.8847970984309379), FR2(-0.4659764957679660),
/*N:1024,i:198 */ FR2(-0.7572088465064846), FR2(+0.6531728429537766),
/*N:1024,i:198 */ FR2(+0.3484186802494345), FR2(+0.9373390119125750),
/*N:1024,i:198 */ FR2(-0.8760700941954066), FR2(-0.4821837720791227),
/*N:1024,i:199 */ FR2(-0.7651672656224590), FR2(+0.6438315428897914),
/*N:1024,i:199 */ FR2(+0.3426607173119944), FR2(+0.9394592236021899),
/*N:1024,i:199 */ FR2(-0.8670462455156929), FR2(-0.4982276669727815),
/*N:1024,i:200 */ FR2(-0.7730104533627370), FR2(+0.6343932841636455),
/*N:1024,i:200 */ FR2(+0.3368898533922201), FR2(+0.9415440651830208),
/*N:1024,i:200 */ FR2(-0.8577286100002721), FR2(-0.5141027441932216),
/*N:1024,i:201 */ FR2(-0.7807372285720945), FR2(+0.6248594881423863),
/*N:1024,i:201 */ FR2(+0.3311063057598764), FR2(+0.9435934581619604),
/*N:1024,i:201 */ FR2(-0.8481203448032972), FR2(-0.5298036246862946),
/*N:1024,i:202 */ FR2(-0.7883464276266062), FR2(+0.6152315905806269),
/*N:1024,i:202 */ FR2(+0.3253102921622630), FR2(+0.9456073253805213),
/*N:1024,i:202 */ FR2(-0.8382247055548382), FR2(-0.5453249884220461),
/*N:1024,i:203 */ FR2(-0.7958369046088835), FR2(+0.6055110414043257),
/*N:1024,i:203 */ FR2(+0.3195020308160158), FR2(+0.9475855910177411),
/*N:1024,i:203 */ FR2(-0.8280450452577558), FR2(-0.5606615761973359),
/*N:1024,i:204 */ FR2(-0.8032075314806448), FR2(+0.5956993044924335),
/*N:1024,i:204 */ FR2(+0.3136817403988916), FR2(+0.9495281805930367),
/*N:1024,i:204 */ FR2(-0.8175848131515837), FR2(-0.5758081914178453),
/*N:1024,i:205 */ FR2(-0.8104571982525947), FR2(+0.5857978574564390),
/*N:1024,i:205 */ FR2(+0.3078496400415350), FR2(+0.9514350209690083),
/*N:1024,i:205 */ FR2(-0.8068475535437995), FR2(-0.5907597018588739),
/*N:1024,i:206 */ FR2(-0.8175848131515836), FR2(+0.5758081914178455),
/*N:1024,i:206 */ FR2(+0.3020059493192282), FR2(+0.9533060403541938),
/*N:1024,i:206 */ FR2(-0.7958369046088836), FR2(-0.6055110414043254),
/*N:1024,i:207 */ FR2(-0.8245893027850251), FR2(+0.5657318107836135),
/*N:1024,i:207 */ FR2(+0.2961508882436240), FR2(+0.9551411683057707),
/*N:1024,i:207 */ FR2(-0.7845565971555752), FR2(-0.6200572117632892),
/*N:1024,i:208 */ FR2(-0.8314696123025454), FR2(+0.5555702330196022),
/*N:1024,i:208 */ FR2(+0.2902846772544623), FR2(+0.9569403357322089),
/*N:1024,i:208 */ FR2(-0.7730104533627371), FR2(-0.6343932841636453),
/*N:1024,i:209 */ FR2(-0.8382247055548381), FR2(+0.5453249884220464),
/*N:1024,i:209 */ FR2(+0.2844075372112718), FR2(+0.9587034748958716),
/*N:1024,i:209 */ FR2(-0.7612023854842619), FR2(-0.6485144010221123),
/*N:1024,i:210 */ FR2(-0.8448535652497071), FR2(+0.5349976198870972),
/*N:1024,i:210 */ FR2(+0.2785196893850531), FR2(+0.9604305194155658),
/*N:1024,i:210 */ FR2(-0.7491363945234593), FR2(-0.6624157775901718),
/*N:1024,i:211 */ FR2(-0.8513551931052652), FR2(+0.5245896826784690),
/*N:1024,i:211 */ FR2(+0.2726213554499490), FR2(+0.9621214042690416),
/*N:1024,i:211 */ FR2(-0.7368165688773700), FR2(-0.6760927035753158),
/*N:1024,i:212 */ FR2(-0.8577286100002720), FR2(+0.5141027441932218),
/*N:1024,i:212 */ FR2(+0.2667127574748984), FR2(+0.9637760657954398),
/*N:1024,i:212 */ FR2(-0.7242470829514670), FR2(-0.6895405447370668),
/*N:1024,i:213 */ FR2(-0.8639728561215867), FR2(+0.5035383837257177),
/*N:1024,i:213 */ FR2(+0.2607941179152756), FR2(+0.9653944416976894),
/*N:1024,i:213 */ FR2(-0.7114321957452167), FR2(-0.7027547444572251),
/*N:1024,i:214 */ FR2(-0.8700869911087114), FR2(+0.4928981922297842),
/*N:1024,i:214 */ FR2(+0.2548656596045146), FR2(+0.9669764710448521),
/*N:1024,i:214 */ FR2(-0.6983762494089730), FR2(-0.7157308252838185),
/*N:1024,i:215 */ FR2(-0.8760700941954065), FR2(+0.4821837720791229),
/*N:1024,i:215 */ FR2(+0.2489276057457203), FR2(+0.9685220942744173),
/*N:1024,i:215 */ FR2(-0.6850836677727004), FR2(-0.7284643904482252),
/*N:1024,i:216 */ FR2(-0.8819212643483549), FR2(+0.4713967368259979),
/*N:1024,i:216 */ FR2(+0.2429801799032640), FR2(+0.9700312531945440),
/*N:1024,i:216 */ FR2(-0.6715589548470187), FR2(-0.7409511253549589),
/*N:1024,i:217 */ FR2(-0.8876396204028538), FR2(+0.4605387109582402),
/*N:1024,i:217 */ FR2(+0.2370236059943673), FR2(+0.9715038909862518),
/*N:1024,i:217 */ FR2(-0.6578066932970788), FR2(-0.7531867990436124),
/*N:1024,i:218 */ FR2(-0.8932243011955152), FR2(+0.4496113296546069),
/*N:1024,i:218 */ FR2(+0.2310581082806713), FR2(+0.9729399522055601),
/*N:1024,i:218 */ FR2(-0.6438315428897915), FR2(-0.7651672656224590),
/*N:1024,i:219 */ FR2(-0.8986744656939539), FR2(+0.4386162385385276),
/*N:1024,i:219 */ FR2(+0.2250839113597928), FR2(+0.9743393827855759),
/*N:1024,i:219 */ FR2(-0.6296382389149269), FR2(-0.7768884656732326),
/*N:1024,i:220 */ FR2(-0.9039892931234433), FR2(+0.4275550934302820),
/*N:1024,i:220 */ FR2(+0.2191012401568698), FR2(+0.9757021300385286),
/*N:1024,i:220 */ FR2(-0.6152315905806273), FR2(-0.7883464276266059),
/*N:1024,i:221 */ FR2(-0.9091679830905224), FR2(+0.4164295600976372),
/*N:1024,i:221 */ FR2(+0.2131103199160914), FR2(+0.9770281426577544),
/*N:1024,i:221 */ FR2(-0.6006164793838693), FR2(-0.7995372691079048),
/*N:1024,i:222 */ FR2(-0.9142097557035307), FR2(+0.4052413140049899),
/*N:1024,i:222 */ FR2(+0.2071113761922186), FR2(+0.9783173707196277),
/*N:1024,i:222 */ FR2(-0.5857978574564391), FR2(-0.8104571982525947),
/*N:1024,i:223 */ FR2(-0.9191138516900578), FR2(+0.3939920400610482),
/*N:1024,i:223 */ FR2(+0.2011046348420920), FR2(+0.9795697656854405),
/*N:1024,i:223 */ FR2(-0.5707807458869674), FR2(-0.8211025149911047),
/*N:1024,i:224 */ FR2(-0.9238795325112867), FR2(+0.3826834323650899),
/*N:1024,i:224 */ FR2(+0.1950903220161283), FR2(+0.9807852804032304),
/*N:1024,i:224 */ FR2(-0.5555702330196022), FR2(-0.8314696123025452),
/*N:1024,i:225 */ FR2(-0.9285060804732155), FR2(+0.3713171939518377),
/*N:1024,i:225 */ FR2(+0.1890686641498063), FR2(+0.9819638691095552),
/*N:1024,i:225 */ FR2(-0.5401714727298927), FR2(-0.8415549774368986),
/*N:1024,i:226 */ FR2(-0.9329927988347389), FR2(+0.3598950365349883),
/*N:1024,i:226 */ FR2(+0.1830398879551411), FR2(+0.9831054874312163),
/*N:1024,i:226 */ FR2(-0.5245896826784694), FR2(-0.8513551931052649),
/*N:1024,i:227 */ FR2(-0.9373390119125749), FR2(+0.3484186802494348),
/*N:1024,i:227 */ FR2(+0.1770042204121489), FR2(+0.9842100923869290),
/*N:1024,i:227 */ FR2(-0.5088301425431073), FR2(-0.8608669386377671),
/*N:1024,i:228 */ FR2(-0.9415440651830207), FR2(+0.3368898533922203),
/*N:1024,i:228 */ FR2(+0.1709618887603014), FR2(+0.9852776423889412),
/*N:1024,i:228 */ FR2(-0.4928981922297842), FR2(-0.8700869911087114),
/*N:1024,i:229 */ FR2(-0.9456073253805212), FR2(+0.3253102921622633),
/*N:1024,i:229 */ FR2(+0.1649131204899701), FR2(+0.9863080972445987),
/*N:1024,i:229 */ FR2(-0.4767992300633221), FR2(-0.8790122264286334),
/*N:1024,i:230 */ FR2(-0.9495281805930367), FR2(+0.3136817403988914),
/*N:1024,i:230 */ FR2(+0.1588581433338614), FR2(+0.9873014181578584),
/*N:1024,i:230 */ FR2(-0.4605387109582399), FR2(-0.8876396204028541),
/*N:1024,i:231 */ FR2(-0.9533060403541939), FR2(+0.3020059493192280),
/*N:1024,i:231 */ FR2(+0.1527971852584434), FR2(+0.9882575677307495),
/*N:1024,i:231 */ FR2(-0.4441221445704298), FR2(-0.8959662497561849),
/*N:1024,i:232 */ FR2(-0.9569403357322088), FR2(+0.2902846772544624),
/*N:1024,i:232 */ FR2(+0.1467304744553618), FR2(+0.9891765099647810),
/*N:1024,i:232 */ FR2(-0.4275550934302825), FR2(-0.9039892931234431),
/*N:1024,i:233 */ FR2(-0.9604305194155658), FR2(+0.2785196893850532),
/*N:1024,i:233 */ FR2(+0.1406582393328492), FR2(+0.9900582102622971),
/*N:1024,i:233 */ FR2(-0.4108431710579042), FR2(-0.9117060320054298),
/*N:1024,i:234 */ FR2(-0.9637760657954398), FR2(+0.2667127574748985),
/*N:1024,i:234 */ FR2(+0.1345807085071262), FR2(+0.9909026354277800),
/*N:1024,i:234 */ FR2(-0.3939920400610482), FR2(-0.9191138516900577),
/*N:1024,i:235 */ FR2(-0.9669764710448521), FR2(+0.2548656596045147),
/*N:1024,i:235 */ FR2(+0.1284981107937932), FR2(+0.9917097536690995),
/*N:1024,i:235 */ FR2(-0.3770074102164182), FR2(-0.9262102421383114),
/*N:1024,i:236 */ FR2(-0.9700312531945440), FR2(+0.2429801799032641),
/*N:1024,i:236 */ FR2(+0.1224106751992163), FR2(+0.9924795345987100),
/*N:1024,i:236 */ FR2(-0.3598950365349879), FR2(-0.9329927988347390),
/*N:1024,i:237 */ FR2(-0.9729399522055601), FR2(+0.2310581082806713),
/*N:1024,i:237 */ FR2(+0.1163186309119049), FR2(+0.9932119492347945),
/*N:1024,i:237 */ FR2(-0.3426607173119949), FR2(-0.9394592236021897),
/*N:1024,i:238 */ FR2(-0.9757021300385285), FR2(+0.2191012401568701),
/*N:1024,i:238 */ FR2(+0.1102222072938832), FR2(+0.9939069700023561),
/*N:1024,i:238 */ FR2(-0.3253102921622633), FR2(-0.9456073253805212),
/*N:1024,i:239 */ FR2(-0.9783173707196275), FR2(+0.2071113761922188),
/*N:1024,i:239 */ FR2(+0.1041216338720547), FR2(+0.9945645707342554),
/*N:1024,i:239 */ FR2(-0.3078496400415351), FR2(-0.9514350209690083),
/*N:1024,i:240 */ FR2(-0.9807852804032304), FR2(+0.1950903220161286),
/*N:1024,i:240 */ FR2(+0.0980171403295608), FR2(+0.9951847266721968),
/*N:1024,i:240 */ FR2(-0.2902846772544624), FR2(-0.9569403357322088),
/*N:1024,i:241 */ FR2(-0.9831054874312163), FR2(+0.1830398879551409),
/*N:1024,i:241 */ FR2(+0.0919089564971327), FR2(+0.9957674144676598),
/*N:1024,i:241 */ FR2(-0.2726213554499489), FR2(-0.9621214042690416),
/*N:1024,i:242 */ FR2(-0.9852776423889412), FR2(+0.1709618887603012),
/*N:1024,i:242 */ FR2(+0.0857973123444399), FR2(+0.9963126121827780),
/*N:1024,i:242 */ FR2(-0.2548656596045144), FR2(-0.9669764710448522),
/*N:1024,i:243 */ FR2(-0.9873014181578584), FR2(+0.1588581433338615),
/*N:1024,i:243 */ FR2(+0.0796824379714301), FR2(+0.9968202992911657),
/*N:1024,i:243 */ FR2(-0.2370236059943677), FR2(-0.9715038909862517),
/*N:1024,i:244 */ FR2(-0.9891765099647810), FR2(+0.1467304744553618),
/*N:1024,i:244 */ FR2(+0.0735645635996675), FR2(+0.9972904566786902),
/*N:1024,i:244 */ FR2(-0.2191012401568701), FR2(-0.9757021300385285),
/*N:1024,i:245 */ FR2(-0.9909026354277800), FR2(+0.1345807085071263),
/*N:1024,i:245 */ FR2(+0.0674439195636641), FR2(+0.9977230666441916),
/*N:1024,i:245 */ FR2(-0.2011046348420921), FR2(-0.9795697656854405),
/*N:1024,i:246 */ FR2(-0.9924795345987100), FR2(+0.1224106751992164),
/*N:1024,i:246 */ FR2(+0.0613207363022086), FR2(+0.9981181129001492),
/*N:1024,i:246 */ FR2(-0.1830398879551410), FR2(-0.9831054874312163),
/*N:1024,i:247 */ FR2(-0.9939069700023561), FR2(+0.1102222072938832),
/*N:1024,i:247 */ FR2(+0.0551952443496900), FR2(+0.9984755805732948),
/*N:1024,i:247 */ FR2(-0.1649131204899698), FR2(-0.9863080972445987),
/*N:1024,i:248 */ FR2(-0.9951847266721968), FR2(+0.0980171403295608),
/*N:1024,i:248 */ FR2(+0.0490676743274181), FR2(+0.9987954562051724),
/*N:1024,i:248 */ FR2(-0.1467304744553623), FR2(-0.9891765099647809),
/*N:1024,i:249 */ FR2(-0.9963126121827780), FR2(+0.0857973123444402),
/*N:1024,i:249 */ FR2(+0.0429382569349410), FR2(+0.9990777277526454),
/*N:1024,i:249 */ FR2(-0.1284981107937936), FR2(-0.9917097536690995),
/*N:1024,i:250 */ FR2(-0.9972904566786902), FR2(+0.0735645635996677),
/*N:1024,i:250 */ FR2(+0.0368072229413590), FR2(+0.9993223845883495),
/*N:1024,i:250 */ FR2(-0.1102222072938833), FR2(-0.9939069700023561),
/*N:1024,i:251 */ FR2(-0.9981181129001492), FR2(+0.0613207363022085),
/*N:1024,i:251 */ FR2(+0.0306748031766366), FR2(+0.9995294175010931),
/*N:1024,i:251 */ FR2(-0.0919089564971328), FR2(-0.9957674144676598),
/*N:1024,i:252 */ FR2(-0.9987954562051724), FR2(+0.0490676743274180),
/*N:1024,i:252 */ FR2(+0.0245412285229123), FR2(+0.9996988186962043),
/*N:1024,i:252 */ FR2(-0.0735645635996674), FR2(-0.9972904566786902),
/*N:1024,i:253 */ FR2(-0.9993223845883495), FR2(+0.0368072229413588),
/*N:1024,i:253 */ FR2(+0.0184067299058048), FR2(+0.9998305817958234),
/*N:1024,i:253 */ FR2(-0.0551952443496897), FR2(-0.9984755805732948),
/*N:1024,i:254 */ FR2(-0.9996988186962043), FR2(+0.0245412285229123),
/*N:1024,i:254 */ FR2(+0.0122715382857199), FR2(+0.9999247018391445),
/*N:1024,i:254 */ FR2(-0.0368072229413593), FR2(-0.9993223845883494),
/*N:1024,i:255 */ FR2(-0.9999247018391445), FR2(+0.0122715382857200),
/*N:1024,i:255 */ FR2(+0.0061358846491545), FR2(+0.9999811752826011),
/*N:1024,i:255 */ FR2(-0.0184067299058052), FR2(-0.9998305817958234)
};

#endif /* __FFT_TWIDDLES_H__ */


#define MULT0(a,b)   ((long)(a)*(b))

#define COMPLEX_MUL(a,b,c,d)\
    do{ vcp_extend x,y; x = MULT0(a,c)-MULT0(b,d); y = MULT0(c,b)+MULT0(a,d); a = (x + (1<<14))>>15; b = (y+(1<<14))>>15; }while(0)


#define FROUND 0
#define SHIFT_AMOUNT    

void
fft_radix_42(struct complex_s *data, int size, int scale)
{
    struct complex_s *x = data;
    unsigned int i, ap, N;
    struct complex_s32 x0,x1,x2, t1,t2,t3,t4,t;
    vcp_inter wre,wim;
    vcp_inter *tw1;


    if(scale)
        scale = 2;

    ap = 1024/size;
    N = size;
    tw1 = fft_twiddles_1024;

    do                // over N
    {
        //N >>= 2;
        i = 0;
        do            // over i
        {
                x0.re = x->re;                // x[0]
                x0.im = x->im;
                x += N / 2 * 1;
                x2.re = x->re;                // x[N/2]
                x2.im = x->im;
                x -= N / 4 * 1;

                t1.re = x0.re + x2.re;
                t1.im = x0.im + x2.im;
                t2.re = x0.re - x2.re;
                t2.im = x0.im - x2.im;

                x0.re = x->re;                // x[N/4]
                x0.im = x->im;
                x += N / 2 * 1;
                x2.re = x->re;                // x[3N/4]
                x2.im = x->im;
                x -= 3 * N / 4 * 1;

                t3.re = x0.re + x2.re;
                t3.im = x0.im + x2.im;
                t4.re = x0.re - x2.re;
                t4.im = x0.im - x2.im;

                // update x_{0+i}
                t.re = (t1.re + t3.re + FROUND) >> scale;
                t.im = (t1.im + t3.im + FROUND) >> scale;
                x->re = t.re;
                x->im = t.im;
                x += N / 4 * 1;
                // x_{0+i} updated

                // update x_{N/4+i}
                wre = *tw1++;
                wim = *tw1++;

                t.re = (t1.re - t3.re + FROUND) >> scale;
                t.im = (t1.im - t3.im + FROUND) >> scale;
                
                COMPLEX_MUL(t.re,t.im, wre, wim);
                x->re = t.re;
                x->im = t.im;
                x += N / 4 * 1;
                //  x_{N/4+i} updated

                // update x_{N/2+i}
                wre = *tw1++;
                wim = *tw1++;

                t.re = (t2.re - t4.im + FROUND) >> scale;
                t.im = (t2.im + t4.re + FROUND) >> scale;
                
                COMPLEX_MUL(t.re,t.im, wre, wim);
                x->re = t.re;
                x->im = t.im;
                x += N / 4 * 1;
                // x_{N/2+i} updated

                // update x_{3N/4+i}
                wre = *tw1++;
                wim = *tw1++;

                t.re = (t2.re + t4.im + FROUND) >> scale;
                t.im = (t2.im - t4.re + FROUND) >> scale;
                
                COMPLEX_MUL(t.re,t.im, wre, wim);
                x->re = t.re;
                x->im = t.im;
                x += N / 4 * 1;
                // x_{3N/4+i} updated
                
                x -= N * 1 - 1;
                tw1 += (ap - 1) * 4 + (ap - 1) * 2;

                i++;
                if( (i & (N / 4 * 1 - 1)) == 0)
                {
                    x += 3 * N / 4 * 1;        // next quadruple of input data
                    tw1 -= 256 * 2 * 3;    // length of table * 2 * 3 (len * {sin, cos} * {3 twiddles per butterfly})
                }
        } while (i < size/4);

        x -= size;    // to the beginning                                                        
        ap <<= 2;    // modify stride

        N >>= 2;
    } while (N > 4);


    if ( N == 4 )    // FIXME: N == 4
    {
        for (i = 0; i < size; i+= 4)
        {
            x0.re = x[0].re;
            x0.im = x[0].im;
            x2.re = x[2].re;
            x2.im = x[2].im;

            t1.re = x0.re + x2.re;
            t1.im = x0.im + x2.im;
            t2.re = x0.re - x2.re;
            t2.im = x0.im - x2.im;

            x0.re = x[1].re;
            x0.im = x[1].im;
            x2.re = x[3].re;
            x2.im = x[3].im;

            t3.re = x0.re + x2.re;
            t3.im = x0.im + x2.im;
            t4.re = x0.re - x2.re;
            t4.im = x0.im - x2.im;

            // update x_{0+i}
            t.re = t1.re + t3.re;
            t.im = t1.im + t3.im;
            x[0].re = (t.re+FROUND)>>scale;
            x[0].im = (t.im+FROUND)>>scale;
            // x_{0+i} updated

            // update x_{N/4+i}
            t.re = t1.re - t3.re;
            t.im = t1.im - t3.im;
            x[1].re = (t.re+FROUND)>>scale;
            x[1].im = (t.im+FROUND)>>scale;
            //  x_{N/4+i} updated

            // update x_{N/2}
            t.re = t2.re - t4.im;
            t.im = t2.im + t4.re;
            x[2].re = (t.re+FROUND)>>scale;
            x[2].im = (t.im+FROUND)>>scale;
            // x_{N/2} updated

            // update x_{3N/4+i}
            t.re = t2.re + t4.im;
            t.im = t2.im - t4.re;
            x[3].re = (t.re+FROUND)>>scale;
            x[3].im = (t.im+FROUND)>>scale;
            // x_{3N/4+i} updated
            x += 4;
        }
    }
    else
    {
        if(scale)
            scale = 1;
        // trivial butts at the end
        for (i = 0; i<size; i+= 2)
        {
            x0.re = x[0].re;
            x0.im = x[0].im;
            x1.re = x[1].re;
            x1.im = x[1].im;

            t.re = x0.re + x1.re;
            t.im = x0.im + x1.im;
            x[0].re = t.re>>scale;
            x[0].im = t.im>>scale;

            t.re = x0.re - x1.re;
            t.im = x0.im - x1.im;
            x[1].re = t.re>>scale;
            x[1].im = t.im>>scale;
            x += 2;
        }
    }

    x -= size;

    data_swap(x,size);
}
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Zelepuk   Целочисленные алгоритмы ЦОС   Mar 6 2011, 07:22
- - _Anatoliy   Цитата(Zelepuk @ Mar 6 2011, 09:22) Это...   Mar 6 2011, 08:35
|- - alexPec   Цитата(Zelepuk @ Mar 7 2011, 09:30) Позна...   Mar 7 2011, 10:07
||- - Zelepuk   Цитата(alexPec @ Mar 7 2011, 13:07) Переп...   Mar 7 2011, 13:38
||- - alexPec   Цитата(Zelepuk @ Mar 7 2011, 16:38) когда...   Mar 7 2011, 14:47
- - PetrovichKR   ЦитатаХлчется вкуритсь "трюки" на С чтоб...   Mar 8 2011, 04:31
- - Ruslan1   еще может интересно будет, насчет целочисленной ре...   Mar 18 2011, 16:48
|- - Zelepuk   Цитата(Ruslan1 @ Mar 18 2011, 19:48) еще ...   Mar 18 2011, 17:36
|- - MSP430F   Цитата(Ruslan1 @ Mar 18 2011, 20:48) еще ...   Aug 22 2013, 14:14
|- - Zelepuk   Цитата(MSP430F @ Aug 22 2013, 18:14) Скаж...   Aug 23 2013, 07:55
|- - MSP430F   Цитата(Zelepuk @ Aug 23 2013, 11:55) коне...   Aug 23 2013, 08:52
|- - Zelepuk   Цитата(MSP430F @ Aug 23 2013, 12:52) Вопр...   Aug 23 2013, 09:02
|- - MSP430F   Цитата(Zelepuk @ Aug 23 2013, 13:02) поче...   Aug 23 2013, 09:16
|- - Maverick   Цитата(MSP430F @ Aug 23 2013, 12:16) по...   Aug 23 2013, 09:35
|- - Corner   Цитата(MSP430F @ Aug 23 2013, 13:16) Вот ...   Aug 23 2013, 18:04
||- - MSP430F   Цитата(Corner @ Aug 23 2013, 22:04) С уче...   Aug 26 2013, 12:44
||- - Corner   Цитата(MSP430F @ Aug 26 2013, 16:44) Как ...   Aug 29 2013, 15:02
|- - alex_os   Цитата(MSP430F @ Aug 23 2013, 13:16) Вот ...   Sep 18 2013, 19:26
|- - Corner   Цитата(alex_os @ Sep 18 2013, 23:26) можн...   Sep 19 2013, 15:02
|- - DASM   Цитата(alex_os @ Sep 18 2013, 23:26) Ужас...   Sep 19 2013, 15:21
|- - Corner   Цитата(DASM @ Sep 19 2013, 19:21) UMULL 3...   Sep 19 2013, 15:28
- - Corner   На ПЛИС БПФ 8192 точки 18 бит знаковое сносно дает...   Aug 22 2013, 14:35
- - Zelepuk   Вообще проще взять и проверить. Код есть. За полча...   Aug 23 2013, 09:17
- - DASM   Странно, дока говорит иное.Вы уверены, что это не ...   Sep 19 2013, 15:34
|- - Corner   Цитата(DASM @ Sep 19 2013, 19:34) Странно...   Sep 19 2013, 15:36
|- - AndrewN   QUOTE (Corner @ Sep 19 2013, 18:36) Тольк...   Sep 19 2013, 17:41
|- - Corner   Цитата(AndrewN @ Sep 19 2013, 21:41) Для ...   Sep 24 2013, 16:30
|- - AndrewN   QUOTE (Corner @ Sep 24 2013, 19:30) 16+16...   Sep 24 2013, 20:57
|- - Corner   Цитата(AndrewN @ Sep 25 2013, 00:57) А та...   Sep 29 2013, 09:15
- - DASM   Посмотрю завтра, с телефона неудобно. И что, в экс...   Sep 19 2013, 15:44


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th June 2025 - 04:37
Рейтинг@Mail.ru


Страница сгенерированна за 0.01628 секунд с 7
ELECTRONIX ©2004-2016