mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-17 17:20:29 +02:00
(scm_divide): Correction to 1/complex and <any>/complex,
need to test abs(re)<abs(im) for choice of cases, otherwise divide by zero when re==0 and im<0. Reported by Jean Crepeau.
This commit is contained in:
parent
9147cd32d0
commit
1c9c30b6b2
1 changed files with 3 additions and 3 deletions
|
@ -3738,7 +3738,7 @@ scm_divide (SCM x, SCM y)
|
||||||
} else if (SCM_COMPLEXP (x)) {
|
} else if (SCM_COMPLEXP (x)) {
|
||||||
double r = SCM_COMPLEX_REAL (x);
|
double r = SCM_COMPLEX_REAL (x);
|
||||||
double i = SCM_COMPLEX_IMAG (x);
|
double i = SCM_COMPLEX_IMAG (x);
|
||||||
if (r <= i) {
|
if (fabs(r) <= fabs(i)) {
|
||||||
double t = r / i;
|
double t = r / i;
|
||||||
double d = i * (1.0 + t * t);
|
double d = i * (1.0 + t * t);
|
||||||
return scm_make_complex (t / d, -1.0 / d);
|
return scm_make_complex (t / d, -1.0 / d);
|
||||||
|
@ -3782,7 +3782,7 @@ scm_divide (SCM x, SCM y)
|
||||||
{
|
{
|
||||||
double r = SCM_COMPLEX_REAL (y);
|
double r = SCM_COMPLEX_REAL (y);
|
||||||
double i = SCM_COMPLEX_IMAG (y);
|
double i = SCM_COMPLEX_IMAG (y);
|
||||||
if (r <= i) {
|
if (fabs(r) <= fabs(i)) {
|
||||||
double t = r / i;
|
double t = r / i;
|
||||||
double d = i * (1.0 + t * t);
|
double d = i * (1.0 + t * t);
|
||||||
return scm_make_complex ((a * t) / d, -a / d);
|
return scm_make_complex ((a * t) / d, -a / d);
|
||||||
|
@ -3873,7 +3873,7 @@ scm_divide (SCM x, SCM y)
|
||||||
} else if (SCM_COMPLEXP (y)) {
|
} else if (SCM_COMPLEXP (y)) {
|
||||||
double ry = SCM_COMPLEX_REAL (y);
|
double ry = SCM_COMPLEX_REAL (y);
|
||||||
double iy = SCM_COMPLEX_IMAG (y);
|
double iy = SCM_COMPLEX_IMAG (y);
|
||||||
if (ry <= iy) {
|
if (fabs(ry) <= fabs(iy)) {
|
||||||
double t = ry / iy;
|
double t = ry / iy;
|
||||||
double d = iy * (1.0 + t * t);
|
double d = iy * (1.0 + t * t);
|
||||||
return scm_make_complex ((rx * t + ix) / d, (ix * t - rx) / d);
|
return scm_make_complex ((rx * t + ix) / d, (ix * t - rx) / d);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue