Svobodný citační manažer Zotero (Wikipedie, GitHub) byl vydán v nové major verzi 8. Přehled novinek v příspěvku na blogu.
Byla vydána verze 1.93.0 programovacího jazyka Rust (Wikipedie). Podrobnosti v poznámkách k vydání. Vyzkoušet Rust lze například na stránce Rust by Example.
Svobodný operační systém ReactOS (Wikipedie), jehož cílem je kompletní binární kompatibilita s aplikacemi a ovladači pro Windows, slaví 30. narozeniny.
Společnost Raspberry Pi má nově v nabídce flash disky Raspberry Pi Flash Drive: 128 GB za 30 dolarů a 256 GB za 55 dolarů.
Technologie Skip pro multiplatformní mobilní vývoj, která umožňuje vývojářům vytvářet iOS a Android aplikace z jediné Swift a SwiftUI kódové základny, se s vydáním verze 1.7 stala open source.
Na GitHubu byl zveřejněn algoritmus "Pro vás" sociální sítě 𝕏.
Byla vydána nová major verze 34.0.0 webového prohlížeče Pale Moon (Wikipedie) vycházejícího z Firefoxu. Přehled novinek v poznámkách k vydání.
Win8DE je desktopové prostředí pro Wayland, inspirované nechvalně proslulým uživatelským rozhraním Metro z Windows 8. Nabízí dlaždicové rozhraní s velkými tlačítky a jednoduchou navigací, optimalizované pro dotyková zařízení. Cílem projektu je přetvořit design operačního systému Windows 8 do funkčního a minimalistického rozhraní vhodného pro každodenní použití na Linuxu.
Laboratoře CZ.NIC vydaly Datovku 4.28.0 a Mobilní Datovku 2.6.0. Hlavní novinkou je ukládání rozpracovaných datových zpráv do konceptů. Datovka je svobodné multiplatformní aplikace pro přístup k datovým schránkám a k trvalému uchovávání datových zpráv v lokální databázi.
Unix Pipe Game je vzdělávací karetní hra zaměřená na děti a rodiče, která děti učí používat unixové příkazy prostřednictvím interaktivních úkolů. Klíčovým prvkem hry je využití symbolu | pro pipeline neboli 'rouru', který umožňuje propojit výstupy a vstupy jednotlivých unixových příkazů, v tomto případě vytištěných na kartičkách. Předpokládá se, že rodič má alespoň nějaké povědomí o unixových příkazech a jejich provazování pomocí |.
… více »Jakožto dlouholetý uživatel Gentoo jsem několikrát odolával pokušení vykašlat se na poučku, která je vidět na každém kroku, a to že není dobrý nápad dát do CFLAGS -O3. Při psaní úlohy do předmětu počítačové fyziky jsem vlastně omylem narazil na to, že je velmi jednoduché uvědomit si, že to opravdu není dobrý nápad.
Psal jsem jakousi iterační metodu řešení čehosi a byl jsem líný čekat na výsledek, tak jsem si řekl, že od čeho má kompilátor optimalizace a tak si řeknu o rychlost vcuku letu a sáhnu po -O3. Jaké bylo mé překvapení, když hned po několika málo stech iterací se výsledek evidentně odtahoval od správného řešení více a více.
Jelikož onen algoritmus byl poněkud komplikovaný, říkal jsem si, že chyba nemusí být na straně kompilátoru, ale mé, a tak jsem si napsal to nejjednodušší, co mne v tu chvíli napadlo, a to integrování přes lichoběžníčky. Zvolil jsem integrál funkce sin(x) od nuly do pí, jelikož je to super pěkná fce a analytické řešení tohoto integrálu je opravdu triviální.
Zkusil jsem nechat počítat tento integrál s různými délkami kroku (záporné mocniny 10) s různými stupněmi optimalizace a porovnat výsledné chyby. Zatímco s přepínači -g, -O1 i -O2 dává program totožné výsledky jako bez přepínačů a chyba se chová dle očekávání — nejdříve vcelku prudce klesne a když se dostane do popředí zaokrouhlovací chyba, ak zase začne růst, tak s přepínačem -O3 vcelku systematicky roste překvapivě vysoko.
Pro ilustraci přikládám testovací prográmek ve stavu, jenž jsem použil, a graf chyby od analytického řešení (v logaritmické škále). Použitá verze gcc byla gcc version 4.1.2 (Gentoo 4.1.2 p1.0.2).
Už nikdy nezapomenu na -Wall.Už nikdy nezapomenu na -Wall.Už nikdy nezapomenu na -Wall.Už nikdy nezapomenu na -Wall.
Tiskni
Sdílej:
)
Btw. k dokonalosti zápisku chybí ještě informace o tom, proč k té chybě dojde...
-Wstrict-overflow.
- double retval; + double retval = 0;Nechápem prečo ste ignorovali varovanie kompilátora.
Po této opravě vše dává vcelku stejné výsledky.
CFLAGS nemá na chování gcc jako takového žádný vliv. To je záležitost make nebo makefilů.
A teď vážně... No -O3 je prostě více náchylné na projevení nějaké chyby, která se při nižších -O neprojeví (viz třeba zde prezentované nevynulování používané proměnné). Takže s -O3 je větší šance, že se u tebe projeví více chyb.