61 lines
560 B
C++
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
|