diff options
author | torset | 2009-02-05 13:25:16 +0000 |
---|---|---|
committer | torset | 2009-02-05 13:25:16 +0000 |
commit | e102a4458307077ff5b05f5de6df5a5d2c517724 (patch) | |
tree | 36304df27e7db86b4b86d202c60feb338d960d1b /src | |
parent | 7e7df6ec419bfcb7d5dc97dc4af973b6ea5c2c09 (diff) | |
download | scilab2c-e102a4458307077ff5b05f5de6df5a5d2c517724.tar.gz scilab2c-e102a4458307077ff5b05f5de6df5a5d2c517724.tar.bz2 scilab2c-e102a4458307077ff5b05f5de6df5a5d2c517724.zip |
Add complex pow exception : z=0
Diffstat (limited to 'src')
-rw-r--r-- | src/elementaryFunctions/pow/cpows.c | 11 | ||||
-rw-r--r-- | src/elementaryFunctions/pow/zpows.c | 9 |
2 files changed, 19 insertions, 1 deletions
diff --git a/src/elementaryFunctions/pow/cpows.c b/src/elementaryFunctions/pow/cpows.c index 87392706..5848c4b5 100644 --- a/src/elementaryFunctions/pow/cpows.c +++ b/src/elementaryFunctions/pow/cpows.c @@ -15,5 +15,14 @@ #include "log.h" floatComplex cpows(floatComplex z, floatComplex power) { - return cexps(cmuls(clogs(z), power)); + /*Cas z=0 */ + if ( (creals(z)==0) && (cimags(z)==0) ){ + /* Cas 0^0 */ + if ( (creals(power)==0) && (cimags(power)==0) ) return FloatComplex(1,0); + /* Cas 0^x, x!=0 */ + return FloatComplex(0,0); + } + + /* Cas z!=0 */ + return cexps(cmuls(clogs(z), power)); } diff --git a/src/elementaryFunctions/pow/zpows.c b/src/elementaryFunctions/pow/zpows.c index cc532090..1a7059b2 100644 --- a/src/elementaryFunctions/pow/zpows.c +++ b/src/elementaryFunctions/pow/zpows.c @@ -15,5 +15,14 @@ #include "exp.h" doubleComplex zpows(doubleComplex z, doubleComplex power) { + /*Cas z=0 */ + if ( (zreals(z)==0) && (zimags(z)==0) ){ + /* Cas 0^0 */ + if ( (zreals(power)==0) && (zimags(power)==0) ) return DoubleComplex(1,0); + /* Cas 0^x, x!=0 */ + return DoubleComplex(0,0); + } + + /* Cas z!=0 */ return zexps(zmuls(zlogs(z), power)); } |