#include "regmach.h"
#include <float.h>
+#include "imageri.h"
/*#define DEBUG*/
#ifdef DEBUG
return 0;
}
else {
- int temp = i_min(i_max(color.rgb.r, color.rgb.g), color.rgb.b);
+ int temp = i_min(i_min(color.rgb.r, color.rgb.g), color.rgb.b);
return (value - temp) / (double)value;
}
}
It isn't currently used for inequalities
*/
-#define n_epsilon(x, y) (abs(x)+abs(y))*0.001
+#define n_epsilon(x, y) (fabs(x)+fabs(y))*0.001
static i_color bcol = {{ 0 }};
i_color i_rm_run(struct rm_op codes[], size_t code_count,
break;
case rbc_div:
- if (abs(nb) < 1e-10)
+ if (fabs(nb) < 1e-10)
nout = 1e10;
else
nout = na / nb;
break;
case rbc_mod:
- if (abs(nb) > 1e-10) {
+ if (fabs(nb) > 1e-10) {
nout = fmod(na, nb);
}
else {
break;
case rbc_eq:
- nout = abs(na-nb) <= n_epsilon(na,nb);
+ nout = fabs(na-nb) <= n_epsilon(na,nb);
break;
case rbc_ne:
- nout = abs(na-nb) > n_epsilon(na,nb);
+ nout = fabs(na-nb) > n_epsilon(na,nb);
break;
case rbc_and:
break;
case rbc_abs:
- nout = abs(na);
+ nout = fabs(na);
break;
case rbc_ret:
break;
case rbc_print:
+ nout = na;
printf("r%d is %g\n", codes->ra, na);
break;
+ case rbc_det:
+ nout = na*nd-nb*nc;
+ break;
+
default:
/*croak("bad opcode"); */
printf("bad op %d\n", codes->code);