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