src/frontend/vectors.c, abstraction, introduce `vec_iszero()'
This commit is contained in:
parent
44425b1d0a
commit
e609c7411d
|
|
@ -299,9 +299,9 @@ ft_cpinit(void)
|
||||||
bool
|
bool
|
||||||
cp_istrue(wordlist *wl)
|
cp_istrue(wordlist *wl)
|
||||||
{
|
{
|
||||||
int i;
|
|
||||||
struct dvec *v;
|
struct dvec *v;
|
||||||
struct pnode *names;
|
struct pnode *names;
|
||||||
|
bool rv;
|
||||||
|
|
||||||
/* First do all the csh-type stuff here... */
|
/* First do all the csh-type stuff here... */
|
||||||
wl = wl_copy(wl);
|
wl = wl_copy(wl);
|
||||||
|
|
@ -314,24 +314,9 @@ cp_istrue(wordlist *wl)
|
||||||
|
|
||||||
v = ft_evaluate(names);
|
v = ft_evaluate(names);
|
||||||
|
|
||||||
for (; v; v = v->v_link2)
|
rv = !vec_iszero(v);
|
||||||
if (isreal(v)) {
|
|
||||||
for (i = 0; i < v->v_length; i++)
|
|
||||||
if (v->v_realdata[i] != 0.0) {
|
|
||||||
free_pnode(names);
|
|
||||||
return (TRUE);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
for (i = 0; i < v->v_length; i++)
|
|
||||||
if ((realpart(v->v_compdata[i]) != 0.0) ||
|
|
||||||
(imagpart(v->v_compdata[i]) != 0.0)) {
|
|
||||||
free_pnode(names);
|
|
||||||
return (TRUE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
free_pnode(names);
|
free_pnode(names);
|
||||||
return (FALSE);
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -883,6 +883,33 @@ vec_free_x(struct dvec *v)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* return TRUE if every vector element is zero
|
||||||
|
*/
|
||||||
|
|
||||||
|
bool
|
||||||
|
vec_iszero(struct dvec *v)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (; v; v = v->v_link2)
|
||||||
|
if (isreal(v))
|
||||||
|
for (i = 0; i < v->v_length; i++) {
|
||||||
|
if (v->v_realdata[i] != 0.0)
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
for (i = 0; i < v->v_length; i++) {
|
||||||
|
if (realpart(v->v_compdata[i]) != 0.0)
|
||||||
|
return FALSE;
|
||||||
|
if (imagpart(v->v_compdata[i]) != 0.0)
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* This is something we do in a few places... Since vectors get copied a lot,
|
/* This is something we do in a few places... Since vectors get copied a lot,
|
||||||
* we can't just compare pointers to tell if two vectors are 'really' the same.
|
* we can't just compare pointers to tell if two vectors are 'really' the same.
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -323,6 +323,7 @@ extern int ft_typnum(char *);
|
||||||
|
|
||||||
/* vectors.c */
|
/* vectors.c */
|
||||||
|
|
||||||
|
extern bool vec_iszero(struct dvec *v);
|
||||||
extern bool vec_eq(struct dvec *v1, struct dvec *v2);
|
extern bool vec_eq(struct dvec *v1, struct dvec *v2);
|
||||||
extern int plot_num;
|
extern int plot_num;
|
||||||
extern struct dvec *vec_fromplot(char *word, struct plot *plot);
|
extern struct dvec *vec_fromplot(char *word, struct plot *plot);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue