// equal().
// General includes.
#include "cl_sysdep.h"
// Specification.
#include "cln/complex.h"
// Implementation.
#include "cl_C.h"
#include "cln/real.h"
namespace cln {
cl_boolean equal (const cl_N& x, const cl_N& y)
{
// Methode:
// Falls beide reell, klar.
// Falls x reell, y komplex: (= x (realpart y)) und (zerop (imagpart y)).
// Falls x komplex, y reell: analog
// Falls beide komplex: Realteile und Imaginärteile jeweils gleich?
if (realp(x)) {
DeclareType(cl_R,x);
if (realp(y)) {
DeclareType(cl_R,y);
// x,y beide reell
return equal(x,y);
} else {
DeclareType(cl_C,y);
// x reell, y komplex
if (!zerop(imagpart(y)))
return cl_false;
return equal(x,realpart(y));
}
} else {
DeclareType(cl_C,x);
if (realp(y)) {
DeclareType(cl_R,y);
// x komplex, y reell
if (!zerop(imagpart(x)))
return cl_false;
return equal(realpart(x),y);
} else {
DeclareType(cl_C,y);
// x,y beide komplex
if (!equal(realpart(x),realpart(y)))
return cl_false;
if (!equal(imagpart(x),imagpart(y)))
return cl_false;
return cl_true;
}
}
}
} // namespace cln
syntax highlighted by Code2HTML, v. 0.9.1