Skip to content

Instantly share code, notes, and snippets.

@stanislaw
Created November 14, 2017 23:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save stanislaw/27a26fa312762a76abcd9fafead39d8f to your computer and use it in GitHub Desktop.
Save stanislaw/27a26fa312762a76abcd9fafead39d8f to your computer and use it in GitHub Desktop.
_DEFUN(run_vector_1,(vector, p, func, name, args),
int vector _AND
one_line_type *p _AND
char *func _AND
char *name _AND
char *args)
{
FILE *f;
int mag;
double result;
if (vector)
{
VECOPEN(name, f);
if (redo)
{
double k;
for (k = -.2; k < .2; k+= 0.00132)
{
fprintf(f,"{1,1, 1,1, 0,0,0x%08x,0x%08x, 0x%08x, 0x%08x},\n",
k,k+4);
}
for (k = -1.2; k < 1.2; k+= 0.01)
{
fprintf(f,"{1,1, 1,1, 0,0,0x%08x,0x%08x, 0x%08x, 0x%08x},\n",
k,k+4);
}
for (k = -M_PI *2; k < M_PI *2; k+= M_PI/2)
{
fprintf(f,"{1,1, 1,1, 0,0,0x%08x,0x%08x, 0x%08x, 0x%08x},\n",
k,k+4);
}
for (k = -30; k < 30; k+= 1.7)
{
fprintf(f,"{2,2, 1,1, 0,0, 0x%08x,0x%08x, 0x%08x, 0x%08x},\n",
k,k+4);
}
VECCLOSE(f, name, args);
return;
}
}
newfunc(name);
while (p->line)
{
double arg1 = thedouble(p->qs[1].msw, p->qs[1].lsw);
double arg2 = thedouble(p->qs[2].msw, p->qs[2].lsw);
double r;
double rf;
errno = 0;
merror = 0;
mname = 0;
line(p->line);
merror = 0;
errno = 123;
if (strcmp(args,"dd")==0)
{
typedef double _EXFUN((*pdblfunc),(double));
/* Double function returning a double */
result = ((pdblfunc)(func))(arg1);
finish(f,vector, result, p, args, name);
}
else if (strcmp(args,"ff")==0)
{
float arga;
double a;
typedef float _EXFUN((*pdblfunc),(float));
/* Double function returning a double */
if (arg1 < FLT_MAX )
{
arga = arg1;
result = ((pdblfunc)(func))(arga);
finish(f, vector, result, p,args, name);
}
}
else if (strcmp(args,"ddd")==0)
{
typedef double _EXFUN((*pdblfunc),(double,double));
result = ((pdblfunc)(func))(arg1,arg2);
finish(f, vector, result, p,args, name);
}
else if (strcmp(args,"fff")==0)
{
double a,b;
float arga;
float argb;
typedef float _EXFUN((*pdblfunc),(float,float));
if (arg1 < FLT_MAX && arg2 < FLT_MAX)
{
arga = arg1;
argb = arg2;
result = ((pdblfunc)(func))(arga, argb);
finish(f, vector, result, p,args, name);
}
}
else if (strcmp(args,"did")==0)
{
typedef double _EXFUN((*pdblfunc),(int,double));
result = ((pdblfunc)(func))((int)arg1,arg2);
finish(f, vector, result, p,args, name);
}
else if (strcmp(args,"fif")==0)
{
double a,b;
float arga;
float argb;
typedef float _EXFUN((*pdblfunc),(int,float));
if (arg1 < FLT_MAX && arg2 < FLT_MAX)
{
arga = arg1;
argb = arg2;
result = ((pdblfunc)(func))((int)arga, argb);
finish(f, vector, result, p,args, name);
}
}
p++;
}
if (vector)
{
VECCLOSE(f, name, args);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment