From 2d7d2f09189d57b47863d2ce89b6a450f4402681 Mon Sep 17 00:00:00 2001 From: Julian Weigt Date: Fri, 16 Jan 2026 19:05:23 +0100 Subject: Finish all printing including latex and niceties for printing 0 and 1 and such. --- double-error.c | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) (limited to 'double-error.c') 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; } -- cgit v1.2.3