100 bool realflag =
true;
105 resname = wl->wl_word;
109 if (
eq(wl->wl_word,
"values")) {
110 if (
cmp_values(wl->wl_next,&length,&data,&cdata,&realflag))
121 fprintf(
cp_err,
"Error: step cannot = 0.0\n");
133 "Error: can have at most one of (lin, log, dec, random, gauss)\n");
146 "Error: either one of (lin, log, dec, random, gauss) must be given, or all\n");
148 "\tof (start, stop, and step) must be given.\n");
194 bool realflag =
isreal(v);
195 int i, j,
o, n,
t, u;
204 ncount[i] = ocount[i] = 0;
207 for (o = n = i = 0; i < dims; i++) {
208 for (j = i, t = u = 1; j < dims; j++) {
217 data[n] = v->v_realdata[o];
224 for (i = dims - 1; i >= 0; i--) {
225 if ((ocount[i] < v->v_dims[i] - 1) &&
226 (ncount[i] < newdims[i] - 1)) {
232 ocount[i] = ncount[i] = 0;
250 struct dvec *vec, *v;
251 int i, j, len, dim, blocksize, dims[
MAXDIMS];
269 fprintf(
cp_err,
"Error: max dimensionality is %d\n",
MAXDIMS);
288 "Error: all vectors must be of the same dimensionality\n");
295 for (i = 0; i < dim; i++) {
299 if (v->
v_dims[i] > dims[i])
305 for (i = 0, blocksize = 1; i < dim - 1; i++)
306 blocksize *= dims[i];
308 data = (
double *)
tmalloc(
sizeof (
double) * len * blocksize);
315 for (i = 0, dl = dl0; dl; dl = dl->
dl_next) {
335 dimxpand(v, dims, (rflg ? (data + i * blocksize) :
336 (
double *) (cdata + i * blocksize)));
362 if ((s = strchr(wl->wl_word,
'=')) && s[1]) {
369 else if (strchr(wl->wl_word,
'=')) {
379 fprintf(
cp_err,
"Error: bad syntax\n");
390 fprintf(
cp_err,
"Error: bad syntax\n");
400 fprintf(
cp_err,
"Error: bad syntax\n");
407 fprintf(
cp_err,
"Error: bad syntax\n");
412 if (
cieq(var,
"start")) {
419 else if (
cieq(var,
"stop")) {
426 else if (
cieq(var,
"step")) {
433 else if (
cieq(var,
"center")) {
440 else if (
cieq(var,
"span")) {
447 else if (
cieq(var,
"mean")) {
454 else if (
cieq(var,
"sd")) {
461 else if (
cieq(var,
"lin")) {
468 else if (
cieq(var,
"log")) {
475 else if (
cieq(var,
"dec")) {
482 else if (
cieq(var,
"gauss")) {
489 else if (
cieq(var,
"random")) {
496 else if (
cieq(var,
"pool")) {
503 fprintf(
cp_err,
"Error: bad parm %s = %s\n", var, val);
520 data = (
double *)
tmalloc(
sizeof (
double) * sc->lin);
522 if (sc->stepgiven && sc->startgiven && sc->stopgiven) {
524 (sc->stop - sc->start) / sc->lin * (sc->reverse ? -1 : 1)) {
525 fprintf(
cp_err,
"Warning: bad step -- should be %lg\n",
526 (sc->stop - sc->start) / sc->lin * (sc->reverse ? -1 : 1));
527 sc->stepgiven =
false;
530 if (!sc->startgiven) {
531 if (sc->stopgiven && sc->stepgiven) {
532 sc->start = sc->stop - sc->step * sc->lin;
534 else if (sc->stopgiven) {
535 sc->start = sc->stop - sc->lin;
540 sc->startgiven =
true;
542 if (!sc->stopgiven) {
544 sc->stop = sc->start + sc->lin * sc->step;
546 sc->stop = sc->start + sc->lin;
547 sc->stopgiven =
true;
549 if (!sc->stepgiven) {
550 sc->step = (sc->stop - sc->start) / sc->lin;
553 for (i = 0, tt = sc->stop; i < sc->
lin; i++, tt -= sc->step)
556 for (i = 0, tt = sc->start; i < sc->
lin; i++, tt += sc->step)
587 if (!sc->centergiven) {
589 sc->centergiven =
true;
591 if (!sc->spangiven) {
593 sc->spangiven =
true;
595 data = (
double *)
tmalloc(
sizeof (
double) * sc->randm);
596 for (i = 0; i < sc->randm; i++)
597 data[i] = (
xrandom() - 0.5)*sc->span + sc->center;
615 if (!sc->meangiven) {
617 sc->meangiven =
true;
624 data = (
double *)
tmalloc(
sizeof (
double) * sc->gauss);
625 for (i = 0; i < sc->gauss; i++)
626 data[i] =
xgauss()*sc->sd + sc->mean;
638 return ((random() & 0x7fffffff)/(0x7fffffff + 1.0));
652 double fac,
r, v1, v2;
661 fac = sqrt(-2.0*
log(r)/r);
struct dvlist * ft_dvlist()
struct pnode * ft_getpnames()
int bzero(char *ptr, int num)
void com_compose(wordlist *wl)
static bool cmp_linsweep()
static bool cmp_logsweep()