summaryrefslogtreecommitdiff
path: root/double-error.c
diff options
context:
space:
mode:
authorJulian Weigt <juw@posteo.de>2026-01-16 19:05:23 +0100
committerJulian Weigt <juw@posteo.de>2026-02-04 15:55:54 +0100
commit2d7d2f09189d57b47863d2ce89b6a450f4402681 (patch)
treee8ac8b38fe3125631d4e6f1be0c068b4600a5b1e /double-error.c
parenteefbfcdfc2f2374dcba95a62c31f3162e2247853 (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.c30
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;
}