diff options
| author | Julian Weigt <juw@posteo.de> | 2026-01-16 19:05:23 +0100 |
|---|---|---|
| committer | Julian Weigt <juw@posteo.de> | 2026-02-04 15:55:54 +0100 |
| commit | 2d7d2f09189d57b47863d2ce89b6a450f4402681 (patch) | |
| tree | e8ac8b38fe3125631d4e6f1be0c068b4600a5b1e /double-error.c | |
| parent | eefbfcdfc2f2374dcba95a62c31f3162e2247853 (diff) | |
Finish all printing including latex and niceties for printing 0 and 1 and such.
Diffstat (limited to 'double-error.c')
| -rw-r--r-- | double-error.c | 30 |
1 files changed, 23 insertions, 7 deletions
diff --git a/double-error.c b/double-error.c index fa6db67..86f8f69 100644 --- a/double-error.c +++ b/double-error.c @@ -11,7 +11,8 @@ typedef struct {double v; double e;} double_error; double_error int_to_valuetype(int i){ double_error de; de.v = (double) i; - de.e = EPS*abs(i); + if(abs(i) < 9999999) de.e = 0.0; + else de.e = EPS*abs(i); return de; } @@ -22,11 +23,6 @@ double_error int_to_exptype(double d){ return de; } -int to_string(char* s, double_error de){ - sprintf(s,"%f… +/- %6.1e",de.v,de.e); - return 0; -} - double_error sum(double_error de1, double_error de2){ double_error de; de.v = de1.v + de2.v; @@ -116,8 +112,28 @@ double valuetype_to_double(double_error de){ return de.v; } double inv_exptype_to_double(double_error de){ return 1.0/de.v; } +int valuetype_to_string(char* s, double_error de){ + sprintf(s,"%f… +/- %6.1e",de.v,de.e); + return 0; +} + +int valuetype_to_latex(char* s, double_error de){ + if(de.e == 0.0){ + if(de.v == 0.0) sprintf(s,"$0$"); + else if(de.v == 1.0) sprintf(s,"$1$"); + } + else sprintf(s,"$%4.3f\\ldots\\pm\\texttt{%1.0e}$",de.v,de.e); + return 0; +} + int root_to_string(char* s, double_error de, double_error p){ double_error de1p = power(de,ratio(int_to_valuetype(1),p)); - to_string(s,de1p); + valuetype_to_string(s,de1p); + return 0; +} + +int root_to_latex(char* s, double_error de, double_error p){ + double_error de1p = power(de,ratio(int_to_valuetype(1),p)); + valuetype_to_latex(s,de1p); return 0; } |
