*** empty log message ***

This commit is contained in:
George Weigt 2008-06-20 18:31:52 -07:00
parent c5ca0d1cf6
commit 37ac3fbb56
4 changed files with 0 additions and 244 deletions

View file

@ -63,7 +63,6 @@ condense.o \
conj.o \
cons.o \
contract.o \
convolution.o \
cos.o \
cosh.o \
data.o \

View file

@ -1,234 +0,0 @@
//-----------------------------------------------------------------------------
//
// Author : philippe.billet@noos.fr
//
// convolution product
//
// Input: tos-2 x (can be a symbol or expr)
//
// tos-1 y (can be a symbol or expr)
//
//
// Output: Result on stack
//
//-----------------------------------------------------------------------------
#include "stdafx.h"
#include "defs.h"
int h1, h2, h3, h4;
static void yconvolution(void);
void
eval_convolution(void)
{
push(cadr(p1));
eval();
push(caddr(p1));
eval();
convolution();
}
void
convolution(void)
{
save();
yconvolution();
restore();
}
#define X p1
#define Y p2
static void
yconvolution(void)
{
Y = pop();
X = pop();
push(Y);
guess();
p4=pop();
pop();
push(X);
guess();
p3=pop();
pop();
if (iszero(X) || iszero(Y)) {
push_integer(0);
return;
}
if (car(X) == symbol(DIRAC)) {
push(Y);
return;
}
if (car(Y) == symbol(DIRAC)) {
push(X);
return;
}
if (car(X) == symbol(DERIVATIVE)) {
push_symbol(CONVOLUTION);
push(cadr(X));
push(Y);
push(caddr(X));
derivative();
list(3);
return;
}
if (car(Y) == symbol(DERIVATIVE)) {
push_symbol(CONVOLUTION);
push(cadr(Y));
push(X);
push(caddr(Y));
derivative();
list(3);
return;
}
if (car(X) == symbol(ADD)) {
X = cdr(X);
push(car(X));
push(Y);
convolution();
X = cdr(X);
while (iscons(X)) {
push(car(X));
push(Y);
convolution();
add();
X = cdr(X);
}
return;
}
if (car(Y) == symbol(ADD)) {
Y = cdr(Y);
push(X);
push(car(Y));
convolution();
Y = cdr(Y);
while (iscons(Y)) {
push(X);
push(car(Y));
convolution();
add();
Y = cdr(Y);
}
return;
}
if (car(X) == symbol(MULTIPLY) && p3 == p4) {
h1 = tos;
p5 = cdr(X);
while (iscons(p5)) {
if (!find(car(p5), p3))
push(car(p5));
p5 = cdr(p5);
}
h2 = tos;
p5 = cdr(X);
while (iscons(p5)) {
if (find(car(p5), p3))
push(car(p5));
p5 = cdr(p5);
}
if (tos - h2 == 0) {
push(one);
push(Y);
convolution();}
else {
multiply_all(tos - h2);
X = pop();
push(X);
push(Y);
convolution();
}
multiply_all(tos - h1);
return;
}
if (car(Y) == symbol(MULTIPLY) && p3 == p4) {
h3 = tos;
p5 = cdr(Y);
while (iscons(p5)) {
if (!find(car(p5), p3))
push(car(p5));
p5 = cdr(p5);
}
h4 = tos;
p5 = cdr(Y);
while (iscons(p5)) {
if (find(car(p5), p3))
push(car(p5));
p5 = cdr(p5);
}
if (tos - h4 == 0) {
push(X);
push(one);
convolution();}
else {
multiply_all(tos - h4);
Y = pop();
push(X);
push(Y);
convolution();
}
multiply_all(tos - h3);
return;
}
// if (exp_flag) {
// push(X);
// fourier();
// push(Y);
// fourier();
// multiply();
// invfourier();
// return;
// }
push_symbol(CONVOLUTION);
push(X);
push(Y);
list(3);
return;
}
#if SELFTEST
static char *s[] = {
"convolution(dirac(x),f(x))",
"f(x)",
"eval(convolution(d(dirac(x),x),f(x)))",
"d(f(x),x)",
};
void
test_convolution(void)
{
test(__FILE__, s, sizeof s / sizeof (char *));
}
#endif

1
defs.h
View file

@ -136,7 +136,6 @@ enum {
LEGENDRE,
LOG,
MAG,
MEM,
MOD,
MULTIPLY,
NOT,

View file

@ -148,7 +148,6 @@ eval_cons(void)
case LEGENDRE: eval_legendre(); break;
case LOG: eval_log(); break;
case MAG: eval_mag(); break;
case MEM: eval_mem(); break;
case MOD: eval_mod(); break;
case MULTIPLY: eval_multiply(); break;
case NOT: eval_not(); break;
@ -399,13 +398,6 @@ eval_isinteger(void)
list(2);
}
void
eval_mem(void)
{
print_mem_info();
push(symbol(NIL));
}
void
eval_multiply(void)
{