#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
double L[][3] = {
{10, 10, 10},
{-3, 4, 2},
{100000, 99999.99979, 0.00029},
{100000, 100000, 1.00005},
{99999.99996, 99999.99994, 0.00003},
{99999.99996, 0.00003, 99999.99994},
{10000, 5000.000001, 15000},
{99999.99999, 99999.99999, 200000},
{5278.64055, 94721.35941, 99999.99996},
{100002, 100002, 200004},
{31622.77662, 0.000023, 31622.77661},
{31622.77662, 0.0155555, 31622.77661}
};
int main(void)
{
for (auto l : L) {
double &a = l[0], &b = l[1], &c = l[2];
double s, A;
printf("(a, b, c) = (%.15g, %.15g, %.15g)\n", a, b, c);
s = (a + b + c) / 2;
A = sqrt(s * (s - a) * (s - b) * (s - c));
printf(" Heron's Δ' = %.15g\n", A);
sort(l, l + 3, [](double x, double y) {return x > y;});
A = sqrt((a + (b + c)) * (c - (a - b)) * (c + (a - b)) * (a + (b - c))) / 4;
if (c < a - b) A = NAN;
printf(" Accurate Δ = %.15g\n\n", A);
}
return 0;
}
I2luY2x1ZGUgPGNzdGRpbz4KI2luY2x1ZGUgPGNtYXRoPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmRvdWJsZSBMW11bM10gPSB7CiAgICB7MTAsICAgICAgICAgIDEwLCAgICAgICAgICAxMH0sCiAgICB7LTMsICAgICAgICAgIDQsICAgICAgICAgICAyfSwKICAgIHsxMDAwMDAsICAgICAgOTk5OTkuOTk5NzksIDAuMDAwMjl9LAogICAgezEwMDAwMCwgICAgICAxMDAwMDAsICAgICAgMS4wMDAwNX0sCiAgICB7OTk5OTkuOTk5OTYsIDk5OTk5Ljk5OTk0LCAwLjAwMDAzfSwKICAgIHs5OTk5OS45OTk5NiwgMC4wMDAwMywgICAgIDk5OTk5Ljk5OTk0fSwKICAgIHsxMDAwMCwgICAgICAgNTAwMC4wMDAwMDEsIDE1MDAwfSwKICAgIHs5OTk5OS45OTk5OSwgOTk5OTkuOTk5OTksIDIwMDAwMH0sCiAgICB7NTI3OC42NDA1NSwgIDk0NzIxLjM1OTQxLCA5OTk5OS45OTk5Nn0sCiAgICB7MTAwMDAyLCAgICAgIDEwMDAwMiwgICAgICAyMDAwMDR9LAogICAgezMxNjIyLjc3NjYyLCAwLjAwMDAyMywgICAgMzE2MjIuNzc2NjF9LAogICAgezMxNjIyLjc3NjYyLCAwLjAxNTU1NTUsICAgMzE2MjIuNzc2NjF9Cn07CgppbnQgbWFpbih2b2lkKQp7CiAgICBmb3IgKGF1dG8gbCA6IEwpIHsKICAgICAgICBkb3VibGUgJmEgPSBsWzBdLCAmYiA9IGxbMV0sICZjID0gbFsyXTsKICAgICAgICBkb3VibGUgcywgQTsKCiAgICAgICAgcHJpbnRmKCIoYSwgYiwgYykgPSAoJS4xNWcsICUuMTVnLCAlLjE1ZylcbiIsIGEsIGIsIGMpOwogICAgICAgIHMgPSAoYSArIGIgKyBjKSAvIDI7CiAgICAgICAgQSA9IHNxcnQocyAqIChzIC0gYSkgKiAocyAtIGIpICogKHMgLSBjKSk7CiAgICAgICAgcHJpbnRmKCIgICAgSGVyb24ncyDOlCcgPSAlLjE1Z1xuIiwgQSk7CgogICAgICAgIHNvcnQobCwgbCArIDMsIFtdKGRvdWJsZSB4LCBkb3VibGUgeSkge3JldHVybiB4ID4geTt9KTsKICAgICAgICBBID0gc3FydCgoYSArIChiICsgYykpICogKGMgLSAoYSAtIGIpKSAqIChjICsgKGEgLSBiKSkgKiAoYSArIChiIC0gYykpKSAvIDQ7CiAgICAgICAgaWYgKGMgPCBhIC0gYikgQSA9IE5BTjsKICAgICAgICBwcmludGYoIiAgICBBY2N1cmF0ZSDOlCA9ICUuMTVnXG5cbiIsIEEpOwogICAgfQoKICAgIHJldHVybiAwOwp9
(a, b, c) = (10, 10, 10)
Heron's Δ' = 43.3012701892219
Accurate Δ = 43.3012701892219
(a, b, c) = (-3, 4, 2)
Heron's Δ' = 2.90473750965556
Accurate Δ = nan
(a, b, c) = (100000, 99999.99979, 0.00029)
Heron's Δ' = 9.99999980963833
Accurate Δ = 10.000000077021
(a, b, c) = (100000, 100000, 1.00005)
Heron's Δ' = 50002.4999994937
Accurate Δ = 50002.4999993749
(a, b, c) = (99999.99996, 99999.99994, 3e-05)
Heron's Δ' = 1.11803339051302
Accurate Δ = 1.1180336853952
(a, b, c) = (99999.99996, 3e-05, 99999.99994)
Heron's Δ' = 1.11803339051302
Accurate Δ = 1.1180336853952
(a, b, c) = (10000, 5000.000001, 15000)
Heron's Δ' = 612.372539376284
Accurate Δ = 612.372539376284
(a, b, c) = (99999.99999, 99999.99999, 200000)
Heron's Δ' = -nan
Accurate Δ = nan
(a, b, c) = (5278.64055, 94721.35941, 99999.99996)
Heron's Δ' = 0
Accurate Δ = 9.53674324543714
(a, b, c) = (100002, 100002, 200004)
Heron's Δ' = 0
Accurate Δ = 0
(a, b, c) = (31622.77662, 2.3e-05, 31622.77661)
Heron's Δ' = 0.327490532778257
Accurate Δ = 0.327490459942624
(a, b, c) = (31622.77662, 0.0155555, 31622.77661)
Heron's Δ' = 245.95399996792
Accurate Δ = 245.953999994805