Optimalizacia konstantneho float vyrazu, was: C xc8

Ales Prochaska, Divesoft prochaska na divesoft.cz
Středa Prosinec 6 13:41:20 CET 2017


Jestli je to nějaký optimalizující překladač tak může sám nahrazovat
dělení konstantou násobením, takže tohle bych neřešil :-)

Aleš Procháska

> 1. deli sa len 1x pri inicialzacii takze tu nic neusetrim (ano,
> nasobenie je lacnejsie ale na druhej strane
>    zneprehladnuje kod)  a pri inom SampleRate by sa chyba prejavila opat
>     chyba -0.00002 vo vysledku vlastne nevadi, pretoze spravny vypocet mal aj tak vypadat takto:
>     m_wRDSDecBy = (WORD)((fSymP / fSamPerSym)+0.5f);
>     V reale ma byt SampleRate vzdy nasobok 2375 co vsak nie vzdy je mozne a navyse
>    chyba > 1 sposobuje casty rozpad casovania symbolov
> 2. spoliehal som sa na IDE a vypis z printf. je potom zaujimave ze 
>     DBGLOG(m_iDbgRDS, LVL_WARNING, "%d %f %f", m_wRDSDecBy, fSymP, fSamPerSym);
>    (vnutorne vola printf) vypise fSYmP raz ako 96.0000 a raz ako 95.99998
>   tu neverim ze by kompilator tuto premennu nejako manipuloval pretoze su na nej zavisle
>  formatovacie znaky.
> V kazdom pripade je to zaujimave spravanie ktore ma riesenie ale nema vysvetlenie
> (zatial) a stalo ma hodinu casu :)

> j.

> -----Original Message-----
> From: Hw-list [mailto:hw-list-bounces na list.hw.cz] On Behalf Of Miroslav Mraz
> Sent: Wednesday, December 06, 2017 1:00 PM
> To: hw-list na list.hw.cz
> Subject: Re: Optimalizacia konstantneho float vyrazu, was: C xc8

> Co zkusit něco jako
> fSymP = (float)dwSampleRate * 0,000421053f; fSymP je pak asi tak 96,000084

> 1. násobit je levnější než dělit
> 2. přesně to nikdy nebude, zkuste si ta čísla faktorizovat.

> Mrazík


> Dne 6.12.2017 v 10:30 Zuffa Jan napsal(a):
>> dwSampleRate je DWORD premenna funkcie a tak sa s nim dalej pracuje 
>> target x86 a prekladac od $MS.
>> Dalsie detaily nepoviem lebo sa hanbim :) Otazka je ako napisat riadok 
>> fSymP = (float)dwSampleRate / 2375.0f; aby daval vzdy rovnaky 
>> vysledok. Kalkulacka mi hovori ze 228000/2375 je presne 96 napriek 
>> tomu je v fSymP 95.99998
>> 
>> j.
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list




Další informace o konferenci Hw-list