...
A kdyz zakomponuju overeni spravnosti do konstrukce navratoveho typu zarucim tim ze nepujde vytvorit navratovy typ obsahujici nespravny vysledek.
Huh?
Ano je to v podstate znovuimplementace jinak, ...
Asi tak.
Nekde tady byla otazka na kvadratickou rovnici.
Zkusim tu myslenku v te citaci ukazat na tom.
Podotykam moji myslenku z te citace a ne kompletne problem reseny v tomto vlakne.
BoneFlute se z toho osype, protoze to neni ani zdaleka to o cem mluvil on.
A taky protoze to bude v jazyce velmi podobnem jave :-)
Vlastne jedinny rozdil proti jave je, ze umi presne floating point operace.
final static RuntimeException up = new IllegalArgumentException("Does not compute");
private static Result getRoots(double a, double b, double c){
double detBody = b*b - 4*a*c;
if(detBody < 0){
throw new IllegalArgumentException("Fuck it! I don't have imaginary friends. " + detBody);
}
double det = Math.sqrt(detBody);
double root1 = (-b + det)/2*a;
double root2 = (-b - det)/2*a;
return new Result(a,b,c,root1,root2);
}
static class Result {
double root1; double root2;
Result (double a, double b, double c, double root1, double root2){
if(root1 + root2 != -(b/a) || root1*root2 != c/a) throw up;
this.root1 = root1;
this.root2 = root2;
}
}