diff options
Diffstat (limited to 'double.c')
| -rw-r--r-- | double.c | 49 |
1 files changed, 28 insertions, 21 deletions
@@ -4,46 +4,53 @@ #include <stdio.h> #include <stdbool.h> -double int_to_valuetype(int i){ return (double) i; } +typedef long double vtype; +typedef long double etype; -double int_to_exptype(double d){ return d; } +vtype int_to_valuetype(int i){ return (vtype)i; } -double infinity_to_exptype(){ return INFINITY; } +etype int_to_exptype(int d){ return (etype)d; } -bool exptype_is_infinite(double d){ return d==INFINITY; } +etype infinity_to_exptype(){ return INFINITY; } -double sum(double d1, double d2){ return d1+d2; } +bool exptype_is_infinite(etype d){ return d==INFINITY; } -double difference(double d1, double d2){ return d1-d2; } +vtype sum(vtype d1, vtype d2){ return d1+d2; } -bool is_greater_certainly(double d1, double d2){ return (d1 > d2); } +vtype difference(vtype d1, vtype d2){ return d1-d2; } -bool is_greater_possibly(double d1, double d2){ return is_greater_certainly(d1,d2); } +bool is_greater_certainly(vtype d1, vtype d2){ return (d1 > d2); } -double maximum(double d1, double d2){ +bool is_greater_possibly(vtype d1, vtype d2){ return is_greater_certainly(d1,d2); } + +vtype maximum(vtype d1, vtype d2){ if(d1>d2) return d1; else return d2; } -double product(double d1, double d2){ return d1*d2; } +vtype product(vtype d1, vtype d2){ return d1*d2; } -double ratio(double d1, double d2){ return d1/d2; } +vtype ratio(vtype d1, vtype d2){ return d1/d2; } -double absolute(double d){ return fabs(d); } +vtype absolute(vtype d){ + //return fabs(d); + return fabsl(d); +} -double power(double d, double p) { return pow(d,p); } +vtype power(vtype d, vtype p) { return pow(d,p); } -double valuetype_to_double(double d){ return d; } +double valuetype_to_double(vtype d){ return (double)d; } -int valuetype_to_string(char* s, double d){ +int valuetype_to_string(char* s, vtype d){ if( d == 0.0 || d == 1.0 || d == 2.0 || d == 4.0 || d == 8.0 || d == 16.0 ) sprintf(s,"%d", (int)d); - else sprintf(s,"%4.3f",d); + //else sprintf(s,"%4.3f",d); + else sprintf(s,"%4.3Lf",d); return 0; } -int valuetype_to_latex(char* s, double d){ return valuetype_to_string(s,d); } +int valuetype_to_latex(char* s, vtype d){ return valuetype_to_string(s,d); } -int exptype_to_string(char *s, double p){ +int exptype_to_string(char *s, etype p){ if(exptype_is_infinite(p)){ sprintf(s,"inf"); return 0; @@ -51,7 +58,7 @@ int exptype_to_string(char *s, double p){ else return valuetype_to_string(s,p); } -int exptype_to_latex(char *s, double p){ +int exptype_to_latex(char *s, etype p){ if(exptype_is_infinite(p)){ sprintf(s,"\\infty"); return 0; @@ -59,13 +66,13 @@ int exptype_to_latex(char *s, double p){ else return valuetype_to_latex(s,p); } -int root_to_string(char* s, double d, double p){ +int root_to_string(char* s, vtype d, etype p){ if(exptype_is_infinite(p)) valuetype_to_string(s,d); else valuetype_to_string(s,pow(d,1.0/p)); return 0; } -int root_to_latex(char* s, double d, double p){ +int root_to_latex(char* s, vtype d, etype p){ if(exptype_is_infinite(p)) valuetype_to_latex(s,d); else valuetype_to_latex(s,pow(d,1.0/p)); return 0; |
