From b9f353f966ffa48dd0179c3ab3eb73e9feb9940e Mon Sep 17 00:00:00 2001 From: Julian Weigt Date: Mon, 9 Feb 2026 13:46:33 +0100 Subject: Don't invoke pow if exponent is 1. Also write routine to compute exponentials by multiplication if the exponent is integer. --- double-error.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'double-error.c') 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); -- cgit v1.2.3