-
Data: 2012-11-05 21:35:47
Temat: Re: Błędny epsilon - this is not a bug, this is ?
Od: Tomasz Sowa <t...@N...ttmath.org> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]On 2012.11.03 16:10, slawek wrote:
>> Bo popełniasz błąd który się propaguje w każdej iteracji
>> algorytmu.
>
> Nie ma błędu. Za każdym razem jest na nowo sprawdzanie 1.0+eps > 1.0,
> tj. pętla while(1.0 + eps > 1.0) {...}
a no, tak sądziłem, sprawdź poniższy program
#include <iostream>
#include <stdint.h>
#include <iomanip>
template<typename float_t, typename int_t>
float_t machine_eps()
{
union
{
float_t f;
int_t i;
} one, one_plus, little, last_little;
one.f = 1.0;
little.f = 1.0;
last_little.f = little.f;
while(true)
{
one_plus.f = one.f;
one_plus.f += little.f;
if( one.i != one_plus.i )
{
last_little.f = little.f;
little.f /= 2.0;
}
else
{
return last_little.f;
}
}
}
int main()
{
std::cout << "machine epsilon:\n";
std::cout << "float: " << std::setprecision(18)
<< machine_eps<float, uint32_t>() << std::endl;
std::cout << "double: " << std::setprecision(18)
<< machine_eps<double, uint64_t>() << std::endl;
}
/home/tomek/roboczy/test$ g++ -o test test.cpp && ./test
machine epsilon:
float: 1.1920928955078125e-07
double: 2.22044604925031308e-16
ale to oczywiście tylko aproksymacja
--
Tomek
http://www.ttmath.org
Następne wpisy z tego wątku
- 05.11.12 22:11 kenobi
- 06.11.12 00:16 slawek
- 06.11.12 00:19 Tomasz Sowa
- 06.11.12 00:53 Roman W
- 06.11.12 00:57 Roman W
- 06.11.12 03:28 bartekltg
- 06.11.12 06:35 Roman W
- 06.11.12 10:46 slawek
- 06.11.12 11:31 AK
- 06.11.12 11:43 Adam Wysocki
- 06.11.12 11:48 AK
- 06.11.12 11:50 Michoo
- 06.11.12 12:02 Michoo
- 06.11.12 12:05 AK
- 06.11.12 13:31 Roman W
Najnowsze wątki z tej grupy
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
Najnowsze wątki
- 2025-01-04 reverse engineering i dodawanie elementów do istniejących zamkniętych produktów- legalne?
- 2025-01-04 w Nowym Roku 2025r
- 2025-01-04 Warszawa => Specjalista ds. IT - II Linia Wsparcia <=
- 2025-01-04 Warszawa => Java Developer <=
- 2025-01-04 Warszawa => Spedytor Międzynarodowy <=
- 2025-01-04 Warszawa => System Architect (Java background) <=
- 2025-01-04 Wrocław => Application Security Engineer <=
- 2025-01-04 Chrzanów => Specjalista ds. public relations <=
- 2025-01-04 Katowice => Key Account Manager (ERP) <=
- 2025-01-03 Problem z odczytem karty CF
- 2025-01-03 Jazda z Warszawy do Krakowa teslą
- 2025-01-03 Wrocław => Konsultant Wdrożeniowy Comarch XL/Optima (Księgowość i
- 2025-01-03 Warszawa => International Freight Forwarder <=
- 2025-01-03 Mińsk Mazowiecki => Area Sales Manager OZE <=
- 2025-01-03 Warszawa => Spedytor Międzynarodowy <=