summaryrefslogtreecommitdiff
path: root/support/dktools/test-dk4maaull.ctr
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /support/dktools/test-dk4maaull.ctr
Initial commit
Diffstat (limited to 'support/dktools/test-dk4maaull.ctr')
-rw-r--r--support/dktools/test-dk4maaull.ctr87
1 files changed, 87 insertions, 0 deletions
diff --git a/support/dktools/test-dk4maaull.ctr b/support/dktools/test-dk4maaull.ctr
new file mode 100644
index 0000000000..8462992b6e
--- /dev/null
+++ b/support/dktools/test-dk4maaull.ctr
@@ -0,0 +1,87 @@
+#include "dk4conf.h"
+
+#include <stdio.h>
+
+#include "dk4error.h"
+#include "dk4maalu.h"
+
+$!trace-include
+
+
+static
+void
+show_error(dk4_er_t *erp)
+{
+ if (DK4_E_NONE != erp->ec) {
+ switch(erp->ec) {
+ case DK4_E_MATH_OVERFLOW: {
+ printf(" overflow");
+ } break;
+ case DK4_E_MATH_DIVZERO: {
+ printf(" divzero");
+ } break;
+ default: {
+ printf(" %d", erp->ec);
+ } break;
+ }
+ }
+}
+
+
+
+int main(void)
+{
+ char buffer[128]; /* Input line buffer */
+ dk4_er_t er; /* Error report */
+ unsigned long long i1; /* First operand */
+ unsigned long long i2; /* Second operand */
+ int exc; /* Exit code */
+ int cc; /* Flag: Can continue */
+ unsigned long long c1; /* First operand as char */
+ unsigned long long c2; /* Second operand as char */
+ unsigned long long c3; /* Result as char */
+
+ $!trace-init test-dk4maac.deb
+ $? "+ main"
+ exc = 0;
+ cc = 1;
+ while((1 == cc) && (fgets(buffer, sizeof(buffer), stdin))) {
+ if (sscanf(buffer, "%llu %llu", &i1, &i2) == 2) {
+ c1 = i1;
+ c2 = i2;
+ printf("%llu %llu\n", c1, c2);
+ dk4error_init(&er);
+ c3 = dk4ma_ull_add(c1, c2, &er);
+ printf("\t+ %llu", c3);
+ show_error(&er);
+ printf("\n");
+
+ dk4error_init(&er);
+ c3 = dk4ma_ull_sub(c1, c2, &er);
+ printf("\t- %llu", c3);
+ show_error(&er);
+ printf("\n");
+
+ dk4error_init(&er);
+ c3 = dk4ma_ull_mul(c1, c2, &er);
+ printf("\t* %llu", c3);
+ show_error(&er);
+ printf("\n");
+
+ dk4error_init(&er);
+ c3 = dk4ma_ull_div(c1, c2, &er);
+ printf("\t/ %llu", c3);
+ show_error(&er);
+ printf("\n");
+ } else {
+ exc = 1;
+ fprintf(stderr, "test-dk4maac:ERROR: Invalid input line!\n");
+ fflush(stderr);
+ cc = 0;
+ }
+ }
+ $? "- main"
+ $!trace-end
+ return exc;
+}
+