diff options
| -rw-r--r-- | double-error.c | 10 |
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); |
