Eigenmath/real.cpp

61 lines
560 B
C++

/* Returns the real part of complex z
z real(z)
- -------
a + i b a
exp(i a) cos(a)
*/
#include "stdafx.h"
#include "defs.h"
void
eval_real(void)
{
push(cadr(p1));
eval();
real();
}
void
real(void)
{
save();
rect();
p1 = pop();
push(p1);
push(p1);
conjugate();
add();
push_integer(2);
divide();
restore();
}
#if SELFTEST
static char *s[] = {
"real(a+i*b)",
"a",
"real(1+exp(i*pi/3))",
"3/2",
"real(i)",
"0",
"real((-1)^(1/3))",
"1/2",
};
void
test_real(void)
{
test(__FILE__, s, sizeof s / sizeof (char *));
}
#endif