aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--double-error.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/double-error.c b/double-error.c
index 63c820f..5d08019 100644
--- a/double-error.c
+++ b/double-error.c
@@ -92,7 +92,17 @@ double_error absolute(double_error de){
return dea;
}
+double_error power_int(double_error de, double_error p){
+ if((int) p.v == 1) return de;
+
+ double_error pm = p;
+ pm.v--;
+ return product(power_int(de,pm),de);
+}
+
double_error power(double_error de, double_error p) {
+ //if(p.e == 0.0 && ((vtype) ((int) p.v) == p.v)) return power_int(de,p);
+ if(p.e == 0.0 && ((vtype) ((int) p.v) == p.v) && (int) p.v == 1) return de;
double_error dep;
dep.v = pow(de.v,p.v);
vtype dmin = (de.v - de.e)*(1-EPS);