32 cx_and(data1, data2, datatype1, datatype2, length)
35 short datatype1, datatype2;
37 double *dd1 = (
double *) data1;
38 double *dd2 = (
double *) data2;
47 for (i = 0; i < length; i++)
48 d[i] = dd1[i] && dd2[i];
51 for (i = 0; i < length; i++) {
77 cx_or(data1, data2, datatype1, datatype2, length)
80 short datatype1, datatype2;
82 double *dd1 = (
double *) data1;
83 double *dd2 = (
double *) data2;
92 for (i = 0; i < length; i++)
93 d[i] = dd1[i] || dd2[i];
96 for (i = 0; i < length; i++) {
131 double *dd = (
double *) data;
139 for (i = 0; i < length; i++) {
146 for (i = 0; i < length; i++)
171 struct
plot *pl, *newpl;
173 struct dvec *ns, *os;
176 register int i, oincreasing = 1, nincreasing = 1;
181 fprintf(
cp_err,
"Internal error: cx_interpolate: bad scale\n");
187 fprintf(
cp_err,
"Error: new scale has complex data\n");
200 fprintf(
cp_err,
"Error: old scale has complex data\n");
214 fprintf(
cp_err,
"Error: lengths don't match\n");
218 fprintf(
cp_err,
"Error: argument has complex data\n");
229 for (i = 0; i < os->
v_length - 1; i++)
232 fprintf(
cp_err,
"Error: old scale not monotonic\n");
239 for (i = 0; i < ns->
v_length - 1; i++)
242 fprintf(
cp_err,
"Error: new scale not monotonic\n");
270 struct
plot *pl, *newpl;
281 fprintf(
cp_err,
"Internal error: cx_deriv: bad scale\n");
291 scratch =
alloc_d(n * (n + 1));
298 double *r_coefs, *i_coefs;
305 for (i = degree; i < length; i += 1) {
308 for (j = i; j < i + n; j++)
309 spare[j] = c_indata[j].
cx_real;
311 r_coefs, degree, scratch)) {
312 fprintf(stderr,
"ft_polyfit @ %d failed\n", i);
317 for (j = k; j <= i + degree / 2; j++) {
323 for (j = i; j < i + n; j++)
324 spare[j] = c_indata[j].
cx_imag;
326 i_coefs, degree, scratch)) {
327 fprintf(stderr,
"ft_polyfit @ %d failed\n", i);
332 for (j = k; j <= i - degree / 2; j++) {
340 for (j = k; j < length; j++) {
350 return (
char *) c_outdata;
358 double *outdata, *indata;
362 indata = (
double *) data;
365 for (i = 0; i < length; i++)
368 for (i = degree; i < length; i += 1) {
369 if (!
ft_polyfit(scale + i - degree, indata + i - degree,
370 coefs, degree, scratch)) {
371 fprintf(stderr,
"ft_polyfit @ %d failed\n", i);
376 for (j = k; j <= i - degree / 2; j++) {
378 outdata[j] =
ft_peval(x, coefs, degree - 1);
383 for (j = k; j < length; j++) {
385 outdata[j] =
ft_peval(x, coefs, degree - 1);
390 return (
char *) outdata;
404 for (i = 0; i < degree; i++) {
405 coeffs[i] = (i + 1) * coeffs[i + 1];
bool cp_getvar(char *n, int t, char *r)
char * cx_or(char *data1, char *data2, short datatype1, short datatype2, length)
char * cx_and(char *data1, char *data2, short datatype1, short datatype2, length)
char * cx_deriv(char *data, short type, int length, int *newlength, short *newtype, struct plot *pl, struct plot *newpl)
char * cx_not(char *data, short type, int length, int *newlength, short *newtype)
char * cx_interpolate(char *data, short type, int length, int *newlength, short *newtype, struct plot *pl, struct plot *newpl)