[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
`angle' implementation
From: |
Martin Grabmueller |
Subject: |
`angle' implementation |
Date: |
Tue, 03 Jul 2001 17:57:46 +0200 |
This not so important, but is there any reason why `angle' is
implemented like this:
SCM
scm_angle (SCM z)
{
if (SCM_INUMP (z)) {
if (SCM_INUM (z) >= 0) {
return scm_make_real (atan2 (0.0, 1.0));
} else {
return scm_make_real (atan2 (0.0, -1.0));
}
} else if (SCM_BIGP (z)) {
if (SCM_BIGSIGN (z)) {
return scm_make_real (atan2 (0.0, -1.0));
} else {
return scm_make_real (atan2 (0.0, 1.0));
}
} else if (SCM_REALP (z)) {
return scm_make_real (atan2 (0.0, SCM_REAL_VALUE (z)));
} else if (SCM_COMPLEXP (z)) {
return scm_make_real (atan2 (SCM_COMPLEX_IMAG (z),
SCM_COMPLEX_REAL (z)));
} else {
SCM_WTA_DISPATCH_1 (g_angle, z, SCM_ARG1, s_angle);
}
}
instead of this:
SCM
scm_angle (SCM z)
{
if (SCM_INUMP (z)) {
if (SCM_INUM (z) >= 0) {
return scm_make_real (0.0);
} else {
return scm_make_real (M_PI);
}
} else if (SCM_BIGP (z)) {
if (SCM_BIGSIGN (z)) {
return scm_make_real (M_PI);
} else {
return scm_make_real (0.0);
}
} else if (SCM_REALP (z)) {
if (SCM_REAL_VALUE (z) >= 0) {
return scm_make_real (0.0);
} else {
return scm_make_real (M_PI);
}
} else if (SCM_COMPLEXP (z)) {
return scm_make_real (atan2 (SCM_COMPLEX_IMAG (z),
SCM_COMPLEX_REAL (z)));
} else {
SCM_WTA_DISPATCH_1 (g_angle, z, SCM_ARG1, s_angle);
}
}
Regards,
'martin
- `angle' implementation,
Martin Grabmueller <=