*** empty log message ***

This commit is contained in:
George Weigt 2007-08-25 10:04:21 -07:00
parent ddb92ef43e
commit 5ef9227e3f
9 changed files with 81 additions and 43 deletions

View file

@ -38,7 +38,7 @@ qadd.o qsub.o qmul.o qdiv.o qpow.o \
sin.o cos.o tan.o arcsin.o arccos.o arctan.o \
sinh.o cosh.o tanh.o arcsinh.o arccosh.o arctanh.o \
abs.o mod.o roots.o eigen.o simplify.o for.o isprime.o index.o zero.o \
rationalize.o lcm.o floor.o ceiling.o condense.o userfunc.o find.o \
rationalize.o lcm.o floor.o ceiling.o condense.o userfunc.o find.o conj.o \
init.o primetab.o bignum.o symbol.o run.o atomize.o pollard.o outer.o inner.o \
is.o clear.o expcos.o expsin.o coeff.o log.o append.o list.o cons.o guess.o \
main.o misc.o data.o alloc.o stack.o scan.o print.o eval.o subst.o gcd.o \

View file

@ -1,6 +1,13 @@
// clock(z) = mag(z) * (-1) ^ (arg(z) / pi)
/* Convert complex z to clock form
// For example clock(exp(i pi/3)) gives the result (-1)^(1/3)
Input: push z
Output: Result on stack
clock(z) = mag(z) * (-1) ^ (arg(z) / pi)
For example, clock(exp(i pi/3)) gives the result (-1)^(1/3)
*/
#include "stdafx.h"
#include "defs.h"

30
conj.cpp Normal file
View file

@ -0,0 +1,30 @@
// Complex conjugate
#include "stdafx.h"
#include "defs.h"
void
eval_conj(void)
{
push(cadr(p1));
eval();
p1 = pop();
push(p1);
if (!find(p1, imaginaryunit)) { // example: (-1)^(1/3)
polar();
conjugate();
yyclock();
} else
conjugate();
}
void
conjugate(void)
{
push(imaginaryunit);
push(imaginaryunit);
negate();
subst();
eval();
}

View file

@ -242,18 +242,6 @@ eval_check(void)
push(symbol(NIL)); // no result is printed
}
void
eval_conj(void)
{
push(cadr(p1));
eval();
p1 = pop();
push(p1);
if (!find(p1, imaginaryunit)) // example: (-1)^(1/3)
rect();
conjugate();
}
void
eval_det(void)
{
@ -528,16 +516,6 @@ eval_operator(void)
list(tos - h);
}
void
eval_power(void)
{
push(cadr(p1));
eval();
push(caddr(p1));
eval();
power();
}
void
eval_print(void)
{

View file

@ -228,16 +228,6 @@ ssqrt(void)
power();
}
void
conjugate(void)
{
push(imaginaryunit);
push(imaginaryunit);
negate();
subst();
eval();
}
void
expand(void)
{

View file

@ -1,4 +1,11 @@
// polar(z) = mag(z) * exp(i * arg(z))
/* Convert complex z to polar form
Input: push z
Output: Result on stack
polar(z) = mag(z) * exp(i * arg(z))
*/
#include "stdafx.h"
#include "defs.h"
@ -8,6 +15,13 @@ eval_polar(void)
{
push(cadr(p1));
eval();
polar();
}
void
polar(void)
{
save();
p1 = pop();
push(p1);
mag();
@ -17,6 +31,7 @@ eval_polar(void)
multiply();
exponential();
multiply();
restore();
}
#if SELFTEST

View file

@ -1,8 +1,8 @@
/* Symbolic power function
/* Power function
Input: tos-2 Base
Input: push Base
tos-1 Exponent
push Exponent
Output: Result on stack
*/
@ -10,6 +10,16 @@
#include "stdafx.h"
#include "defs.h"
void
eval_power(void)
{
push(cadr(p1));
eval();
push(caddr(p1));
eval();
power();
}
void
power(void)
{

View file

@ -188,6 +188,10 @@ void Condense(void);
void yycondense(void);
void test_condense(void);
// conj.cpp
void eval_conj(void);
void conjugate(void);
// cons.cpp
void cons(void);
@ -349,7 +353,6 @@ void eval(void);
void eval_sym(void);
void eval_cons(void);
void eval_check(void);
void eval_conj(void);
void eval_det(void);
void eval_dim(void);
void eval_divisors(void);
@ -372,7 +375,6 @@ void eval_mem(void);
void eval_multiply(void);
void eval_number(void);
void eval_operator(void);
void eval_power(void);
void eval_print(void);
void eval_quote(void);
void eval_rank(void);
@ -624,7 +626,6 @@ int length(U *p);
U * unique(U *p);
void check_endianess(void);
void ssqrt(void);
void conjugate(void);
void expand(void);
void exponential(void);
void square(void);
@ -701,6 +702,7 @@ void partition(void);
// polar.cpp
void eval_polar(void);
void polar(void);
void test_polar(void);
// pollard.cpp
@ -710,6 +712,7 @@ void test_factor_integer_f(int len, int count);
void test_factor_integer(void);
// power.cpp
void eval_power(void);
void power(void);
void yypower(void);
void power_sum(int n);

View file

@ -1,4 +1,9 @@
// Return complex z in rectangular form
/* Convert complex z to rectangular form
Input: push z
Output: Result on stack
*/
#include "stdafx.h"
#include "defs.h"