diff --git a/libc3/buf_inspect.c b/libc3/buf_inspect.c
index 852dc99..989e84c 100644
--- a/libc3/buf_inspect.c
+++ b/libc3/buf_inspect.c
@@ -785,13 +785,88 @@ sw buf_inspect_f64 (s_buf *buf, const f64 *f)
return result;
}
-sw buf_inspect_f64_size (const f64 *f)
+sw buf_inspect_f64_size (const f64 *x)
{
char b[64];
s_buf buf;
+ assert(x);
+ buf_init(&buf, false, sizeof(b), b);
+ return buf_inspect_f64(&buf, x);
+}
+
+sw buf_inspect_f128 (s_buf *buf, const f128 *x)
+{
+ s64 exp;
+ u8 i;
+ u8 j;
+ sw r;
+ sw result = 0;
+ f128 y;
+ assert(buf);
assert(f);
+ exp = 0.0;
+ y = *x;
+ if (y == 0.0)
+ return buf_write_1(buf, "0.0");
+ if (y < 0) {
+ if ((r = buf_write_1(buf, "-")) <= 0)
+ return r;
+ result += r;
+ y = -y;
+ }
+ if (y >= 1.0)
+ while (y >= 10.0) {
+ y /= 10.0;
+ exp++;
+ }
+ else
+ while (y < 1.0) {
+ y *= 10.0;
+ exp--;
+ }
+ i = (u8) y;
+ y -= i;
+ i += '0';
+ if ((r = buf_write_u8(buf, i)) <= 0)
+ return r;
+ result += r;
+ if ((r = buf_write_1(buf, ".")) <= 0)
+ return r;
+ result += r;
+ j = 33;
+ do {
+ y *= 10;
+ i = (u8) y;
+ y -= i;
+ i += '0';
+ if ((r = buf_write_u8(buf, i)) <= 0)
+ return r;
+ result += r;
+ j--;
+ } while (y > pow(0.1, j) && j);
+ if (exp) {
+ if ((r = buf_write_1(buf, "e")) <= 0)
+ return r;
+ result += r;
+ if (exp > 0) {
+ if ((r = buf_write_1(buf, "+")) <= 0)
+ return r;
+ result += r;
+ }
+ if ((r = buf_inspect_s64(buf, &exp)) <= 0)
+ return r;
+ result += r;
+ }
+ return result;
+}
+
+sw buf_inspect_f128_size (const f128 *x)
+{
+ char b[128];
+ s_buf buf;
+ assert(x);
buf_init(&buf, false, sizeof(b), b);
- return buf_inspect_f64(&buf, f);
+ return buf_inspect_f128(&buf, x);
}
sw buf_inspect_fact (s_buf *buf, const s_fact *fact)
@@ -2050,6 +2125,7 @@ sw buf_inspect_tag (s_buf *buf, const s_tag *tag)
return buf_inspect_character(buf, &tag->data.character);
case TAG_F32: return buf_inspect_f32(buf, &tag->data.f32);
case TAG_F64: return buf_inspect_f64(buf, &tag->data.f64);
+ case TAG_F128: return buf_inspect_f128(buf, &tag->data.f128);
case TAG_FACT: return buf_inspect_fact(buf, &tag->data.fact);
case TAG_FN: return buf_inspect_fn(buf, &tag->data.fn);
case TAG_IDENT: return buf_inspect_ident(buf, &tag->data.ident);
@@ -2098,6 +2174,7 @@ sw buf_inspect_tag_size (const s_tag *tag)
return buf_inspect_character_size(&tag->data.character);
case TAG_F32: return buf_inspect_f32_size(&tag->data.f32);
case TAG_F64: return buf_inspect_f64_size(&tag->data.f64);
+ case TAG_F128: return buf_inspect_f128_size(&tag->data.f128);
case TAG_FACT: return buf_inspect_fact_size(&tag->data.fact);
case TAG_FN: return buf_inspect_fn_size(&tag->data.fn);
case TAG_IDENT: return buf_inspect_ident_size(&tag->data.ident);
diff --git a/libc3/buf_inspect.h b/libc3/buf_inspect.h
index 4328d1a..2306cff 100644
--- a/libc3/buf_inspect.h
+++ b/libc3/buf_inspect.h
@@ -80,6 +80,8 @@ sw buf_inspect_f32 (s_buf *buf, const f32 *x);
sw buf_inspect_f32_size (const f32 *x);
sw buf_inspect_f64 (s_buf *buf, const f64 *x);
sw buf_inspect_f64_size (const f64 *x);
+sw buf_inspect_f128 (s_buf *buf, const f128 *x);
+sw buf_inspect_f128_size (const f128 *x);
sw buf_inspect_fact (s_buf *buf, const s_fact *fact);
sw buf_inspect_fact_size (const s_fact *fact);
sw buf_inspect_facts_spec (s_buf *buf, p_facts_spec spec);
diff --git a/libc3/compare.c b/libc3/compare.c
index 9761e10..202a557 100644
--- a/libc3/compare.c
+++ b/libc3/compare.c
@@ -94,10 +94,9 @@ s8 compare_cfn (const s_cfn *a, const s_cfn *b)
}
COMPARE_DEF(character)
-
COMPARE_DEF(f32)
-
COMPARE_DEF(f64)
+COMPARE_DEF(f128)
s8 compare_fact (const s_fact *a, const s_fact *b)
{
@@ -473,9 +472,10 @@ s8 compare_tag (const s_tag *a, const s_tag *b) {
switch (b->type) {
case TAG_F32: return compare_f32(a->data.f32, b->data.f32);
case TAG_F64: return compare_f64((f64) a->data.f32, b->data.f64);
+ case TAG_F128:
+ return compare_f128((f128) a->data.f32, b->data.f128);
case TAG_INTEGER:
- return compare_f64((f64) a->data.f32,
- integer_to_f64(&b->data.integer));
+ return compare_f32(a->data.f32, integer_to_f32(&b->data.integer));
case TAG_S8: return compare_f32(a->data.f32, (f32) b->data.s8);
case TAG_S16: return compare_f32(a->data.f32, (f32) b->data.s16);
case TAG_S32: return compare_f32(a->data.f32, (f32) b->data.s32);
@@ -494,6 +494,8 @@ s8 compare_tag (const s_tag *a, const s_tag *b) {
switch (b->type) {
case TAG_F32: return compare_f64(a->data.f64, b->data.f32);
case TAG_F64: return compare_f64((f64) a->data.f64, b->data.f64);
+ case TAG_F128:
+ return compare_f128((f128) a->data.f64, b->data.f128);
case TAG_INTEGER:
return compare_f64(a->data.f64, integer_to_f64(&b->data.integer));
case TAG_S8: return compare_f64(a->data.f64, (f64) b->data.s8);
@@ -516,6 +518,9 @@ s8 compare_tag (const s_tag *a, const s_tag *b) {
(f64) b->data.f32);
case TAG_F64: return compare_f64(integer_to_f64(&a->data.integer),
b->data.f64);
+ case TAG_F128:
+ return compare_f128(integer_to_f128(&a->data.integer),
+ b->data.f128);
case TAG_INTEGER:
return compare_integer(&a->data.integer, &b->data.integer);
case TAG_S8:
@@ -576,6 +581,8 @@ s8 compare_tag (const s_tag *a, const s_tag *b) {
switch (b->type) {
case TAG_F32: return compare_f32((f32) a->data.s8, b->data.f32);
case TAG_F64: return compare_f64((f64) a->data.s8, b->data.f64);
+ case TAG_F128:
+ return compare_f128((f128) a->data.s8, b->data.f128);
case TAG_INTEGER:
integer_init_s8(&tmp, a->data.s8);
r = compare_integer(&tmp, &b->data.integer);
@@ -646,6 +653,8 @@ s8 compare_tag (const s_tag *a, const s_tag *b) {
switch (b->type) {
case TAG_F32: return compare_f32((f32) a->data.s32, b->data.f32);
case TAG_F64: return compare_f64((f64) a->data.s32, b->data.f64);
+ case TAG_F128:
+ return compare_f128((f128) a->data.s32, b->data.f128);
case TAG_INTEGER:
integer_init_s32(&tmp, a->data.s32);
r = compare_integer(&tmp, &b->data.integer);
@@ -681,6 +690,8 @@ s8 compare_tag (const s_tag *a, const s_tag *b) {
switch (b->type) {
case TAG_F32: return compare_f32((f32) a->data.s64, b->data.f32);
case TAG_F64: return compare_f64((f64) a->data.s64, b->data.f64);
+ case TAG_F128:
+ return compare_f128((f128) a->data.s64, b->data.f128);
case TAG_INTEGER:
integer_init_s64(&tmp, a->data.s64);
r = compare_integer(&tmp, &b->data.integer);
@@ -716,6 +727,8 @@ s8 compare_tag (const s_tag *a, const s_tag *b) {
switch (b->type) {
case TAG_F32: return compare_f32((f32) a->data.u8, b->data.f32);
case TAG_F64: return compare_f64((f64) a->data.u8, b->data.f64);
+ case TAG_F128:
+ return compare_f128((f128) a->data.u8, b->data.f128);
case TAG_INTEGER:
integer_init_u8(&tmp, a->data.u8);
r = compare_integer(&tmp, &b->data.integer);
@@ -739,6 +752,8 @@ s8 compare_tag (const s_tag *a, const s_tag *b) {
switch (b->type) {
case TAG_F32: return compare_f32((f32) a->data.u16, b->data.f32);
case TAG_F64: return compare_f64((f64) a->data.u16, b->data.f64);
+ case TAG_F128:
+ return compare_f128((f128) a->data.u16, b->data.f128);
case TAG_INTEGER:
integer_init_u16(&tmp, a->data.u16);
r = compare_integer(&tmp, &b->data.integer);
@@ -762,6 +777,8 @@ s8 compare_tag (const s_tag *a, const s_tag *b) {
switch (b->type) {
case TAG_F32: return compare_f32((f32) a->data.u32, b->data.f32);
case TAG_F64: return compare_f64((f64) a->data.u32, b->data.f64);
+ case TAG_F128:
+ return compare_f128((f128) a->data.u32, b->data.f128);
case TAG_INTEGER:
integer_init_u32(&tmp, a->data.u32);
r = compare_integer(&tmp, &b->data.integer);
@@ -785,6 +802,8 @@ s8 compare_tag (const s_tag *a, const s_tag *b) {
switch (b->type) {
case TAG_F32: return compare_f32((f32) a->data.u64, b->data.f32);
case TAG_F64: return compare_f64((f64) a->data.u64, b->data.f64);
+ case TAG_F128:
+ return compare_f128((f128) a->data.u64, b->data.f128);
case TAG_INTEGER:
integer_init_u64(&tmp, a->data.u64);
r = compare_integer(&tmp, &b->data.integer);
@@ -876,6 +895,7 @@ s8 compare_tag (const s_tag *a, const s_tag *b) {
case TAG_VAR: return compare_ptr(a, b);
case TAG_F32:
case TAG_F64:
+ case TAG_F128:
case TAG_INTEGER:
case TAG_S8:
case TAG_S16:
diff --git a/libc3/compare.h b/libc3/compare.h
index 8c91c6e..67375b7 100644
--- a/libc3/compare.h
+++ b/libc3/compare.h
@@ -22,9 +22,10 @@ s8 compare_array (const s_array *a, const s_array *b);
s8 compare_bool (bool a, bool b);
s8 compare_call (const s_call *a, const s_call *b);
s8 compare_cfn (const s_cfn *a, const s_cfn *b);
-s8 compare_character (character a, character b);
+COMPARE_PROTOTYPE(character);
COMPARE_PROTOTYPE(f32);
COMPARE_PROTOTYPE(f64);
+COMPARE_PROTOTYPE(f128);
s8 compare_fact (const s_fact *a, const s_fact *b);
s8 compare_fact_pos (const s_fact *a, const s_fact *b);
s8 compare_fact_osp (const s_fact *a, const s_fact *b);
diff --git a/libc3/env.c b/libc3/env.c
index 77ae297..b82c21e 100644
--- a/libc3/env.c
+++ b/libc3/env.c
@@ -392,6 +392,7 @@ bool env_eval_equal_tag (s_env *env, const s_tag *a, const s_tag *b,
switch (a->type) {
case TAG_F32:
case TAG_F64:
+ case TAG_F128:
case TAG_INTEGER:
case TAG_S8:
case TAG_S16:
@@ -406,6 +407,7 @@ bool env_eval_equal_tag (s_env *env, const s_tag *a, const s_tag *b,
switch (b->type) {
case TAG_F32:
case TAG_F64:
+ case TAG_F128:
case TAG_INTEGER:
case TAG_S8:
case TAG_S16:
@@ -751,6 +753,7 @@ bool env_eval_tag (s_env *env, const s_tag *tag, s_tag *dest)
case TAG_CHARACTER:
case TAG_F32:
case TAG_F64:
+ case TAG_F128:
case TAG_FACT:
case TAG_FN:
case TAG_INTEGER:
diff --git a/libc3/f128.c b/libc3/f128.c
new file mode 100644
index 0000000..6c9dd7b
--- /dev/null
+++ b/libc3/f128.c
@@ -0,0 +1,100 @@
+/* c3
+ * Copyright 2022,2023 kmx.io <contact@kmx.io>
+ *
+ * Permission is hereby granted to use this software granted the above
+ * copyright notice and this permission paragraph are included in all
+ * copies and substantial portions of this software.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS-IS" WITHOUT ANY GUARANTEE OF
+ * PURPOSE AND PERFORMANCE. IN NO EVENT WHATSOEVER SHALL THE
+ * AUTHOR BE CONSIDERED LIABLE FOR THE USE AND PERFORMANCE OF
+ * THIS SOFTWARE.
+ */
+#include <assert.h>
+#include <err.h>
+#include <stdlib.h>
+#include "integer.h"
+#include "tag.h"
+#include "tag_type.h"
+#include "f128.h"
+#include "u64.h"
+
+f128 * f128_init_cast (f128 *x, const s_tag *tag)
+{
+ assert(tag);
+ assert(x);
+ switch (tag->type) {
+ case TAG_BOOL:
+ *x = tag->data.bool ? 1.0 : 0.0;
+ return x;
+ case TAG_CHARACTER:
+ *x = (f128) tag->data.character;
+ return x;
+ case TAG_F32:
+ *x = (f128) tag->data.f32;
+ return x;
+ case TAG_F64:
+ *x = (f128) tag->data.f64;
+ return x;
+ case TAG_F128:
+ *x = tag->data.f128;
+ return x;
+ case TAG_INTEGER:
+ *x = integer_to_f128(&tag->data.integer);
+ return x;
+ case TAG_SW:
+ *x = (f128) tag->data.sw;
+ return x;
+ case TAG_S64:
+ *x = (f128) tag->data.s64;
+ return x;
+ case TAG_S32:
+ *x = (f128) tag->data.s32;
+ return x;
+ case TAG_S16:
+ *x = (f128) tag->data.s16;
+ return x;
+ case TAG_S8:
+ *x = (f128) tag->data.s8;
+ return x;
+ case TAG_U8:
+ *x = (f128) tag->data.u8;
+ return x;
+ case TAG_U16:
+ *x = (f128) tag->data.u16;
+ return x;
+ case TAG_U32:
+ *x = (f128) tag->data.u32;
+ return x;
+ case TAG_U64:
+ *x = (f128) tag->data.u64;
+ return x;
+ case TAG_UW:
+ *x = (f128) tag->data.uw;
+ return x;
+ default:
+ break;
+ }
+ warnx("f128_init_cast: cannot cast %s to f128",
+ tag_type_to_string(tag->type));
+ assert(! "f128_init_cast: cannot cast to f128");
+ return NULL;
+}
+
+f128 * f128_init_copy (f128 *x, const f128 *src)
+{
+ assert(src);
+ assert(x);
+ *x = *src;
+ return x;
+}
+
+f128 * f128_random (f128 *x)
+{
+ const f128 max = ((f128) 1 << 113) - 1;
+ f128 y;
+ arc4random_buf(y, 15);
+ y = y & 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFF800000;
+ *x = y;
+ return x;
+}
diff --git a/libc3/f128.h b/libc3/f128.h
new file mode 100644
index 0000000..bc303a5
--- /dev/null
+++ b/libc3/f128.h
@@ -0,0 +1,22 @@
+/* c3
+ * Copyright 2022,2023 kmx.io <contact@kmx.io>
+ *
+ * Permission is hereby granted to use this software granted the above
+ * copyright notice and this permission paragraph are included in all
+ * copies and substantial portions of this software.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS-IS" WITHOUT ANY GUARANTEE OF
+ * PURPOSE AND PERFORMANCE. IN NO EVENT WHATSOEVER SHALL THE
+ * AUTHOR BE CONSIDERED LIABLE FOR THE USE AND PERFORMANCE OF
+ * THIS SOFTWARE.
+ */
+#ifndef LIBC3_F128_H
+#define LIBC3_F128_H
+
+#include "types.h"
+
+f128 * f128_init_cast (f128 *x, const s_tag *tag);
+f128 * f128_init_copy (f128 *x, const f128 *src);
+f128 * f128_random (f128 *x);
+
+#endif /* LIBC3_F128_H */
diff --git a/libc3/hash.c b/libc3/hash.c
index 2db14ba..b75181d 100644
--- a/libc3/hash.c
+++ b/libc3/hash.c
@@ -142,6 +142,7 @@ HASH_UPDATE_DEF(char)
HASH_UPDATE_DEF(character)
HASH_UPDATE_DEF(f32)
HASH_UPDATE_DEF(f64)
+HASH_UPDATE_DEF(f128)
bool hash_update_fact (t_hash *hash, const s_fact *fact)
{
@@ -411,6 +412,7 @@ bool hash_update_tag (t_hash *hash, const s_tag *tag)
return hash_update_character(hash, &tag->data.character);
case TAG_F32: return hash_update_f32(hash, &tag->data.f32);
case TAG_F64: return hash_update_f64(hash, &tag->data.f64);
+ case TAG_F128: return hash_update_f128(hash, &tag->data.f128);
case TAG_FACT: return hash_update_fact(hash, &tag->data.fact);
case TAG_FN: return hash_update_fn(hash, &tag->data.fn);
case TAG_IDENT: return hash_update_ident(hash, &tag->data.ident);
diff --git a/libc3/hash.h b/libc3/hash.h
index eb25614..5a6023c 100644
--- a/libc3/hash.h
+++ b/libc3/hash.h
@@ -32,6 +32,7 @@ HASH_UPDATE_PROTOTYPE(char);
HASH_UPDATE_PROTOTYPE(character);
HASH_UPDATE_PROTOTYPE(f32);
HASH_UPDATE_PROTOTYPE(f64);
+HASH_UPDATE_PROTOTYPE(f128);
bool hash_update_fact (t_hash *hash, const s_fact *fact);
bool hash_update_fn (t_hash *hash, const s_fn *fn);
bool hash_update_fn_clauses (t_hash *hash, const s_fn_clause *clauses);
diff --git a/libc3/integer.c b/libc3/integer.c
index a47fd1c..8546d0b 100644
--- a/libc3/integer.c
+++ b/libc3/integer.c
@@ -123,6 +123,8 @@ s_integer * integer_init_cast (s_integer *a, const s_tag *tag)
return integer_init_f32(a, tag->data.f32);
case TAG_F64:
return integer_init_f64(a, tag->data.f64);
+ case TAG_F128:
+ return integer_init_f128(a, tag->data.f128);
case TAG_INTEGER:
return integer_init_copy(a, &tag->data.integer);
case TAG_SW:
@@ -218,18 +220,25 @@ s_integer * integer_init_copy (s_integer *a, const s_integer *src)
return a;
}
+s_integer * integer_init_f32 (s_integer *a, f32 x)
+{
+ assert(a);
+ integer_init(a);
+ return integer_set_f32(a, x);
+}
+
s_integer * integer_init_f64 (s_integer *a, f64 x)
{
assert(a);
integer_init(a);
- return integer_set_double(a, x);
+ return integer_set_f64(a, x);
}
-s_integer * integer_init_f32 (s_integer *a, f32 x)
+s_integer * integer_init_f128 (s_integer *a, f128 x)
{
assert(a);
integer_init(a);
- return integer_set_double(a, x);
+ return integer_set_f128(a, x);
}
s_integer * integer_init_s8 (s_integer *a, s8 x)
@@ -510,6 +519,13 @@ f64 integer_to_f64 (const s_integer *i)
return mp_get_double(&i->mp_int);
}
+f128 integer_to_f128 (const s_integer *i)
+{
+ assert(i);
+ // FIXME
+ return mp_get_double(&i->mp_int);
+}
+
s8 integer_to_s8 (const s_integer *i)
{
assert(i);
diff --git a/libc3/integer.h b/libc3/integer.h
index bd57266..842c00e 100644
--- a/libc3/integer.h
+++ b/libc3/integer.h
@@ -32,6 +32,7 @@ s_integer * integer_init_cast (s_integer *a, const s_tag *tag);
s_integer * integer_init_copy (s_integer *a, const s_integer *src);
s_integer * integer_init_f32 (s_integer *a, f32 x);
s_integer * integer_init_f64 (s_integer *a, f64 x);
+s_integer * integer_init_f128 (s_integer *a, f128 x);
s_integer * integer_init_s8 (s_integer *a, s8 x);
s_integer * integer_init_s16 (s_integer *a, s16 x);
s_integer * integer_init_s32 (s_integer *a, s32 x);
@@ -46,7 +47,9 @@ s_integer * integer_init_zero (s_integer *i);
void integer_clean (s_integer *i);
/* Setters */
-s_integer * integer_set_double (s_integer *a, double x);
+s_integer * integer_set_f32 (s_integer *a, f32 x);
+s_integer * integer_set_f64 (s_integer *a, f64 x);
+s_integer * integer_set_f128 (s_integer *a, f128 x);
s_integer * integer_set_s32 (s_integer *a, s32 x);
s_integer * integer_set_s64 (s_integer *a, s64 x);
s_integer * integer_set_sw (s_integer *a, sw x);
@@ -94,6 +97,7 @@ bool integer_is_negative (const s_integer *i);
bool integer_is_zero (const s_integer *i);
f32 integer_to_f32 (const s_integer *i);
f64 integer_to_f64 (const s_integer *i);
+f128 integer_to_f128 (const s_integer *i);
s8 integer_to_s8 (const s_integer *i);
s16 integer_to_s16 (const s_integer *i);
s32 integer_to_s32 (const s_integer *i);
diff --git a/libc3/list_init.c b/libc3/list_init.c
index d5836ac..532c7d8 100644
--- a/libc3/list_init.c
+++ b/libc3/list_init.c
@@ -106,6 +106,17 @@ s_list * list_init_f64 (s_list *list, f64 f, s_list *next)
return list;
}
+s_list * list_init_f128 (s_list *list, f128 f, s_list *next)
+{
+ s_list tmp;
+ assert(list);
+ list_init(&tmp, next);
+ if (! tag_init_f128(&tmp.tag, f))
+ return NULL;
+ *list = tmp;
+ return list;
+}
+
s_list * list_init_ident (s_list *list, const s_ident *ident,
s_list *next)
{
@@ -501,6 +512,19 @@ s_list * list_new_f64 (f64 f, s_list *next)
return list;
}
+s_list * list_new_f128 (f128 f, s_list *next)
+{
+ s_list *list;
+ list = list_new(next);
+ if (! list)
+ return NULL;
+ if (! tag_init_f128(&list->tag, f)) {
+ free(list);
+ return NULL;
+ }
+ return list;
+}
+
s_list * list_new_ident (const s_ident *ident, s_list *next)
{
s_list *list;
diff --git a/libc3/list_init.h b/libc3/list_init.h
index d9dbd49..97988c3 100644
--- a/libc3/list_init.h
+++ b/libc3/list_init.h
@@ -25,6 +25,7 @@ s_list * list_init_character (s_list *list, character c, s_list *next);
s_list * list_init_f32 (s_list *list, f32 f, s_list *next);
s_list * list_init_f64 (s_list *list, f64 f, s_list *next);
+s_list * list_init_f128 (s_list *list, f128 f, s_list *next);
s_list * list_init_ident (s_list *list, const s_ident *ident,
s_list *next);
s_list * list_init_ident_1 (s_list *list, const char *p, s_list *next);
@@ -74,6 +75,7 @@ s_list * list_new_character (character c, s_list *next);
s_list * list_new_f32 (f32 f, s_list *next);
s_list * list_new_f64 (f64 f, s_list *next);
+s_list * list_new_f128 (f128 f, s_list *next);
s_list * list_new_ident (const s_ident *ident, s_list *next);
s_list * list_new_ident_1 (const char *p, s_list *next);
s_list * list_new_integer_1 (const char *p, s_list *next);
@@ -118,6 +120,7 @@ s_list * list_character (s_list *list, character c);
s_list * list_f32 (s_list *list, f32 f);
s_list * list_f64 (s_list *list, f64 f);
+s_list * list_f128 (s_list *list, f128 f);
s_list * list_ident (s_list *list, const s_ident *ident);
s_list * list_ident_1 (s_list *list, const char *p);
s_list * list_integer_1 (s_list *list, const char *p);
diff --git a/libc3/sources.mk b/libc3/sources.mk
index d63cda8..18afc91 100644
--- a/libc3/sources.mk
+++ b/libc3/sources.mk
@@ -84,6 +84,7 @@ HEADERS = \
"error.h" \
"error_handler.h" \
"eval.h" \
+ "f128.h" \
"f32.h" \
"f64.h" \
"fact.h" \
@@ -231,6 +232,7 @@ SOURCES = \
"error.c" \
"error_handler.c" \
"eval.c" \
+ "f128.c" \
"f32.c" \
"f64.c" \
"fact.c" \
@@ -483,6 +485,7 @@ LO_SOURCES = \
"error.c" \
"error_handler.c" \
"eval.c" \
+ "f128.c" \
"f32.c" \
"f64.c" \
"fact.c" \
diff --git a/libc3/sources.sh b/libc3/sources.sh
index 7ab81f6..6b21831 100644
--- a/libc3/sources.sh
+++ b/libc3/sources.sh
@@ -1,4 +1,4 @@
# sources.sh generated by update_sources
-HEADERS='abs.h arg.h array.h assert.h binding.h bool.h buf.h buf_file.h buf_inspect.h buf_inspect_s16.h buf_inspect_s16_binary.h buf_inspect_s16_decimal.h buf_inspect_s16_hexadecimal.h buf_inspect_s16_octal.h buf_inspect_s32.h buf_inspect_s32_binary.h buf_inspect_s32_decimal.h buf_inspect_s32_hexadecimal.h buf_inspect_s32_octal.h buf_inspect_s64.h buf_inspect_s64_binary.h buf_inspect_s64_decimal.h buf_inspect_s64_hexadecimal.h buf_inspect_s64_octal.h buf_inspect_s8.h buf_inspect_s8_binary.h buf_inspect_s8_decimal.h buf_inspect_s8_hexadecimal.h buf_inspect_s8_octal.h buf_inspect_sw.h buf_inspect_sw_binary.h buf_inspect_sw_decimal.h buf_inspect_sw_hexadecimal.h buf_inspect_sw_octal.h buf_inspect_u16.h buf_inspect_u16_binary.h buf_inspect_u16_decimal.h buf_inspect_u16_hexadecimal.h buf_inspect_u16_octal.h buf_inspect_u32.h buf_inspect_u32_binary.h buf_inspect_u32_decimal.h buf_inspect_u32_hexadecimal.h buf_inspect_u32_octal.h buf_inspect_u64.h buf_inspect_u64_binary.h buf_inspect_u64_decimal.h buf_inspect_u64_hexadecimal.h buf_inspect_u64_octal.h buf_inspect_u8.h buf_inspect_u8_binary.h buf_inspect_u8_decimal.h buf_inspect_u8_hexadecimal.h buf_inspect_u8_octal.h buf_inspect_uw.h buf_inspect_uw_binary.h buf_inspect_uw_decimal.h buf_inspect_uw_hexadecimal.h buf_inspect_uw_octal.h buf_parse.h buf_parse_s16.h buf_parse_s32.h buf_parse_s64.h buf_parse_s8.h buf_parse_sw.h buf_parse_u16.h buf_parse_u32.h buf_parse_u64.h buf_parse_u8.h buf_parse_uw.h buf_save.h c3.h c3_main.h call.h ceiling.h cfn.h character.h compare.h config.h data.h env.h error.h error_handler.h eval.h f32.h f64.h fact.h fact_list.h facts.h facts_cursor.h facts_spec.h facts_spec_cursor.h facts_with.h facts_with_cursor.h file.h float.h fn.h fn_clause.h frame.h hash.h ident.h integer.h io.h list.h list_init.h log.h map.h module.h operator.h ptag.h ptr.h ptr_free.h quote.h s16.h s32.h s64.h s8.h sequence.h set__fact.h set__tag.h set_cursor__fact.h set_cursor__tag.h set_item__fact.h set_item__tag.h sha1.h sign.h skiplist__fact.h skiplist_node__fact.h str.h struct.h struct_type.h sw.h sym.h tag.h tag_init.h tag_type.h time.h tuple.h type.h types.h u16.h u32.h u64.h u8.h ucd.h uw.h var.h void.h '
-SOURCES='abs.c arg.c array.c binding.c bool.c buf.c buf_file.c buf_inspect.c buf_inspect_s16.c buf_inspect_s16_binary.c buf_inspect_s16_decimal.c buf_inspect_s16_hexadecimal.c buf_inspect_s16_octal.c buf_inspect_s32.c buf_inspect_s32_binary.c buf_inspect_s32_decimal.c buf_inspect_s32_hexadecimal.c buf_inspect_s32_octal.c buf_inspect_s64.c buf_inspect_s64_binary.c buf_inspect_s64_decimal.c buf_inspect_s64_hexadecimal.c buf_inspect_s64_octal.c buf_inspect_s8.c buf_inspect_s8_binary.c buf_inspect_s8_decimal.c buf_inspect_s8_hexadecimal.c buf_inspect_s8_octal.c buf_inspect_sw.c buf_inspect_sw_binary.c buf_inspect_sw_decimal.c buf_inspect_sw_hexadecimal.c buf_inspect_sw_octal.c buf_inspect_u16.c buf_inspect_u16_binary.c buf_inspect_u16_decimal.c buf_inspect_u16_hexadecimal.c buf_inspect_u16_octal.c buf_inspect_u32.c buf_inspect_u32_binary.c buf_inspect_u32_decimal.c buf_inspect_u32_hexadecimal.c buf_inspect_u32_octal.c buf_inspect_u64.c buf_inspect_u64_binary.c buf_inspect_u64_decimal.c buf_inspect_u64_hexadecimal.c buf_inspect_u64_octal.c buf_inspect_u8.c buf_inspect_u8_binary.c buf_inspect_u8_decimal.c buf_inspect_u8_hexadecimal.c buf_inspect_u8_octal.c buf_inspect_uw.c buf_inspect_uw_binary.c buf_inspect_uw_decimal.c buf_inspect_uw_hexadecimal.c buf_inspect_uw_octal.c buf_parse.c buf_parse_s16.c buf_parse_s32.c buf_parse_s64.c buf_parse_s8.c buf_parse_sw.c buf_parse_u16.c buf_parse_u32.c buf_parse_u64.c buf_parse_u8.c buf_parse_uw.c buf_save.c c3.c call.c ceiling.c cfn.c character.c compare.c data.c env.c error.c error_handler.c eval.c f32.c f64.c fact.c fact_list.c facts.c facts_cursor.c facts_spec.c facts_spec_cursor.c facts_with.c facts_with_cursor.c file.c fn.c fn_clause.c frame.c hash.c ident.c integer.c io.c license.c list.c list_init.c log.c map.c module.c operator.c ptag.c ptr.c ptr_free.c quote.c s16.c s32.c s64.c s8.c sequence.c set__fact.c set__tag.c set_cursor__fact.c set_cursor__tag.c set_item__fact.c set_item__tag.c sign.c skiplist__fact.c skiplist_node__fact.c str.c struct.c struct_type.c sw.c sym.c tag.c tag_add.c tag_band.c tag_bor.c tag_bxor.c tag_div.c tag_init.c tag_mod.c tag_mul.c tag_shift_left.c tag_shift_right.c tag_sub.c tag_type.c time.c tuple.c type.c u16.c u32.c u64.c u8.c ucd.c uw.c var.c void.c '
-LO_SOURCES=' ../libtommath/bn_cutoffs.c ../libtommath/bn_mp_2expt.c ../libtommath/bn_mp_abs.c ../libtommath/bn_mp_add.c ../libtommath/bn_mp_add_d.c ../libtommath/bn_mp_and.c ../libtommath/bn_mp_clamp.c ../libtommath/bn_mp_clear.c ../libtommath/bn_mp_clear_multi.c ../libtommath/bn_mp_cmp.c ../libtommath/bn_mp_cmp_d.c ../libtommath/bn_mp_cmp_mag.c ../libtommath/bn_mp_cnt_lsb.c ../libtommath/bn_mp_complement.c ../libtommath/bn_mp_copy.c ../libtommath/bn_mp_count_bits.c ../libtommath/bn_mp_div.c ../libtommath/bn_mp_div_2.c ../libtommath/bn_mp_div_2d.c ../libtommath/bn_mp_div_3.c ../libtommath/bn_mp_div_d.c ../libtommath/bn_mp_dr_is_modulus.c ../libtommath/bn_mp_dr_reduce.c ../libtommath/bn_mp_dr_setup.c ../libtommath/bn_mp_error_to_string.c ../libtommath/bn_mp_exch.c ../libtommath/bn_mp_exptmod.c ../libtommath/bn_mp_gcd.c ../libtommath/bn_mp_get_double.c ../libtommath/bn_mp_get_i32.c ../libtommath/bn_mp_get_i64.c ../libtommath/bn_mp_get_mag_u32.c ../libtommath/bn_mp_get_mag_u64.c ../libtommath/bn_mp_grow.c ../libtommath/bn_mp_init.c ../libtommath/bn_mp_init_copy.c ../libtommath/bn_mp_init_multi.c ../libtommath/bn_mp_init_size.c ../libtommath/bn_mp_invmod.c ../libtommath/bn_mp_lcm.c ../libtommath/bn_mp_lshd.c ../libtommath/bn_mp_mod.c ../libtommath/bn_mp_mod_2d.c ../libtommath/bn_mp_montgomery_calc_normalization.c ../libtommath/bn_mp_montgomery_reduce.c ../libtommath/bn_mp_montgomery_setup.c ../libtommath/bn_mp_mul.c ../libtommath/bn_mp_mul_2.c ../libtommath/bn_mp_mul_2d.c ../libtommath/bn_mp_mul_d.c ../libtommath/bn_mp_mulmod.c ../libtommath/bn_mp_neg.c ../libtommath/bn_mp_or.c ../libtommath/bn_mp_radix_size.c ../libtommath/bn_mp_reduce.c ../libtommath/bn_mp_reduce_2k.c ../libtommath/bn_mp_reduce_2k_l.c ../libtommath/bn_mp_reduce_2k_setup.c ../libtommath/bn_mp_reduce_2k_setup_l.c ../libtommath/bn_mp_reduce_is_2k.c ../libtommath/bn_mp_reduce_is_2k_l.c ../libtommath/bn_mp_reduce_setup.c ../libtommath/bn_mp_rshd.c ../libtommath/bn_mp_set.c ../libtommath/bn_mp_set_double.c ../libtommath/bn_mp_set_i32.c ../libtommath/bn_mp_set_i64.c ../libtommath/bn_mp_set_l.c ../libtommath/bn_mp_set_u32.c ../libtommath/bn_mp_set_u64.c ../libtommath/bn_mp_set_ul.c ../libtommath/bn_mp_sqr.c ../libtommath/bn_mp_sqrt.c ../libtommath/bn_mp_sub.c ../libtommath/bn_mp_sub_d.c ../libtommath/bn_mp_xor.c ../libtommath/bn_mp_zero.c ../libtommath/bn_s_mp_add.c ../libtommath/bn_s_mp_balance_mul.c ../libtommath/bn_s_mp_exptmod.c ../libtommath/bn_s_mp_exptmod_fast.c ../libtommath/bn_s_mp_invmod_fast.c ../libtommath/bn_s_mp_invmod_slow.c ../libtommath/bn_s_mp_karatsuba_mul.c ../libtommath/bn_s_mp_karatsuba_sqr.c ../libtommath/bn_s_mp_montgomery_reduce_fast.c ../libtommath/bn_s_mp_mul_digs.c ../libtommath/bn_s_mp_mul_digs_fast.c ../libtommath/bn_s_mp_mul_high_digs.c ../libtommath/bn_s_mp_mul_high_digs_fast.c ../libtommath/bn_s_mp_rand_platform.c ../libtommath/bn_s_mp_sqr.c ../libtommath/bn_s_mp_sqr_fast.c ../libtommath/bn_s_mp_sub.c ../libtommath/bn_s_mp_toom_mul.c ../libtommath/bn_s_mp_toom_sqr.c abs.c arg.c array.c binding.c bool.c buf.c buf_file.c buf_inspect.c buf_inspect_s16.c buf_inspect_s16_binary.c buf_inspect_s16_decimal.c buf_inspect_s16_hexadecimal.c buf_inspect_s16_octal.c buf_inspect_s32.c buf_inspect_s32_binary.c buf_inspect_s32_decimal.c buf_inspect_s32_hexadecimal.c buf_inspect_s32_octal.c buf_inspect_s64.c buf_inspect_s64_binary.c buf_inspect_s64_decimal.c buf_inspect_s64_hexadecimal.c buf_inspect_s64_octal.c buf_inspect_s8.c buf_inspect_s8_binary.c buf_inspect_s8_decimal.c buf_inspect_s8_hexadecimal.c buf_inspect_s8_octal.c buf_inspect_sw.c buf_inspect_sw_binary.c buf_inspect_sw_decimal.c buf_inspect_sw_hexadecimal.c buf_inspect_sw_octal.c buf_inspect_u16.c buf_inspect_u16_binary.c buf_inspect_u16_decimal.c buf_inspect_u16_hexadecimal.c buf_inspect_u16_octal.c buf_inspect_u32.c buf_inspect_u32_binary.c buf_inspect_u32_decimal.c buf_inspect_u32_hexadecimal.c buf_inspect_u32_octal.c buf_inspect_u64.c buf_inspect_u64_binary.c buf_inspect_u64_decimal.c buf_inspect_u64_hexadecimal.c buf_inspect_u64_octal.c buf_inspect_u8.c buf_inspect_u8_binary.c buf_inspect_u8_decimal.c buf_inspect_u8_hexadecimal.c buf_inspect_u8_octal.c buf_inspect_uw.c buf_inspect_uw_binary.c buf_inspect_uw_decimal.c buf_inspect_uw_hexadecimal.c buf_inspect_uw_octal.c buf_parse.c buf_parse_s16.c buf_parse_s32.c buf_parse_s64.c buf_parse_s8.c buf_parse_sw.c buf_parse_u16.c buf_parse_u32.c buf_parse_u64.c buf_parse_u8.c buf_parse_uw.c buf_save.c c3.c call.c ceiling.c cfn.c character.c compare.c data.c env.c error.c error_handler.c eval.c f32.c f64.c fact.c fact_list.c facts.c facts_cursor.c facts_spec.c facts_spec_cursor.c facts_with.c facts_with_cursor.c file.c fn.c fn_clause.c frame.c hash.c ident.c integer.c io.c license.c list.c list_init.c log.c map.c module.c operator.c ptag.c ptr.c ptr_free.c quote.c s16.c s32.c s64.c s8.c sequence.c set__fact.c set__tag.c set_cursor__fact.c set_cursor__tag.c set_item__fact.c set_item__tag.c sign.c skiplist__fact.c skiplist_node__fact.c str.c struct.c struct_type.c sw.c sym.c tag.c tag_add.c tag_band.c tag_bor.c tag_bxor.c tag_div.c tag_init.c tag_mod.c tag_mul.c tag_shift_left.c tag_shift_right.c tag_sub.c tag_type.c time.c tuple.c type.c u16.c u32.c u64.c u8.c ucd.c uw.c var.c void.c '
+HEADERS='abs.h arg.h array.h assert.h binding.h bool.h buf.h buf_file.h buf_inspect.h buf_inspect_s16.h buf_inspect_s16_binary.h buf_inspect_s16_decimal.h buf_inspect_s16_hexadecimal.h buf_inspect_s16_octal.h buf_inspect_s32.h buf_inspect_s32_binary.h buf_inspect_s32_decimal.h buf_inspect_s32_hexadecimal.h buf_inspect_s32_octal.h buf_inspect_s64.h buf_inspect_s64_binary.h buf_inspect_s64_decimal.h buf_inspect_s64_hexadecimal.h buf_inspect_s64_octal.h buf_inspect_s8.h buf_inspect_s8_binary.h buf_inspect_s8_decimal.h buf_inspect_s8_hexadecimal.h buf_inspect_s8_octal.h buf_inspect_sw.h buf_inspect_sw_binary.h buf_inspect_sw_decimal.h buf_inspect_sw_hexadecimal.h buf_inspect_sw_octal.h buf_inspect_u16.h buf_inspect_u16_binary.h buf_inspect_u16_decimal.h buf_inspect_u16_hexadecimal.h buf_inspect_u16_octal.h buf_inspect_u32.h buf_inspect_u32_binary.h buf_inspect_u32_decimal.h buf_inspect_u32_hexadecimal.h buf_inspect_u32_octal.h buf_inspect_u64.h buf_inspect_u64_binary.h buf_inspect_u64_decimal.h buf_inspect_u64_hexadecimal.h buf_inspect_u64_octal.h buf_inspect_u8.h buf_inspect_u8_binary.h buf_inspect_u8_decimal.h buf_inspect_u8_hexadecimal.h buf_inspect_u8_octal.h buf_inspect_uw.h buf_inspect_uw_binary.h buf_inspect_uw_decimal.h buf_inspect_uw_hexadecimal.h buf_inspect_uw_octal.h buf_parse.h buf_parse_s16.h buf_parse_s32.h buf_parse_s64.h buf_parse_s8.h buf_parse_sw.h buf_parse_u16.h buf_parse_u32.h buf_parse_u64.h buf_parse_u8.h buf_parse_uw.h buf_save.h c3.h c3_main.h call.h ceiling.h cfn.h character.h compare.h config.h data.h env.h error.h error_handler.h eval.h f128.h f32.h f64.h fact.h fact_list.h facts.h facts_cursor.h facts_spec.h facts_spec_cursor.h facts_with.h facts_with_cursor.h file.h float.h fn.h fn_clause.h frame.h hash.h ident.h integer.h io.h list.h list_init.h log.h map.h module.h operator.h ptag.h ptr.h ptr_free.h quote.h s16.h s32.h s64.h s8.h sequence.h set__fact.h set__tag.h set_cursor__fact.h set_cursor__tag.h set_item__fact.h set_item__tag.h sha1.h sign.h skiplist__fact.h skiplist_node__fact.h str.h struct.h struct_type.h sw.h sym.h tag.h tag_init.h tag_type.h time.h tuple.h type.h types.h u16.h u32.h u64.h u8.h ucd.h uw.h var.h void.h '
+SOURCES='abs.c arg.c array.c binding.c bool.c buf.c buf_file.c buf_inspect.c buf_inspect_s16.c buf_inspect_s16_binary.c buf_inspect_s16_decimal.c buf_inspect_s16_hexadecimal.c buf_inspect_s16_octal.c buf_inspect_s32.c buf_inspect_s32_binary.c buf_inspect_s32_decimal.c buf_inspect_s32_hexadecimal.c buf_inspect_s32_octal.c buf_inspect_s64.c buf_inspect_s64_binary.c buf_inspect_s64_decimal.c buf_inspect_s64_hexadecimal.c buf_inspect_s64_octal.c buf_inspect_s8.c buf_inspect_s8_binary.c buf_inspect_s8_decimal.c buf_inspect_s8_hexadecimal.c buf_inspect_s8_octal.c buf_inspect_sw.c buf_inspect_sw_binary.c buf_inspect_sw_decimal.c buf_inspect_sw_hexadecimal.c buf_inspect_sw_octal.c buf_inspect_u16.c buf_inspect_u16_binary.c buf_inspect_u16_decimal.c buf_inspect_u16_hexadecimal.c buf_inspect_u16_octal.c buf_inspect_u32.c buf_inspect_u32_binary.c buf_inspect_u32_decimal.c buf_inspect_u32_hexadecimal.c buf_inspect_u32_octal.c buf_inspect_u64.c buf_inspect_u64_binary.c buf_inspect_u64_decimal.c buf_inspect_u64_hexadecimal.c buf_inspect_u64_octal.c buf_inspect_u8.c buf_inspect_u8_binary.c buf_inspect_u8_decimal.c buf_inspect_u8_hexadecimal.c buf_inspect_u8_octal.c buf_inspect_uw.c buf_inspect_uw_binary.c buf_inspect_uw_decimal.c buf_inspect_uw_hexadecimal.c buf_inspect_uw_octal.c buf_parse.c buf_parse_s16.c buf_parse_s32.c buf_parse_s64.c buf_parse_s8.c buf_parse_sw.c buf_parse_u16.c buf_parse_u32.c buf_parse_u64.c buf_parse_u8.c buf_parse_uw.c buf_save.c c3.c call.c ceiling.c cfn.c character.c compare.c data.c env.c error.c error_handler.c eval.c f128.c f32.c f64.c fact.c fact_list.c facts.c facts_cursor.c facts_spec.c facts_spec_cursor.c facts_with.c facts_with_cursor.c file.c fn.c fn_clause.c frame.c hash.c ident.c integer.c io.c license.c list.c list_init.c log.c map.c module.c operator.c ptag.c ptr.c ptr_free.c quote.c s16.c s32.c s64.c s8.c sequence.c set__fact.c set__tag.c set_cursor__fact.c set_cursor__tag.c set_item__fact.c set_item__tag.c sign.c skiplist__fact.c skiplist_node__fact.c str.c struct.c struct_type.c sw.c sym.c tag.c tag_add.c tag_band.c tag_bor.c tag_bxor.c tag_div.c tag_init.c tag_mod.c tag_mul.c tag_shift_left.c tag_shift_right.c tag_sub.c tag_type.c time.c tuple.c type.c u16.c u32.c u64.c u8.c ucd.c uw.c var.c void.c '
+LO_SOURCES=' ../libtommath/bn_cutoffs.c ../libtommath/bn_mp_2expt.c ../libtommath/bn_mp_abs.c ../libtommath/bn_mp_add.c ../libtommath/bn_mp_add_d.c ../libtommath/bn_mp_and.c ../libtommath/bn_mp_clamp.c ../libtommath/bn_mp_clear.c ../libtommath/bn_mp_clear_multi.c ../libtommath/bn_mp_cmp.c ../libtommath/bn_mp_cmp_d.c ../libtommath/bn_mp_cmp_mag.c ../libtommath/bn_mp_cnt_lsb.c ../libtommath/bn_mp_complement.c ../libtommath/bn_mp_copy.c ../libtommath/bn_mp_count_bits.c ../libtommath/bn_mp_div.c ../libtommath/bn_mp_div_2.c ../libtommath/bn_mp_div_2d.c ../libtommath/bn_mp_div_3.c ../libtommath/bn_mp_div_d.c ../libtommath/bn_mp_dr_is_modulus.c ../libtommath/bn_mp_dr_reduce.c ../libtommath/bn_mp_dr_setup.c ../libtommath/bn_mp_error_to_string.c ../libtommath/bn_mp_exch.c ../libtommath/bn_mp_exptmod.c ../libtommath/bn_mp_gcd.c ../libtommath/bn_mp_get_double.c ../libtommath/bn_mp_get_i32.c ../libtommath/bn_mp_get_i64.c ../libtommath/bn_mp_get_mag_u32.c ../libtommath/bn_mp_get_mag_u64.c ../libtommath/bn_mp_grow.c ../libtommath/bn_mp_init.c ../libtommath/bn_mp_init_copy.c ../libtommath/bn_mp_init_multi.c ../libtommath/bn_mp_init_size.c ../libtommath/bn_mp_invmod.c ../libtommath/bn_mp_lcm.c ../libtommath/bn_mp_lshd.c ../libtommath/bn_mp_mod.c ../libtommath/bn_mp_mod_2d.c ../libtommath/bn_mp_montgomery_calc_normalization.c ../libtommath/bn_mp_montgomery_reduce.c ../libtommath/bn_mp_montgomery_setup.c ../libtommath/bn_mp_mul.c ../libtommath/bn_mp_mul_2.c ../libtommath/bn_mp_mul_2d.c ../libtommath/bn_mp_mul_d.c ../libtommath/bn_mp_mulmod.c ../libtommath/bn_mp_neg.c ../libtommath/bn_mp_or.c ../libtommath/bn_mp_radix_size.c ../libtommath/bn_mp_reduce.c ../libtommath/bn_mp_reduce_2k.c ../libtommath/bn_mp_reduce_2k_l.c ../libtommath/bn_mp_reduce_2k_setup.c ../libtommath/bn_mp_reduce_2k_setup_l.c ../libtommath/bn_mp_reduce_is_2k.c ../libtommath/bn_mp_reduce_is_2k_l.c ../libtommath/bn_mp_reduce_setup.c ../libtommath/bn_mp_rshd.c ../libtommath/bn_mp_set.c ../libtommath/bn_mp_set_double.c ../libtommath/bn_mp_set_i32.c ../libtommath/bn_mp_set_i64.c ../libtommath/bn_mp_set_l.c ../libtommath/bn_mp_set_u32.c ../libtommath/bn_mp_set_u64.c ../libtommath/bn_mp_set_ul.c ../libtommath/bn_mp_sqr.c ../libtommath/bn_mp_sqrt.c ../libtommath/bn_mp_sub.c ../libtommath/bn_mp_sub_d.c ../libtommath/bn_mp_xor.c ../libtommath/bn_mp_zero.c ../libtommath/bn_s_mp_add.c ../libtommath/bn_s_mp_balance_mul.c ../libtommath/bn_s_mp_exptmod.c ../libtommath/bn_s_mp_exptmod_fast.c ../libtommath/bn_s_mp_invmod_fast.c ../libtommath/bn_s_mp_invmod_slow.c ../libtommath/bn_s_mp_karatsuba_mul.c ../libtommath/bn_s_mp_karatsuba_sqr.c ../libtommath/bn_s_mp_montgomery_reduce_fast.c ../libtommath/bn_s_mp_mul_digs.c ../libtommath/bn_s_mp_mul_digs_fast.c ../libtommath/bn_s_mp_mul_high_digs.c ../libtommath/bn_s_mp_mul_high_digs_fast.c ../libtommath/bn_s_mp_rand_platform.c ../libtommath/bn_s_mp_sqr.c ../libtommath/bn_s_mp_sqr_fast.c ../libtommath/bn_s_mp_sub.c ../libtommath/bn_s_mp_toom_mul.c ../libtommath/bn_s_mp_toom_sqr.c abs.c arg.c array.c binding.c bool.c buf.c buf_file.c buf_inspect.c buf_inspect_s16.c buf_inspect_s16_binary.c buf_inspect_s16_decimal.c buf_inspect_s16_hexadecimal.c buf_inspect_s16_octal.c buf_inspect_s32.c buf_inspect_s32_binary.c buf_inspect_s32_decimal.c buf_inspect_s32_hexadecimal.c buf_inspect_s32_octal.c buf_inspect_s64.c buf_inspect_s64_binary.c buf_inspect_s64_decimal.c buf_inspect_s64_hexadecimal.c buf_inspect_s64_octal.c buf_inspect_s8.c buf_inspect_s8_binary.c buf_inspect_s8_decimal.c buf_inspect_s8_hexadecimal.c buf_inspect_s8_octal.c buf_inspect_sw.c buf_inspect_sw_binary.c buf_inspect_sw_decimal.c buf_inspect_sw_hexadecimal.c buf_inspect_sw_octal.c buf_inspect_u16.c buf_inspect_u16_binary.c buf_inspect_u16_decimal.c buf_inspect_u16_hexadecimal.c buf_inspect_u16_octal.c buf_inspect_u32.c buf_inspect_u32_binary.c buf_inspect_u32_decimal.c buf_inspect_u32_hexadecimal.c buf_inspect_u32_octal.c buf_inspect_u64.c buf_inspect_u64_binary.c buf_inspect_u64_decimal.c buf_inspect_u64_hexadecimal.c buf_inspect_u64_octal.c buf_inspect_u8.c buf_inspect_u8_binary.c buf_inspect_u8_decimal.c buf_inspect_u8_hexadecimal.c buf_inspect_u8_octal.c buf_inspect_uw.c buf_inspect_uw_binary.c buf_inspect_uw_decimal.c buf_inspect_uw_hexadecimal.c buf_inspect_uw_octal.c buf_parse.c buf_parse_s16.c buf_parse_s32.c buf_parse_s64.c buf_parse_s8.c buf_parse_sw.c buf_parse_u16.c buf_parse_u32.c buf_parse_u64.c buf_parse_u8.c buf_parse_uw.c buf_save.c c3.c call.c ceiling.c cfn.c character.c compare.c data.c env.c error.c error_handler.c eval.c f128.c f32.c f64.c fact.c fact_list.c facts.c facts_cursor.c facts_spec.c facts_spec_cursor.c facts_with.c facts_with_cursor.c file.c fn.c fn_clause.c frame.c hash.c ident.c integer.c io.c license.c list.c list_init.c log.c map.c module.c operator.c ptag.c ptr.c ptr_free.c quote.c s16.c s32.c s64.c s8.c sequence.c set__fact.c set__tag.c set_cursor__fact.c set_cursor__tag.c set_item__fact.c set_item__tag.c sign.c skiplist__fact.c skiplist_node__fact.c str.c struct.c struct_type.c sw.c sym.c tag.c tag_add.c tag_band.c tag_bor.c tag_bxor.c tag_div.c tag_init.c tag_mod.c tag_mul.c tag_shift_left.c tag_shift_right.c tag_sub.c tag_type.c time.c tuple.c type.c u16.c u32.c u64.c u8.c ucd.c uw.c var.c void.c '
diff --git a/libc3/sym.c b/libc3/sym.c
index 8bdfab4..c4f0a66 100644
--- a/libc3/sym.c
+++ b/libc3/sym.c
@@ -25,6 +25,7 @@ const s_sym g_sym_Character = {{{NULL}, 9, {"Character"}}};
const s_sym g_sym_Char__star = {{{NULL}, 5, {"Char*"}}};
const s_sym g_sym_F32 = {{{NULL}, 3, {"F32"}}};
const s_sym g_sym_F64 = {{{NULL}, 3, {"F64"}}};
+const s_sym g_sym_F128 = {{{NULL}, 3, {"F128"}}};
const s_sym g_sym_Fact = {{{NULL}, 4, {"Fact"}}};
const s_sym g_sym_Fn = {{{NULL}, 2, {"Fn"}}};
const s_sym g_sym_Ident = {{{NULL}, 5, {"Ident"}}};
@@ -203,6 +204,7 @@ void sym_init_g_sym (void)
sym_intern(&g_sym_Char__star, NULL);
sym_intern(&g_sym_F32, NULL);
sym_intern(&g_sym_F64, NULL);
+ sym_intern(&g_sym_F128, NULL);
sym_intern(&g_sym_Fact, NULL);
sym_intern(&g_sym_Fn, NULL);
sym_intern(&g_sym_Ident, NULL);
@@ -366,6 +368,10 @@ bool sym_to_ffi_type (const s_sym *sym, ffi_type *result_type,
*dest = &ffi_type_double;
return true;
}
+ if (sym == &g_sym_F128) {
+ *dest = &ffi_type_longdouble;
+ return true;
+ }
if (sym == &g_sym_Fn) {
*dest = &ffi_type_pointer;
return true;
@@ -775,6 +781,10 @@ bool sym_to_tag_type (const s_sym *sym, e_tag_type *dest)
*dest = TAG_F64;
return true;
}
+ if (sym == &g_sym_F128) {
+ *dest = TAG_F128;
+ return true;
+ }
if (sym == &g_sym_Fn) {
*dest = TAG_FN;
return true;
@@ -917,6 +927,10 @@ bool sym_type_size (const s_sym *type, uw *dest)
*dest = sizeof(f64);
return true;
}
+ if (type == &g_sym_F128) {
+ *dest = sizeof(f128);
+ return true;
+ }
if (type == &g_sym_Fact) {
*dest = sizeof(s_fact);
return true;
diff --git a/libc3/sym.h b/libc3/sym.h
index 39d50bb..dae91bc 100644
--- a/libc3/sym.h
+++ b/libc3/sym.h
@@ -37,6 +37,7 @@ extern const s_sym g_sym_Character;
extern const s_sym g_sym_Char__star;
extern const s_sym g_sym_F32;
extern const s_sym g_sym_F64;
+extern const s_sym g_sym_F128;
extern const s_sym g_sym_Fact;
extern const s_sym g_sym_Fn;
extern const s_sym g_sym_Ident;
diff --git a/libc3/tag.c b/libc3/tag.c
index f45ea78..14dfd0d 100644
--- a/libc3/tag.c
+++ b/libc3/tag.c
@@ -194,6 +194,7 @@ void tag_clean (s_tag *tag)
case TAG_CHARACTER:
case TAG_F32:
case TAG_F64:
+ case TAG_F128:
case TAG_FACT:
case TAG_IDENT:
case TAG_PTAG:
@@ -283,6 +284,7 @@ s_tag * tag_init_copy (s_tag *tag, const s_tag *src)
case TAG_CHARACTER:
case TAG_F32:
case TAG_F64:
+ case TAG_F128:
case TAG_FACT:
case TAG_IDENT:
case TAG_PTAG:
@@ -671,6 +673,7 @@ bool tag_to_const_pointer (const s_tag *tag, const s_sym *type,
case TAG_CHARACTER: *dest = &tag->data.character; return true;
case TAG_F32: *dest = &tag->data.f32; return true;
case TAG_F64: *dest = &tag->data.f64; return true;
+ case TAG_F128: *dest = &tag->data.f128; return true;
case TAG_FACT: *dest = &tag->data.fact; return true;
case TAG_FN: *dest = &tag->data.fn; return true;
case TAG_IDENT: *dest = &tag->data.ident; return true;
@@ -760,6 +763,12 @@ bool tag_to_ffi_pointer (s_tag *tag, const s_sym *type, void **dest)
return true;
}
goto invalid_cast;
+ case TAG_F128:
+ if (type == &g_sym_F128) {
+ *dest = &tag->data.f128;
+ return true;
+ }
+ goto invalid_cast;
case TAG_FACT:
if (type == &g_sym_Fact) {
*dest = &tag->data.fact;
@@ -961,6 +970,7 @@ bool tag_to_pointer (s_tag *tag, const s_sym *type, void **dest)
case TAG_CHARACTER: *dest = &tag->data.character; return true;
case TAG_F32: *dest = &tag->data.f32; return true;
case TAG_F64: *dest = &tag->data.f64; return true;
+ case TAG_F128: *dest = &tag->data.f128; return true;
case TAG_FACT: *dest = &tag->data.fact; return true;
case TAG_FN: *dest = &tag->data.fn; return true;
case TAG_IDENT: *dest = &tag->data.ident; return true;
@@ -1006,6 +1016,7 @@ const s_sym ** tag_type (const s_tag *tag, const s_sym **dest)
case TAG_CHARACTER: *dest = &g_sym_Character; return dest;
case TAG_F32: *dest = &g_sym_F32; return dest;
case TAG_F64: *dest = &g_sym_F64; return dest;
+ case TAG_F128: *dest = &g_sym_F128; return dest;
case TAG_FACT: *dest = &g_sym_Fact; return dest;
case TAG_FN: *dest = &g_sym_Fn; return dest;
case TAG_IDENT: *dest = &g_sym_Ident; return dest;
diff --git a/libc3/tag_init.c b/libc3/tag_init.c
index 7ce0550..1373c60 100644
--- a/libc3/tag_init.c
+++ b/libc3/tag_init.c
@@ -101,6 +101,16 @@ s_tag * tag_init_f64 (s_tag *tag, f64 f)
return tag;
}
+s_tag * tag_init_f128 (s_tag *tag, f128 f)
+{
+ s_tag tmp = {0};
+ assert(tag);
+ tmp.type = TAG_F128;
+ tmp.data.f128 = f;
+ *tag = tmp;
+ return tag;
+}
+
s_tag * tag_init_ident (s_tag *tag, const s_ident *ident)
{
s_tag tmp = {0};
@@ -484,6 +494,18 @@ s_tag * tag_new_f64 (f64 f)
return tag;
}
+s_tag * tag_new_f128 (f128 f)
+{
+ s_tag *tag;
+ if (! (tag = calloc(1, sizeof(s_tag)))) {
+ warn("tag_new_f128: calloc");
+ return NULL;
+ }
+ tag->type = TAG_F128;
+ tag->data.f128 = f;
+ return tag;
+}
+
s_tag * tag_new_ident (const s_ident *ident)
{
s_tag *tag;
@@ -943,6 +965,17 @@ s_tag * tag_f64 (s_tag *tag, f64 f)
return tag;
}
+s_tag * tag_f128 (s_tag *tag, f128 f)
+{
+ s_tag tmp = {0};
+ assert(tag);
+ tag_clean(tag);
+ tmp.type = TAG_F128;
+ tmp.data.f128 = f;
+ *tag = tmp;
+ return tag;
+}
+
s_tag * tag_ident (s_tag *tag, const s_ident *ident)
{
s_tag tmp = {0};
diff --git a/libc3/tag_init.h b/libc3/tag_init.h
index b31e3b7..0b97f9d 100644
--- a/libc3/tag_init.h
+++ b/libc3/tag_init.h
@@ -24,6 +24,7 @@ s_tag * tag_init_character (s_tag *tag, character c);
s_tag * tag_init_copy (s_tag *tag, const s_tag *src);
s_tag * tag_init_f32 (s_tag *tag, f32 f);
s_tag * tag_init_f64 (s_tag *tag, f64 f);
+s_tag * tag_init_f128 (s_tag *tag, f128 f);
s_tag * tag_init_ident (s_tag *tag, const s_ident *ident);
s_tag * tag_init_ident_1 (s_tag *tag, const char *p);
s_tag * tag_init_integer_1 (s_tag *tag, const char *p);
@@ -65,6 +66,7 @@ s_tag * tag_new_character (character c);
s_tag * tag_new_copy (const s_tag *src);
s_tag * tag_new_f32 (f32 f);
s_tag * tag_new_f64 (f64 f);
+s_tag * tag_new_f128 (f128 f);
s_tag * tag_new_ident (const s_ident *ident);
s_tag * tag_new_ident_1 (const char *p);
s_tag * tag_new_integer_1 (const char *p);
@@ -106,6 +108,7 @@ s_tag * tag_character (s_tag *tag, character c);
s_tag * tag_copy (s_tag *tag, const s_tag *src);
s_tag * tag_f32 (s_tag *tag, f32 f);
s_tag * tag_f64 (s_tag *tag, f64 f);
+s_tag * tag_f128 (s_tag *tag, f128 f);
s_tag * tag_ident (s_tag *tag, const s_ident *ident);
s_tag * tag_ident_1 (s_tag *tag, const char *p);
s_tag * tag_integer_1 (s_tag *tag, const char *p);
diff --git a/libc3/tag_init.rb b/libc3/tag_init.rb
index 2ba03bc..8aa0200 100644
--- a/libc3/tag_init.rb
+++ b/libc3/tag_init.rb
@@ -315,6 +315,8 @@ class TagInitList
[Arg.new("f32", "f")]),
TagInit.new("f64", "TAG_F64", :init_mode_direct,
[Arg.new("f64", "f")]),
+ TagInit.new("f128", "TAG_F128", :init_mode_direct,
+ [Arg.new("f128", "f")]),
TagInit.new("ident", "TAG_IDENT", :init_mode_direct,
[Arg.new("const s_ident *", "ident")]),
TagInit1.new("ident", "1", "TAG_IDENT", :init_mode_init),
diff --git a/libc3/tag_type.c b/libc3/tag_type.c
index 2dad942..7a1f3ba 100644
--- a/libc3/tag_type.c
+++ b/libc3/tag_type.c
@@ -24,6 +24,7 @@ bool tag_type_size (e_tag_type type, uw *dest)
case TAG_CHARACTER: *dest = sizeof(character); return true;
case TAG_F32: *dest = sizeof(f32); return true;
case TAG_F64: *dest = sizeof(f64); return true;
+ case TAG_F128: *dest = sizeof(f128); return true;
case TAG_FACT: *dest = sizeof(s_fact); return true;
case TAG_FN: *dest = sizeof(s_fn); return true;
case TAG_IDENT: *dest = sizeof(s_ident); return true;
@@ -59,40 +60,41 @@ bool tag_type_size (e_tag_type type, uw *dest)
bool tag_type_to_ffi_type (e_tag_type type, ffi_type **dest)
{
switch (type) {
- case TAG_ARRAY: *dest = &ffi_type_pointer; return true;
- case TAG_BOOL: *dest = &ffi_type_uint8; return true;
- case TAG_CALL: *dest = &ffi_type_pointer; return true;
- case TAG_CFN: *dest = &ffi_type_pointer; return true;
- case TAG_CHARACTER: *dest = &ffi_type_uint32; return true;
- case TAG_F32: *dest = &ffi_type_float; return true;
- case TAG_F64: *dest = &ffi_type_double; return true;
- case TAG_FACT: *dest = &ffi_type_pointer; return true;
- case TAG_FN: *dest = &ffi_type_pointer; return true;
- case TAG_IDENT: *dest = &ffi_type_pointer; return true;
- case TAG_INTEGER: *dest = &ffi_type_pointer; return true;
- case TAG_LIST: *dest = &ffi_type_pointer; return true;
- case TAG_MAP: *dest = &ffi_type_pointer; return true;
- case TAG_PTAG: *dest = &ffi_type_pointer; return true;
- case TAG_PTR: *dest = &ffi_type_pointer; return true;
- case TAG_PTR_FREE: *dest = &ffi_type_pointer; return true;
- case TAG_QUOTE: *dest = &ffi_type_pointer; return true;
- case TAG_S8: *dest = &ffi_type_sint8; return true;
- case TAG_S16: *dest = &ffi_type_sint16; return true;
- case TAG_S32: *dest = &ffi_type_sint32; return true;
- case TAG_S64: *dest = &ffi_type_sint64; return true;
- case TAG_SW: *dest = &ffi_type_slong; return true;
- case TAG_STR: *dest = &ffi_type_pointer; return true;
- case TAG_STRUCT: *dest = &ffi_type_pointer; return true;
- case TAG_STRUCT_TYPE: *dest = &ffi_type_pointer; return true;
- case TAG_SYM: *dest = &ffi_type_pointer; return true;
- case TAG_TUPLE: *dest = &ffi_type_pointer; return true;
- case TAG_U8: *dest = &ffi_type_uint8; return true;
- case TAG_U16: *dest = &ffi_type_uint16; return true;
- case TAG_U32: *dest = &ffi_type_uint32; return true;
- case TAG_U64: *dest = &ffi_type_uint64; return true;
- case TAG_UW: *dest = &ffi_type_ulong; return true;
- case TAG_VAR: *dest = &ffi_type_pointer; return true;
- case TAG_VOID: *dest = &ffi_type_void; return true;
+ case TAG_ARRAY: *dest = &ffi_type_pointer; return true;
+ case TAG_BOOL: *dest = &ffi_type_uint8; return true;
+ case TAG_CALL: *dest = &ffi_type_pointer; return true;
+ case TAG_CFN: *dest = &ffi_type_pointer; return true;
+ case TAG_CHARACTER: *dest = &ffi_type_uint32; return true;
+ case TAG_F32: *dest = &ffi_type_float; return true;
+ case TAG_F64: *dest = &ffi_type_double; return true;
+ case TAG_F128: *dest = &ffi_type_longdouble; return true;
+ case TAG_FACT: *dest = &ffi_type_pointer; return true;
+ case TAG_FN: *dest = &ffi_type_pointer; return true;
+ case TAG_IDENT: *dest = &ffi_type_pointer; return true;
+ case TAG_INTEGER: *dest = &ffi_type_pointer; return true;
+ case TAG_LIST: *dest = &ffi_type_pointer; return true;
+ case TAG_MAP: *dest = &ffi_type_pointer; return true;
+ case TAG_PTAG: *dest = &ffi_type_pointer; return true;
+ case TAG_PTR: *dest = &ffi_type_pointer; return true;
+ case TAG_PTR_FREE: *dest = &ffi_type_pointer; return true;
+ case TAG_QUOTE: *dest = &ffi_type_pointer; return true;
+ case TAG_S8: *dest = &ffi_type_sint8; return true;
+ case TAG_S16: *dest = &ffi_type_sint16; return true;
+ case TAG_S32: *dest = &ffi_type_sint32; return true;
+ case TAG_S64: *dest = &ffi_type_sint64; return true;
+ case TAG_SW: *dest = &ffi_type_slong; return true;
+ case TAG_STR: *dest = &ffi_type_pointer; return true;
+ case TAG_STRUCT: *dest = &ffi_type_pointer; return true;
+ case TAG_STRUCT_TYPE: *dest = &ffi_type_pointer; return true;
+ case TAG_SYM: *dest = &ffi_type_pointer; return true;
+ case TAG_TUPLE: *dest = &ffi_type_pointer; return true;
+ case TAG_U8: *dest = &ffi_type_uint8; return true;
+ case TAG_U16: *dest = &ffi_type_uint16; return true;
+ case TAG_U32: *dest = &ffi_type_uint32; return true;
+ case TAG_U64: *dest = &ffi_type_uint64; return true;
+ case TAG_UW: *dest = &ffi_type_ulong; return true;
+ case TAG_VAR: *dest = &ffi_type_pointer; return true;
+ case TAG_VOID: *dest = &ffi_type_void; return true;
}
warnx("tag_type_to_ffi_type: unknown tag type: %d", type);
assert(! "tag_type_to_ffi_type: unknown tag type");
@@ -110,6 +112,7 @@ const char * tag_type_to_string (e_tag_type tag_type)
case TAG_CHARACTER: return "Character";
case TAG_F32: return "F32";
case TAG_F64: return "F64";
+ case TAG_F128: return "F128";
case TAG_FACT: return "Fact";
case TAG_FN: return "Fn";
case TAG_IDENT: return "Ident";
diff --git a/libc3/types.h b/libc3/types.h
index 6c61ebb..0a40f9c 100644
--- a/libc3/types.h
+++ b/libc3/types.h
@@ -73,8 +73,9 @@ typedef unsigned long uw;
#define UW_MAX ((uw) ~ 0)
/* IEEE 754 floating point numbers. */
-typedef float f32;
-typedef double f64;
+typedef float f32;
+typedef double f64;
+typedef long double f128;
/* Boolean : true or false. */
typedef u8 bool;
@@ -94,6 +95,7 @@ typedef enum {
TAG_CHARACTER,
TAG_F32,
TAG_F64,
+ TAG_F128,
TAG_FACT,
TAG_FN,
TAG_INTEGER,
@@ -398,6 +400,7 @@ union tag_data {
character character;
f32 f32;
f64 f64;
+ f128 f128;
s_fact fact;
s_fn fn;
s_ident ident;
diff --git a/libc3/window/sdl2/demo/mandelbrot_f128.c b/libc3/window/sdl2/demo/mandelbrot_f128.c
new file mode 100644
index 0000000..e99d6bf
--- /dev/null
+++ b/libc3/window/sdl2/demo/mandelbrot_f128.c
@@ -0,0 +1,84 @@
+/* c3
+ * Copyright 2022,2023 kmx.io <contact@kmx.io>
+ *
+ * Permission is hereby granted to use this software granted the above
+ * copyright notice and this permission paragraph are included in all
+ * copies and substantial portions of this software.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS-IS" WITHOUT ANY GUARANTEE OF
+ * PURPOSE AND PERFORMANCE. IN NO EVENT WHATSOEVER SHALL THE
+ * AUTHOR BE CONSIDERED LIABLE FOR THE USE AND PERFORMANCE OF
+ * THIS SOFTWARE.
+ */
+#include <math.h>
+#include <libc3/c3.h>
+#include "../types.h"
+#include "mandelbrot_f128.h"
+
+bool mandelbrot_f128_load (s_sequence *seq)
+{
+ s_map *map;
+ assert(seq);
+ if (! tag_map(&seq->tag, 5))
+ return false;
+ map = &seq->tag.data.map;
+ tag_init_sym( map->key + 0, sym_1("h"));
+ tag_init_uw( map->value + 0, 0);
+ tag_init_sym( map->key + 1, sym_1("pixels"));
+ tag_init_uw( map->value + 1, 0);
+ tag_init_sym( map->key + 2, sym_1("w"));
+ tag_init_uw( map->value + 2, 0);
+ tag_init_sym( map->key + 3, sym_1("x"));
+ tag_init_f128(map->value + 3, 0.0);
+ tag_init_sym( map->key + 4, sym_1("y"));
+ tag_init_f128(map->value + 4, 0.0);
+ tag_init_sym( map->key + 5, sym_1("z"));
+ tag_init_f128(map->value + 5, 0.01);
+ return true;
+}
+
+bool mandelbrot_f128_render (s_sequence *seq)
+{
+ uw *h;
+ s_map *map;
+ uw *w;
+ s_window_sdl2 *win;
+ f128 *x;
+ f128 *y;
+ f128 *z;
+ assert(seq);
+ assert(seq->window);
+ win = seq->window;
+ assert(seq->tag.type == TAG_MAP);
+ map = &seq->tag.data.map;
+ assert(map->key[0].type == TAG_SYM);
+ assert(map->key[0].data.sym == sym_1("h"));
+ assert(map->value[0].type == TAG_UW);
+ h = &map->value[0].data.uw;
+ assert(map->key[1].type == TAG_SYM);
+ assert(map->key[1].data.sym == sym_1("w"));
+ assert(map->value[1].type == TAG_UW);
+ w = &map->value[1].data.uw;
+ assert(map->key[2].type == TAG_SYM);
+ assert(map->key[2].data.sym == sym_1("x"));
+ assert(map->value[2].type == TAG_F128);
+ x = &map->value[2].data.f128;
+ assert(map->key[3].type == TAG_SYM);
+ assert(map->key[3].data.sym == sym_1("y"));
+ assert(map->value[3].type == TAG_F128);
+ y = &map->value[3].data.f128;
+ assert(map->key[4].type == TAG_SYM);
+ assert(map->key[4].data.sym == sym_1("z"));
+ assert(map->value[4].type == TAG_F128);
+ z = &map->value[4].data.f128;
+ if (*w != win->w || *h != win->h)
+ mandelbrot_f128_resize(seq);
+ assert(glGetError() == GL_NO_ERROR);
+ return true;
+}
+
+bool mandelbrot_f128_unload (s_sequence *seq)
+{
+ (void) seq;
+ return true;
+}
diff --git a/libc3/window/sdl2/demo/mandelbrot_f128.h b/libc3/window/sdl2/demo/mandelbrot_f128.h
new file mode 100644
index 0000000..43a2047
--- /dev/null
+++ b/libc3/window/sdl2/demo/mandelbrot_f128.h
@@ -0,0 +1,22 @@
+/* c3
+ * Copyright 2022,2023 kmx.io <contact@kmx.io>
+ *
+ * Permission is hereby granted to use this software granted the above
+ * copyright notice and this permission paragraph are included in all
+ * copies and substantial portions of this software.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS-IS" WITHOUT ANY GUARANTEE OF
+ * PURPOSE AND PERFORMANCE. IN NO EVENT WHATSOEVER SHALL THE
+ * AUTHOR BE CONSIDERED LIABLE FOR THE USE AND PERFORMANCE OF
+ * THIS SOFTWARE.
+ */
+#ifndef MANDELBROT_F128_H
+#define MANDELBROT_F128_H
+
+#include "../types.h"
+
+bool mandelbrot_f128_load (s_sequence *seq);
+bool mandelbrot_f128_render (s_sequence *seq);
+bool mandelbrot_f128_unload (s_sequence *seq);
+
+#endif /* MANDELBROT_F128_H */
diff --git a/libc3/window/sdl2/demo/sources.mk b/libc3/window/sdl2/demo/sources.mk
index 3bc0fc5..6f9a8d0 100644
--- a/libc3/window/sdl2/demo/sources.mk
+++ b/libc3/window/sdl2/demo/sources.mk
@@ -4,6 +4,7 @@ HEADERS = \
"earth.h" \
"flies.h" \
"lightspeed.h" \
+ "mandelbrot_f128.h" \
"toasters.h" \
"window_sdl2_demo.h" \
@@ -12,6 +13,7 @@ SOURCES = \
"earth.c" \
"flies.c" \
"lightspeed.c" \
+ "mandelbrot_f128.c" \
"toasters.c" \
"window_sdl2_demo.c" \
diff --git a/libc3/window/sdl2/demo/sources.sh b/libc3/window/sdl2/demo/sources.sh
index 162072a..d6c8ad4 100644
--- a/libc3/window/sdl2/demo/sources.sh
+++ b/libc3/window/sdl2/demo/sources.sh
@@ -1,3 +1,3 @@
# sources.sh generated by update_sources
-HEADERS='bg_rect.h earth.h flies.h lightspeed.h toasters.h window_sdl2_demo.h '
-SOURCES='bg_rect.c earth.c flies.c lightspeed.c toasters.c window_sdl2_demo.c '
+HEADERS='bg_rect.h earth.h flies.h lightspeed.h mandelbrot_f128.h toasters.h window_sdl2_demo.h '
+SOURCES='bg_rect.c earth.c flies.c lightspeed.c mandelbrot_f128.c toasters.c window_sdl2_demo.c '
diff --git a/sources.mk b/sources.mk
index 596b023..42baf56 100644
--- a/sources.mk
+++ b/sources.mk
@@ -278,6 +278,8 @@ C3_C_SOURCES = \
"libc3/error_handler.h" \
"libc3/eval.c" \
"libc3/eval.h" \
+ "libc3/f128.c" \
+ "libc3/f128.h" \
"libc3/f32.c" \
"libc3/f32.h" \
"libc3/f64.c" \
@@ -471,6 +473,8 @@ C3_C_SOURCES = \
"libc3/window/sdl2/demo/flies.h" \
"libc3/window/sdl2/demo/lightspeed.c" \
"libc3/window/sdl2/demo/lightspeed.h" \
+ "libc3/window/sdl2/demo/mandelbrot_f128.c" \
+ "libc3/window/sdl2/demo/mandelbrot_f128.h" \
"libc3/window/sdl2/demo/toasters.c" \
"libc3/window/sdl2/demo/toasters.h" \
"libc3/window/sdl2/demo/window_sdl2_demo.c" \
diff --git a/sources.sh b/sources.sh
index cfbde5d..d53df36 100644
--- a/sources.sh
+++ b/sources.sh
@@ -1,7 +1,7 @@
# sources.sh generated by update_sources
C3_CONFIGURES='c3c/configure c3s/configure c3s/sources.sh c3s/update_sources ic3/configure ic3/sources.sh ic3/update_sources libc3/configure libc3/sources.sh libc3/update_sources libc3/window/cairo/configure libc3/window/cairo/demo/configure libc3/window/cairo/demo/sources.sh libc3/window/cairo/demo/update_sources libc3/window/cairo/quartz/configure libc3/window/cairo/quartz/demo/configure libc3/window/cairo/quartz/demo/sources.sh libc3/window/cairo/quartz/demo/update_sources libc3/window/cairo/quartz/sources.sh libc3/window/cairo/quartz/update_sources libc3/window/cairo/sources.sh libc3/window/cairo/update_sources libc3/window/cairo/win32/configure libc3/window/cairo/win32/demo/configure libc3/window/cairo/win32/demo/sources.sh libc3/window/cairo/win32/demo/update_sources libc3/window/cairo/win32/sources.sh libc3/window/cairo/win32/update_sources libc3/window/cairo/xcb/configure libc3/window/cairo/xcb/demo/configure libc3/window/cairo/xcb/demo/sources.sh libc3/window/cairo/xcb/demo/update_sources libc3/window/cairo/xcb/sources.sh libc3/window/cairo/xcb/update_sources libc3/window/configure libc3/window/sdl2/configure libc3/window/sdl2/demo/configure libc3/window/sdl2/demo/macos/configure libc3/window/sdl2/demo/sources.sh libc3/window/sdl2/demo/update_sources libc3/window/sdl2/sources.sh libc3/window/sdl2/update_sources libc3/window/sources.sh libc3/window/update_sources libtommath/configure libtommath/sources.sh libtommath/update_sources test/configure test/sources.sh test/update_sources ucd2c/configure '
C3_MAKEFILES='c3c/Makefile c3s/Makefile c3s/sources.mk ic3/Makefile ic3/sources.mk libc3/Makefile libc3/gen.mk libc3/sources.mk libc3/window/Makefile libc3/window/cairo/Makefile libc3/window/cairo/demo/Makefile libc3/window/cairo/demo/sources.mk libc3/window/cairo/quartz/Makefile libc3/window/cairo/quartz/demo/Makefile libc3/window/cairo/quartz/demo/sources.mk libc3/window/cairo/quartz/sources.mk libc3/window/cairo/sources.mk libc3/window/cairo/win32/Makefile libc3/window/cairo/win32/demo/Makefile libc3/window/cairo/win32/demo/sources.mk libc3/window/cairo/win32/sources.mk libc3/window/cairo/xcb/Makefile libc3/window/cairo/xcb/demo/Makefile libc3/window/cairo/xcb/demo/sources.mk libc3/window/cairo/xcb/sources.mk libc3/window/sdl2/Makefile libc3/window/sdl2/demo/Makefile libc3/window/sdl2/demo/macos/Makefile libc3/window/sdl2/demo/sources.mk libc3/window/sdl2/sources.mk libc3/window/sources.mk libtommath/Makefile libtommath/sources.mk test/Makefile test/sources.mk ucd2c/Makefile '
-C3_C_SOURCES='c3c/c3c.c c3s/buf_readline.c c3s/buf_readline.h c3s/c3s.c ic3/buf_linenoise.c ic3/buf_linenoise.h ic3/buf_wineditline.c ic3/buf_wineditline.h ic3/config.h ic3/ic3.c ic3/linenoise.c libc3/abs.c libc3/abs.h libc3/arg.c libc3/arg.h libc3/array.c libc3/array.h libc3/assert.h libc3/binding.c libc3/binding.h libc3/bool.c libc3/bool.h libc3/buf.c libc3/buf.h libc3/buf_file.c libc3/buf_file.h libc3/buf_inspect.c libc3/buf_inspect.h libc3/buf_inspect_s.c.in libc3/buf_inspect_s.h.in libc3/buf_inspect_s16.c libc3/buf_inspect_s16.h libc3/buf_inspect_s16_binary.c libc3/buf_inspect_s16_binary.h libc3/buf_inspect_s16_decimal.c libc3/buf_inspect_s16_decimal.h libc3/buf_inspect_s16_hexadecimal.c libc3/buf_inspect_s16_hexadecimal.h libc3/buf_inspect_s16_octal.c libc3/buf_inspect_s16_octal.h libc3/buf_inspect_s32.c libc3/buf_inspect_s32.h libc3/buf_inspect_s32_binary.c libc3/buf_inspect_s32_binary.h libc3/buf_inspect_s32_decimal.c libc3/buf_inspect_s32_decimal.h libc3/buf_inspect_s32_hexadecimal.c libc3/buf_inspect_s32_hexadecimal.h libc3/buf_inspect_s32_octal.c libc3/buf_inspect_s32_octal.h libc3/buf_inspect_s64.c libc3/buf_inspect_s64.h libc3/buf_inspect_s64_binary.c libc3/buf_inspect_s64_binary.h libc3/buf_inspect_s64_decimal.c libc3/buf_inspect_s64_decimal.h libc3/buf_inspect_s64_hexadecimal.c libc3/buf_inspect_s64_hexadecimal.h libc3/buf_inspect_s64_octal.c libc3/buf_inspect_s64_octal.h libc3/buf_inspect_s8.c libc3/buf_inspect_s8.h libc3/buf_inspect_s8_binary.c libc3/buf_inspect_s8_binary.h libc3/buf_inspect_s8_decimal.c libc3/buf_inspect_s8_decimal.h libc3/buf_inspect_s8_hexadecimal.c libc3/buf_inspect_s8_hexadecimal.h libc3/buf_inspect_s8_octal.c libc3/buf_inspect_s8_octal.h libc3/buf_inspect_s_base.c.in libc3/buf_inspect_s_base.h.in libc3/buf_inspect_sw.c libc3/buf_inspect_sw.h libc3/buf_inspect_sw_binary.c libc3/buf_inspect_sw_binary.h libc3/buf_inspect_sw_decimal.c libc3/buf_inspect_sw_decimal.h libc3/buf_inspect_sw_hexadecimal.c libc3/buf_inspect_sw_hexadecimal.h libc3/buf_inspect_sw_octal.c libc3/buf_inspect_sw_octal.h libc3/buf_inspect_u.c.in libc3/buf_inspect_u.h.in libc3/buf_inspect_u16.c libc3/buf_inspect_u16.h libc3/buf_inspect_u16_binary.c libc3/buf_inspect_u16_binary.h libc3/buf_inspect_u16_decimal.c libc3/buf_inspect_u16_decimal.h libc3/buf_inspect_u16_hexadecimal.c libc3/buf_inspect_u16_hexadecimal.h libc3/buf_inspect_u16_octal.c libc3/buf_inspect_u16_octal.h libc3/buf_inspect_u32.c libc3/buf_inspect_u32.h libc3/buf_inspect_u32_binary.c libc3/buf_inspect_u32_binary.h libc3/buf_inspect_u32_decimal.c libc3/buf_inspect_u32_decimal.h libc3/buf_inspect_u32_hexadecimal.c libc3/buf_inspect_u32_hexadecimal.h libc3/buf_inspect_u32_octal.c libc3/buf_inspect_u32_octal.h libc3/buf_inspect_u64.c libc3/buf_inspect_u64.h libc3/buf_inspect_u64_binary.c libc3/buf_inspect_u64_binary.h libc3/buf_inspect_u64_decimal.c libc3/buf_inspect_u64_decimal.h libc3/buf_inspect_u64_hexadecimal.c libc3/buf_inspect_u64_hexadecimal.h libc3/buf_inspect_u64_octal.c libc3/buf_inspect_u64_octal.h libc3/buf_inspect_u8.c libc3/buf_inspect_u8.h libc3/buf_inspect_u8_binary.c libc3/buf_inspect_u8_binary.h libc3/buf_inspect_u8_decimal.c libc3/buf_inspect_u8_decimal.h libc3/buf_inspect_u8_hexadecimal.c libc3/buf_inspect_u8_hexadecimal.h libc3/buf_inspect_u8_octal.c libc3/buf_inspect_u8_octal.h libc3/buf_inspect_u_base.c.in libc3/buf_inspect_u_base.h.in libc3/buf_inspect_uw.c libc3/buf_inspect_uw.h libc3/buf_inspect_uw_binary.c libc3/buf_inspect_uw_binary.h libc3/buf_inspect_uw_decimal.c libc3/buf_inspect_uw_decimal.h libc3/buf_inspect_uw_hexadecimal.c libc3/buf_inspect_uw_hexadecimal.h libc3/buf_inspect_uw_octal.c libc3/buf_inspect_uw_octal.h libc3/buf_parse.c libc3/buf_parse.h libc3/buf_parse_s.c.in libc3/buf_parse_s.h.in libc3/buf_parse_s16.c libc3/buf_parse_s16.h libc3/buf_parse_s32.c libc3/buf_parse_s32.h libc3/buf_parse_s64.c libc3/buf_parse_s64.h libc3/buf_parse_s8.c libc3/buf_parse_s8.h libc3/buf_parse_sw.c libc3/buf_parse_sw.h libc3/buf_parse_u.c.in libc3/buf_parse_u.h.in libc3/buf_parse_u16.c libc3/buf_parse_u16.h libc3/buf_parse_u32.c libc3/buf_parse_u32.h libc3/buf_parse_u64.c libc3/buf_parse_u64.h libc3/buf_parse_u8.c libc3/buf_parse_u8.h libc3/buf_parse_uw.c libc3/buf_parse_uw.h libc3/buf_save.c libc3/buf_save.h libc3/c3.c libc3/c3.h libc3/c3_main.h libc3/call.c libc3/call.h libc3/ceiling.c libc3/ceiling.h libc3/cfn.c libc3/cfn.h libc3/character.c libc3/character.h libc3/compare.c libc3/compare.h libc3/data.c libc3/data.h libc3/env.c libc3/env.h libc3/error.c libc3/error.h libc3/error_handler.c libc3/error_handler.h libc3/eval.c libc3/eval.h libc3/f32.c libc3/f32.h libc3/f64.c libc3/f64.h libc3/fact.c libc3/fact.h libc3/fact_list.c libc3/fact_list.h libc3/facts.c libc3/facts.h libc3/facts_cursor.c libc3/facts_cursor.h libc3/facts_spec.c libc3/facts_spec.h libc3/facts_spec_cursor.c libc3/facts_spec_cursor.h libc3/facts_with.c libc3/facts_with.h libc3/facts_with_cursor.c libc3/facts_with_cursor.h libc3/file.c libc3/file.h libc3/float.h libc3/fn.c libc3/fn.h libc3/fn_clause.c libc3/fn_clause.h libc3/frame.c libc3/frame.h libc3/hash.c libc3/hash.h libc3/ident.c libc3/ident.h libc3/integer.c libc3/integer.h libc3/io.c libc3/io.h libc3/license.c libc3/list.c libc3/list.h libc3/list_init.c libc3/list_init.h libc3/log.c libc3/log.h libc3/map.c libc3/map.h libc3/module.c libc3/module.h libc3/operator.c libc3/operator.h libc3/point.h.in libc3/ptag.c libc3/ptag.h libc3/ptr.c libc3/ptr.h libc3/ptr_free.c libc3/ptr_free.h libc3/quote.c libc3/quote.h libc3/s.c.in libc3/s.h.in libc3/s16.c libc3/s16.h libc3/s32.c libc3/s32.h libc3/s64.c libc3/s64.h libc3/s8.c libc3/s8.h libc3/sequence.c libc3/sequence.h libc3/set.c.in libc3/set.h.in libc3/set__fact.c libc3/set__fact.h libc3/set__tag.c libc3/set__tag.h libc3/set_cursor.c.in libc3/set_cursor.h.in libc3/set_cursor__fact.c libc3/set_cursor__fact.h libc3/set_cursor__tag.c libc3/set_cursor__tag.h libc3/set_item.c.in libc3/set_item.h.in libc3/set_item__fact.c libc3/set_item__fact.h libc3/set_item__tag.c libc3/set_item__tag.h libc3/sha1.h libc3/sign.c libc3/sign.h libc3/skiplist.c.in libc3/skiplist.h.in libc3/skiplist__fact.c libc3/skiplist__fact.h libc3/skiplist_node.c.in libc3/skiplist_node.h.in libc3/skiplist_node__fact.c libc3/skiplist_node__fact.h libc3/str.c libc3/str.h libc3/struct.c libc3/struct.h libc3/struct_type.c libc3/struct_type.h libc3/sw.c libc3/sw.h libc3/sym.c libc3/sym.h libc3/tag.c libc3/tag.h libc3/tag_add.c libc3/tag_band.c libc3/tag_bor.c libc3/tag_bxor.c libc3/tag_div.c libc3/tag_init.c libc3/tag_init.h libc3/tag_mod.c libc3/tag_mul.c libc3/tag_shift_left.c libc3/tag_shift_right.c libc3/tag_sub.c libc3/tag_type.c libc3/tag_type.h libc3/time.c libc3/time.h libc3/tuple.c libc3/tuple.h libc3/type.c libc3/type.h libc3/types.h libc3/u.c.in libc3/u.h.in libc3/u16.c libc3/u16.h libc3/u32.c libc3/u32.h libc3/u64.c libc3/u64.h libc3/u8.c libc3/u8.h libc3/ucd.c libc3/ucd.h libc3/uw.c libc3/uw.h libc3/var.c libc3/var.h libc3/void.c libc3/void.h libc3/window/cairo/cairo_font.c libc3/window/cairo/cairo_font.h libc3/window/cairo/cairo_sprite.c libc3/window/cairo/cairo_sprite.h libc3/window/cairo/demo/bg_rect.c libc3/window/cairo/demo/bg_rect.h libc3/window/cairo/demo/flies.c libc3/window/cairo/demo/flies.h libc3/window/cairo/demo/lightspeed.c libc3/window/cairo/demo/lightspeed.h libc3/window/cairo/demo/toasters.c libc3/window/cairo/demo/toasters.h libc3/window/cairo/demo/window_cairo_demo.c libc3/window/cairo/demo/window_cairo_demo.h libc3/window/cairo/quartz/demo/window_cairo_quartz_demo.c libc3/window/cairo/quartz/quartz_to_xkbcommon.c libc3/window/cairo/quartz/quartz_to_xkbcommon.h libc3/window/cairo/quartz/window_cairo_quartz.h libc3/window/cairo/quartz/window_cairo_quartz_app_delegate.h libc3/window/cairo/quartz/window_cairo_quartz_view.h libc3/window/cairo/quartz/window_cairo_quartz_view_controller.h libc3/window/cairo/quartz/xkbquartz.h libc3/window/cairo/types.h libc3/window/cairo/win32/demo/window_cairo_win32_demo.c libc3/window/cairo/win32/vk_to_xkbcommon.c libc3/window/cairo/win32/vk_to_xkbcommon.h libc3/window/cairo/win32/window_cairo_win32.c libc3/window/cairo/win32/window_cairo_win32.h libc3/window/cairo/window_cairo.c libc3/window/cairo/window_cairo.h libc3/window/cairo/xcb/config.h libc3/window/cairo/xcb/demo/window_cairo_xcb_demo.c libc3/window/cairo/xcb/window_cairo_xcb.c libc3/window/cairo/xcb/window_cairo_xcb.h libc3/window/sdl2/demo/bg_rect.c libc3/window/sdl2/demo/bg_rect.h libc3/window/sdl2/demo/earth.c libc3/window/sdl2/demo/earth.h libc3/window/sdl2/demo/flies.c libc3/window/sdl2/demo/flies.h libc3/window/sdl2/demo/lightspeed.c libc3/window/sdl2/demo/lightspeed.h libc3/window/sdl2/demo/toasters.c libc3/window/sdl2/demo/toasters.h libc3/window/sdl2/demo/window_sdl2_demo.c libc3/window/sdl2/demo/window_sdl2_demo.h libc3/window/sdl2/disabled/mandelbrot.c libc3/window/sdl2/disabled/mandelbrot.h libc3/window/sdl2/disabled/sdl2_font.c libc3/window/sdl2/disabled/sdl2_font.h libc3/window/sdl2/disabled/sdl2_sprite.c libc3/window/sdl2/disabled/sdl2_sprite.h libc3/window/sdl2/gl_camera.c libc3/window/sdl2/gl_camera.h libc3/window/sdl2/gl_cylinder.c libc3/window/sdl2/gl_cylinder.h libc3/window/sdl2/gl_deprecated.c libc3/window/sdl2/gl_deprecated.h libc3/window/sdl2/gl_font.c libc3/window/sdl2/gl_font.h libc3/window/sdl2/gl_ft2.h libc3/window/sdl2/gl_lines.c libc3/window/sdl2/gl_lines.h libc3/window/sdl2/gl_matrix_3d.h libc3/window/sdl2/gl_matrix_3f.h libc3/window/sdl2/gl_matrix_4d.c libc3/window/sdl2/gl_matrix_4d.h libc3/window/sdl2/gl_matrix_4f.c libc3/window/sdl2/gl_matrix_4f.h libc3/window/sdl2/gl_object.c libc3/window/sdl2/gl_object.h libc3/window/sdl2/gl_ortho.c libc3/window/sdl2/gl_ortho.h libc3/window/sdl2/gl_point_2d.c libc3/window/sdl2/gl_point_2d.h libc3/window/sdl2/gl_point_2f.c libc3/window/sdl2/gl_point_2f.h libc3/window/sdl2/gl_point_3d.c libc3/window/sdl2/gl_point_3d.h libc3/window/sdl2/gl_point_3f.c libc3/window/sdl2/gl_point_3f.h libc3/window/sdl2/gl_sphere.c libc3/window/sdl2/gl_sphere.h libc3/window/sdl2/gl_sprite.c libc3/window/sdl2/gl_sprite.h libc3/window/sdl2/gl_square.c libc3/window/sdl2/gl_square.h libc3/window/sdl2/gl_text.c libc3/window/sdl2/gl_text.h libc3/window/sdl2/gl_triangle.c libc3/window/sdl2/gl_triangle.h libc3/window/sdl2/gl_vertex.c libc3/window/sdl2/gl_vertex.h libc3/window/sdl2/types.h libc3/window/sdl2/window_sdl2.c libc3/window/sdl2/window_sdl2.h libc3/window/types.h libc3/window/window.c libc3/window/window.h test/array_test.c test/bool_test.c test/buf_file_test.c test/buf_inspect_test.c test/buf_parse_test.c test/buf_parse_test.h test/buf_parse_test_s16.c test/buf_parse_test_s32.c test/buf_parse_test_s64.c test/buf_parse_test_s8.c test/buf_parse_test_su.h test/buf_parse_test_u16.c test/buf_parse_test_u32.c test/buf_parse_test_u64.c test/buf_parse_test_u8.c test/buf_test.c test/call_test.c test/cfn_test.c test/character_test.c test/compare_test.c test/compare_test.h test/env_test.c test/fact_test.c test/fact_test.h test/facts_cursor_test.c test/facts_test.c test/facts_with_test.c test/fn_test.c test/hash_test.c test/ident_test.c test/libc3_test.c test/list_test.c test/set__fact_test.c test/set__tag_test.c test/skiplist__fact_test.c test/str_test.c test/sym_test.c test/tag_test.c test/tag_test.h test/test.c test/test.h test/tuple_test.c test/types_test.c ucd2c/ucd.h ucd2c/ucd2c.c '
+C3_C_SOURCES='c3c/c3c.c c3s/buf_readline.c c3s/buf_readline.h c3s/c3s.c ic3/buf_linenoise.c ic3/buf_linenoise.h ic3/buf_wineditline.c ic3/buf_wineditline.h ic3/config.h ic3/ic3.c ic3/linenoise.c libc3/abs.c libc3/abs.h libc3/arg.c libc3/arg.h libc3/array.c libc3/array.h libc3/assert.h libc3/binding.c libc3/binding.h libc3/bool.c libc3/bool.h libc3/buf.c libc3/buf.h libc3/buf_file.c libc3/buf_file.h libc3/buf_inspect.c libc3/buf_inspect.h libc3/buf_inspect_s.c.in libc3/buf_inspect_s.h.in libc3/buf_inspect_s16.c libc3/buf_inspect_s16.h libc3/buf_inspect_s16_binary.c libc3/buf_inspect_s16_binary.h libc3/buf_inspect_s16_decimal.c libc3/buf_inspect_s16_decimal.h libc3/buf_inspect_s16_hexadecimal.c libc3/buf_inspect_s16_hexadecimal.h libc3/buf_inspect_s16_octal.c libc3/buf_inspect_s16_octal.h libc3/buf_inspect_s32.c libc3/buf_inspect_s32.h libc3/buf_inspect_s32_binary.c libc3/buf_inspect_s32_binary.h libc3/buf_inspect_s32_decimal.c libc3/buf_inspect_s32_decimal.h libc3/buf_inspect_s32_hexadecimal.c libc3/buf_inspect_s32_hexadecimal.h libc3/buf_inspect_s32_octal.c libc3/buf_inspect_s32_octal.h libc3/buf_inspect_s64.c libc3/buf_inspect_s64.h libc3/buf_inspect_s64_binary.c libc3/buf_inspect_s64_binary.h libc3/buf_inspect_s64_decimal.c libc3/buf_inspect_s64_decimal.h libc3/buf_inspect_s64_hexadecimal.c libc3/buf_inspect_s64_hexadecimal.h libc3/buf_inspect_s64_octal.c libc3/buf_inspect_s64_octal.h libc3/buf_inspect_s8.c libc3/buf_inspect_s8.h libc3/buf_inspect_s8_binary.c libc3/buf_inspect_s8_binary.h libc3/buf_inspect_s8_decimal.c libc3/buf_inspect_s8_decimal.h libc3/buf_inspect_s8_hexadecimal.c libc3/buf_inspect_s8_hexadecimal.h libc3/buf_inspect_s8_octal.c libc3/buf_inspect_s8_octal.h libc3/buf_inspect_s_base.c.in libc3/buf_inspect_s_base.h.in libc3/buf_inspect_sw.c libc3/buf_inspect_sw.h libc3/buf_inspect_sw_binary.c libc3/buf_inspect_sw_binary.h libc3/buf_inspect_sw_decimal.c libc3/buf_inspect_sw_decimal.h libc3/buf_inspect_sw_hexadecimal.c libc3/buf_inspect_sw_hexadecimal.h libc3/buf_inspect_sw_octal.c libc3/buf_inspect_sw_octal.h libc3/buf_inspect_u.c.in libc3/buf_inspect_u.h.in libc3/buf_inspect_u16.c libc3/buf_inspect_u16.h libc3/buf_inspect_u16_binary.c libc3/buf_inspect_u16_binary.h libc3/buf_inspect_u16_decimal.c libc3/buf_inspect_u16_decimal.h libc3/buf_inspect_u16_hexadecimal.c libc3/buf_inspect_u16_hexadecimal.h libc3/buf_inspect_u16_octal.c libc3/buf_inspect_u16_octal.h libc3/buf_inspect_u32.c libc3/buf_inspect_u32.h libc3/buf_inspect_u32_binary.c libc3/buf_inspect_u32_binary.h libc3/buf_inspect_u32_decimal.c libc3/buf_inspect_u32_decimal.h libc3/buf_inspect_u32_hexadecimal.c libc3/buf_inspect_u32_hexadecimal.h libc3/buf_inspect_u32_octal.c libc3/buf_inspect_u32_octal.h libc3/buf_inspect_u64.c libc3/buf_inspect_u64.h libc3/buf_inspect_u64_binary.c libc3/buf_inspect_u64_binary.h libc3/buf_inspect_u64_decimal.c libc3/buf_inspect_u64_decimal.h libc3/buf_inspect_u64_hexadecimal.c libc3/buf_inspect_u64_hexadecimal.h libc3/buf_inspect_u64_octal.c libc3/buf_inspect_u64_octal.h libc3/buf_inspect_u8.c libc3/buf_inspect_u8.h libc3/buf_inspect_u8_binary.c libc3/buf_inspect_u8_binary.h libc3/buf_inspect_u8_decimal.c libc3/buf_inspect_u8_decimal.h libc3/buf_inspect_u8_hexadecimal.c libc3/buf_inspect_u8_hexadecimal.h libc3/buf_inspect_u8_octal.c libc3/buf_inspect_u8_octal.h libc3/buf_inspect_u_base.c.in libc3/buf_inspect_u_base.h.in libc3/buf_inspect_uw.c libc3/buf_inspect_uw.h libc3/buf_inspect_uw_binary.c libc3/buf_inspect_uw_binary.h libc3/buf_inspect_uw_decimal.c libc3/buf_inspect_uw_decimal.h libc3/buf_inspect_uw_hexadecimal.c libc3/buf_inspect_uw_hexadecimal.h libc3/buf_inspect_uw_octal.c libc3/buf_inspect_uw_octal.h libc3/buf_parse.c libc3/buf_parse.h libc3/buf_parse_s.c.in libc3/buf_parse_s.h.in libc3/buf_parse_s16.c libc3/buf_parse_s16.h libc3/buf_parse_s32.c libc3/buf_parse_s32.h libc3/buf_parse_s64.c libc3/buf_parse_s64.h libc3/buf_parse_s8.c libc3/buf_parse_s8.h libc3/buf_parse_sw.c libc3/buf_parse_sw.h libc3/buf_parse_u.c.in libc3/buf_parse_u.h.in libc3/buf_parse_u16.c libc3/buf_parse_u16.h libc3/buf_parse_u32.c libc3/buf_parse_u32.h libc3/buf_parse_u64.c libc3/buf_parse_u64.h libc3/buf_parse_u8.c libc3/buf_parse_u8.h libc3/buf_parse_uw.c libc3/buf_parse_uw.h libc3/buf_save.c libc3/buf_save.h libc3/c3.c libc3/c3.h libc3/c3_main.h libc3/call.c libc3/call.h libc3/ceiling.c libc3/ceiling.h libc3/cfn.c libc3/cfn.h libc3/character.c libc3/character.h libc3/compare.c libc3/compare.h libc3/data.c libc3/data.h libc3/env.c libc3/env.h libc3/error.c libc3/error.h libc3/error_handler.c libc3/error_handler.h libc3/eval.c libc3/eval.h libc3/f128.c libc3/f128.h libc3/f32.c libc3/f32.h libc3/f64.c libc3/f64.h libc3/fact.c libc3/fact.h libc3/fact_list.c libc3/fact_list.h libc3/facts.c libc3/facts.h libc3/facts_cursor.c libc3/facts_cursor.h libc3/facts_spec.c libc3/facts_spec.h libc3/facts_spec_cursor.c libc3/facts_spec_cursor.h libc3/facts_with.c libc3/facts_with.h libc3/facts_with_cursor.c libc3/facts_with_cursor.h libc3/file.c libc3/file.h libc3/float.h libc3/fn.c libc3/fn.h libc3/fn_clause.c libc3/fn_clause.h libc3/frame.c libc3/frame.h libc3/hash.c libc3/hash.h libc3/ident.c libc3/ident.h libc3/integer.c libc3/integer.h libc3/io.c libc3/io.h libc3/license.c libc3/list.c libc3/list.h libc3/list_init.c libc3/list_init.h libc3/log.c libc3/log.h libc3/map.c libc3/map.h libc3/module.c libc3/module.h libc3/operator.c libc3/operator.h libc3/point.h.in libc3/ptag.c libc3/ptag.h libc3/ptr.c libc3/ptr.h libc3/ptr_free.c libc3/ptr_free.h libc3/quote.c libc3/quote.h libc3/s.c.in libc3/s.h.in libc3/s16.c libc3/s16.h libc3/s32.c libc3/s32.h libc3/s64.c libc3/s64.h libc3/s8.c libc3/s8.h libc3/sequence.c libc3/sequence.h libc3/set.c.in libc3/set.h.in libc3/set__fact.c libc3/set__fact.h libc3/set__tag.c libc3/set__tag.h libc3/set_cursor.c.in libc3/set_cursor.h.in libc3/set_cursor__fact.c libc3/set_cursor__fact.h libc3/set_cursor__tag.c libc3/set_cursor__tag.h libc3/set_item.c.in libc3/set_item.h.in libc3/set_item__fact.c libc3/set_item__fact.h libc3/set_item__tag.c libc3/set_item__tag.h libc3/sha1.h libc3/sign.c libc3/sign.h libc3/skiplist.c.in libc3/skiplist.h.in libc3/skiplist__fact.c libc3/skiplist__fact.h libc3/skiplist_node.c.in libc3/skiplist_node.h.in libc3/skiplist_node__fact.c libc3/skiplist_node__fact.h libc3/str.c libc3/str.h libc3/struct.c libc3/struct.h libc3/struct_type.c libc3/struct_type.h libc3/sw.c libc3/sw.h libc3/sym.c libc3/sym.h libc3/tag.c libc3/tag.h libc3/tag_add.c libc3/tag_band.c libc3/tag_bor.c libc3/tag_bxor.c libc3/tag_div.c libc3/tag_init.c libc3/tag_init.h libc3/tag_mod.c libc3/tag_mul.c libc3/tag_shift_left.c libc3/tag_shift_right.c libc3/tag_sub.c libc3/tag_type.c libc3/tag_type.h libc3/time.c libc3/time.h libc3/tuple.c libc3/tuple.h libc3/type.c libc3/type.h libc3/types.h libc3/u.c.in libc3/u.h.in libc3/u16.c libc3/u16.h libc3/u32.c libc3/u32.h libc3/u64.c libc3/u64.h libc3/u8.c libc3/u8.h libc3/ucd.c libc3/ucd.h libc3/uw.c libc3/uw.h libc3/var.c libc3/var.h libc3/void.c libc3/void.h libc3/window/cairo/cairo_font.c libc3/window/cairo/cairo_font.h libc3/window/cairo/cairo_sprite.c libc3/window/cairo/cairo_sprite.h libc3/window/cairo/demo/bg_rect.c libc3/window/cairo/demo/bg_rect.h libc3/window/cairo/demo/flies.c libc3/window/cairo/demo/flies.h libc3/window/cairo/demo/lightspeed.c libc3/window/cairo/demo/lightspeed.h libc3/window/cairo/demo/toasters.c libc3/window/cairo/demo/toasters.h libc3/window/cairo/demo/window_cairo_demo.c libc3/window/cairo/demo/window_cairo_demo.h libc3/window/cairo/quartz/demo/window_cairo_quartz_demo.c libc3/window/cairo/quartz/quartz_to_xkbcommon.c libc3/window/cairo/quartz/quartz_to_xkbcommon.h libc3/window/cairo/quartz/window_cairo_quartz.h libc3/window/cairo/quartz/window_cairo_quartz_app_delegate.h libc3/window/cairo/quartz/window_cairo_quartz_view.h libc3/window/cairo/quartz/window_cairo_quartz_view_controller.h libc3/window/cairo/quartz/xkbquartz.h libc3/window/cairo/types.h libc3/window/cairo/win32/demo/window_cairo_win32_demo.c libc3/window/cairo/win32/vk_to_xkbcommon.c libc3/window/cairo/win32/vk_to_xkbcommon.h libc3/window/cairo/win32/window_cairo_win32.c libc3/window/cairo/win32/window_cairo_win32.h libc3/window/cairo/window_cairo.c libc3/window/cairo/window_cairo.h libc3/window/cairo/xcb/config.h libc3/window/cairo/xcb/demo/window_cairo_xcb_demo.c libc3/window/cairo/xcb/window_cairo_xcb.c libc3/window/cairo/xcb/window_cairo_xcb.h libc3/window/sdl2/demo/bg_rect.c libc3/window/sdl2/demo/bg_rect.h libc3/window/sdl2/demo/earth.c libc3/window/sdl2/demo/earth.h libc3/window/sdl2/demo/flies.c libc3/window/sdl2/demo/flies.h libc3/window/sdl2/demo/lightspeed.c libc3/window/sdl2/demo/lightspeed.h libc3/window/sdl2/demo/mandelbrot_f128.c libc3/window/sdl2/demo/mandelbrot_f128.h libc3/window/sdl2/demo/toasters.c libc3/window/sdl2/demo/toasters.h libc3/window/sdl2/demo/window_sdl2_demo.c libc3/window/sdl2/demo/window_sdl2_demo.h libc3/window/sdl2/disabled/mandelbrot.c libc3/window/sdl2/disabled/mandelbrot.h libc3/window/sdl2/disabled/sdl2_font.c libc3/window/sdl2/disabled/sdl2_font.h libc3/window/sdl2/disabled/sdl2_sprite.c libc3/window/sdl2/disabled/sdl2_sprite.h libc3/window/sdl2/gl_camera.c libc3/window/sdl2/gl_camera.h libc3/window/sdl2/gl_cylinder.c libc3/window/sdl2/gl_cylinder.h libc3/window/sdl2/gl_deprecated.c libc3/window/sdl2/gl_deprecated.h libc3/window/sdl2/gl_font.c libc3/window/sdl2/gl_font.h libc3/window/sdl2/gl_ft2.h libc3/window/sdl2/gl_lines.c libc3/window/sdl2/gl_lines.h libc3/window/sdl2/gl_matrix_3d.h libc3/window/sdl2/gl_matrix_3f.h libc3/window/sdl2/gl_matrix_4d.c libc3/window/sdl2/gl_matrix_4d.h libc3/window/sdl2/gl_matrix_4f.c libc3/window/sdl2/gl_matrix_4f.h libc3/window/sdl2/gl_object.c libc3/window/sdl2/gl_object.h libc3/window/sdl2/gl_ortho.c libc3/window/sdl2/gl_ortho.h libc3/window/sdl2/gl_point_2d.c libc3/window/sdl2/gl_point_2d.h libc3/window/sdl2/gl_point_2f.c libc3/window/sdl2/gl_point_2f.h libc3/window/sdl2/gl_point_3d.c libc3/window/sdl2/gl_point_3d.h libc3/window/sdl2/gl_point_3f.c libc3/window/sdl2/gl_point_3f.h libc3/window/sdl2/gl_sphere.c libc3/window/sdl2/gl_sphere.h libc3/window/sdl2/gl_sprite.c libc3/window/sdl2/gl_sprite.h libc3/window/sdl2/gl_square.c libc3/window/sdl2/gl_square.h libc3/window/sdl2/gl_text.c libc3/window/sdl2/gl_text.h libc3/window/sdl2/gl_triangle.c libc3/window/sdl2/gl_triangle.h libc3/window/sdl2/gl_vertex.c libc3/window/sdl2/gl_vertex.h libc3/window/sdl2/types.h libc3/window/sdl2/window_sdl2.c libc3/window/sdl2/window_sdl2.h libc3/window/types.h libc3/window/window.c libc3/window/window.h test/array_test.c test/bool_test.c test/buf_file_test.c test/buf_inspect_test.c test/buf_parse_test.c test/buf_parse_test.h test/buf_parse_test_s16.c test/buf_parse_test_s32.c test/buf_parse_test_s64.c test/buf_parse_test_s8.c test/buf_parse_test_su.h test/buf_parse_test_u16.c test/buf_parse_test_u32.c test/buf_parse_test_u64.c test/buf_parse_test_u8.c test/buf_test.c test/call_test.c test/cfn_test.c test/character_test.c test/compare_test.c test/compare_test.h test/env_test.c test/fact_test.c test/fact_test.h test/facts_cursor_test.c test/facts_test.c test/facts_with_test.c test/fn_test.c test/hash_test.c test/ident_test.c test/libc3_test.c test/list_test.c test/set__fact_test.c test/set__tag_test.c test/skiplist__fact_test.c test/str_test.c test/sym_test.c test/tag_test.c test/tag_test.h test/test.c test/test.h test/tuple_test.c test/types_test.c ucd2c/ucd.h ucd2c/ucd2c.c '
C3_OBJC_SOURCES='libc3/window/cairo/quartz/window_cairo_quartz.m libc3/window/cairo/quartz/window_cairo_quartz_app_delegate.m libc3/window/cairo/quartz/window_cairo_quartz_view.m libc3/window/cairo/quartz/window_cairo_quartz_view_controller.m '
C3_OTHER_SOURCES='AUTHORS Makefile README.md c3.index c3.version config.subr configure fonts/Courier New/Courier New.ttf img/c3.1.xcf img/c3.1080.jpg img/c3.1080.png img/c3.128.jpg img/c3.128.png img/c3.16.png img/c3.256.jpg img/c3.256.png img/c3.32.jpg img/c3.32.png img/c3.48.jpg img/c3.48.png img/c3.512.jpg img/c3.512.png img/c3.64.jpg img/c3.64.png img/c3.640.jpg img/c3.640.png img/c3.720.jpg img/c3.720.png img/c3.iconset/icon_128x128.png img/c3.iconset/icon_16x16.png img/c3.iconset/icon_256x256.png img/c3.iconset/icon_32x32.png img/c3.iconset/icon_512x512.png img/c3.iconset/icon_64x64.png img/c3.xcf img/earth.jpg img/earth.png img/flaps.256.png img/flaps.png img/fly-dead.png img/fly-noto.png img/iris-c3-004.jpeg img/iris-c3-004.png img/thodg_No_Prompt_073261d5-2c81-4b6e-9572-e0b840c55f1f.jpeg img/toast.128.png img/toast.png lib/c3/0.1/array.facts lib/c3/0.1/c3.facts lib/c3/0.1/f32.facts lib/c3/0.1/f64.facts lib/c3/0.1/gl/object.facts lib/c3/0.1/gl/point2d.facts lib/c3/0.1/gl/point3d.facts lib/c3/0.1/gl/sphere.facts lib/c3/0.1/gl/triangle.facts lib/c3/0.1/gl/vertex.facts lib/c3/0.1/integer.facts lib/c3/0.1/list.facts lib/c3/0.1/map.facts lib/c3/0.1/ptr_free.facts lib/c3/0.1/s16.facts lib/c3/0.1/s32.facts lib/c3/0.1/s64.facts lib/c3/0.1/s8.facts lib/c3/0.1/sw.facts lib/c3/0.1/u16.facts lib/c3/0.1/u32.facts lib/c3/0.1/u64.facts lib/c3/0.1/u8.facts lib/c3/0.1/uw.facts lib/c3/0.1/void.facts libc3/tag_init.rb license.h sources.mk sources.sh test/buf_parse_test_su.rb test/facts_test_dump_file.expected.facts test/facts_test_load_file.facts test/facts_test_log_add.expected.facts test/facts_test_log_remove.expected.facts test/facts_test_open_file.1.expected.facts test/facts_test_open_file.1.in.facts test/facts_test_open_file.2.expected.facts test/facts_test_open_file.2.in.facts test/facts_test_open_file.3.expected.facts test/facts_test_open_file.3.in.facts test/facts_test_save.expected.facts test/ic3/array.err.expected test/ic3/array.in test/ic3/array.out.expected test/ic3/array.ret.expected test/ic3/bool.err.expected test/ic3/bool.in test/ic3/bool.out.expected test/ic3/bool.ret.expected test/ic3/call.err.expected test/ic3/call.in test/ic3/call.out.expected test/ic3/call.ret.expected test/ic3/cast.in test/ic3/cast.out.expected test/ic3/cast.ret.expected test/ic3/character.err.expected test/ic3/character.in test/ic3/character.out.expected test/ic3/character.ret.expected test/ic3/comment.err.expected test/ic3/comment.in test/ic3/comment.out.expected test/ic3/comment.ret.expected test/ic3/equal.err.expected test/ic3/equal.in test/ic3/equal.out.expected test/ic3/equal.ret.expected test/ic3/fn.err.expected test/ic3/fn.in test/ic3/fn.out.expected test/ic3/fn.ret.expected test/ic3/function_call.err.expected test/ic3/function_call.out.expected test/ic3/function_call.ret.expected test/ic3/hello.err.expected test/ic3/hello.in test/ic3/hello.out.expected test/ic3/hello.ret.expected test/ic3/ident.err.expected test/ic3/ident.in test/ic3/ident.out.expected test/ic3/ident.ret.expected test/ic3/integer.in test/ic3/integer.lisp test/ic3/integer.out.expected test/ic3/integer.ret.expected test/ic3/integer_add.in test/ic3/integer_add.out.expected test/ic3/integer_add.ret.expected test/ic3/integer_band.in test/ic3/integer_band.out.expected test/ic3/integer_band.ret.expected test/ic3/integer_bnot.in test/ic3/integer_bnot.out.expected test/ic3/integer_bnot.ret.expected test/ic3/integer_bor-2.in test/ic3/integer_bor-2.out.expected test/ic3/integer_bor-2.ret.expected test/ic3/integer_bxor.in test/ic3/integer_bxor.out.expected test/ic3/integer_bxor.ret.expected test/ic3/integer_div.in test/ic3/integer_div.out.expected test/ic3/integer_div.ret.expected test/ic3/integer_eq.in test/ic3/integer_eq.out.expected test/ic3/integer_eq.ret.expected test/ic3/integer_gt.in test/ic3/integer_gt.out.expected test/ic3/integer_gt.ret.expected test/ic3/integer_lt.in test/ic3/integer_lt.out.expected test/ic3/integer_lt.ret.expected test/ic3/integer_mod-2.in test/ic3/integer_mod-2.out.expected test/ic3/integer_mod-2.ret.expected test/ic3/integer_mul.in test/ic3/integer_mul.out.expected test/ic3/integer_mul.ret.expected test/ic3/integer_neg.in test/ic3/integer_neg.out.expected test/ic3/integer_neg.ret.expected test/ic3/integer_sub.in test/ic3/integer_sub.out.expected test/ic3/integer_sub.ret.expected test/ic3/list.err.expected test/ic3/list.in test/ic3/list.out.expected test/ic3/list.ret.expected test/ic3/map.in test/ic3/map.out.expected test/ic3/map.ret.expected test/ic3/op.err.expected test/ic3/op.in test/ic3/op.out.expected test/ic3/op.ret.expected test/ic3/plist.err.expected test/ic3/plist.in test/ic3/plist.out.expected test/ic3/plist.ret.expected test/ic3/str.err.expected test/ic3/str.in test/ic3/str.out.expected test/ic3/str.ret.expected test/ic3/struct.in test/ic3/struct.out.expected test/ic3/struct.ret.expected test/ic3/sym.err.expected test/ic3/sym.in test/ic3/sym.out.expected test/ic3/sym.ret.expected test/ic3/tuple.err.expected test/ic3/tuple.in test/ic3/tuple.out.expected test/ic3/tuple.ret.expected test/ic3/void.in test/ic3/void.out.expected test/ic3/void.ret.expected test/ic3_test test/replace_lines.rb test/test.rb test/test_case_end.rb test/zero '
C3_EXTERNAL_SOURCES='libffi/ChangeLog.old libffi/LICENSE libffi/LICENSE-BUILDTOOLS libffi/Makefile libffi/Makefile.am libffi/Makefile.in libffi/README.md libffi/a.out libffi/acinclude.m4 libffi/aclocal.m4 libffi/autogen.sh libffi/autom4te.cache/output.0 libffi/autom4te.cache/output.1 libffi/autom4te.cache/output.2 libffi/autom4te.cache/output.3 libffi/autom4te.cache/output.4 libffi/autom4te.cache/output.5 libffi/autom4te.cache/output.6 libffi/autom4te.cache/requests libffi/autom4te.cache/traces.0 libffi/autom4te.cache/traces.1 libffi/autom4te.cache/traces.2 libffi/autom4te.cache/traces.3 libffi/autom4te.cache/traces.4 libffi/autom4te.cache/traces.5 libffi/autom4te.cache/traces.6 libffi/compile libffi/config.guess libffi/config.log libffi/config.status libffi/config.sub libffi/configure libffi/configure.ac libffi/configure.host libffi/depcomp libffi/doc/Makefile libffi/doc/Makefile.am libffi/doc/Makefile.in libffi/doc/libffi.info libffi/doc/libffi.texi libffi/doc/mdate-sh libffi/doc/texinfo.tex libffi/doc/version.texi libffi/fficonfig.h libffi/fficonfig.h.in libffi/generate-darwin-source-and-headers.py libffi/include/Makefile libffi/include/Makefile.am libffi/include/Makefile.in libffi/include/ffi.h libffi/include/ffi.h.in libffi/include/ffi_cfi.h libffi/include/ffi_common.h libffi/include/ffitarget.h libffi/include/tramp.h libffi/install-sh libffi/libffi.la libffi/libffi.map.in libffi/libffi.pc libffi/libffi.pc.in libffi/libffi.xcodeproj/project.pbxproj libffi/libffi_convenience.la libffi/libtool libffi/libtool-ldflags libffi/libtool-version libffi/local.exp libffi/ltmain.sh libffi/m4/asmcfi.m4 libffi/m4/ax_append_flag.m4 libffi/m4/ax_cc_maxopt.m4 libffi/m4/ax_cflags_warn_all.m4 libffi/m4/ax_check_compile_flag.m4 libffi/m4/ax_compiler_vendor.m4 libffi/m4/ax_configure_args.m4 libffi/m4/ax_enable_builddir.m4 libffi/m4/ax_gcc_archflag.m4 libffi/m4/ax_gcc_x86_cpuid.m4 libffi/m4/ax_prepend_flag.m4 libffi/m4/ax_require_defined.m4 libffi/m4/libtool.m4 libffi/m4/ltoptions.m4 libffi/m4/ltsugar.m4 libffi/m4/ltversion.m4 libffi/m4/lt~obsolete.m4 libffi/make_sunver.pl libffi/man/Makefile libffi/man/Makefile.am libffi/man/Makefile.in libffi/man/ffi.3 libffi/man/ffi_call.3 libffi/man/ffi_prep_cif.3 libffi/man/ffi_prep_cif_var.3 libffi/missing libffi/msvc_build/aarch64/Ffi_staticLib.sln libffi/msvc_build/aarch64/Ffi_staticLib.vcxproj libffi/msvc_build/aarch64/Ffi_staticLib.vcxproj.filters libffi/msvc_build/aarch64/Ffi_staticLib.vcxproj.user libffi/msvc_build/aarch64/aarch64_include/ffi.h libffi/msvc_build/aarch64/aarch64_include/fficonfig.h libffi/msvcc.sh libffi/src/aarch64/ffi.c libffi/src/aarch64/ffitarget.h libffi/src/aarch64/internal.h libffi/src/aarch64/sysv.S libffi/src/aarch64/win64_armasm.S libffi/src/alpha/ffi.c libffi/src/alpha/ffitarget.h libffi/src/alpha/internal.h libffi/src/alpha/osf.S libffi/src/arc/arcompact.S libffi/src/arc/ffi.c libffi/src/arc/ffitarget.h libffi/src/arm/ffi.c libffi/src/arm/ffitarget.h libffi/src/arm/internal.h libffi/src/arm/sysv.S libffi/src/arm/sysv_msvc_arm32.S libffi/src/avr32/ffi.c libffi/src/avr32/ffitarget.h libffi/src/avr32/sysv.S libffi/src/bfin/ffi.c libffi/src/bfin/ffitarget.h libffi/src/bfin/sysv.S libffi/src/closures.c libffi/src/closures.lo libffi/src/closures.o libffi/src/cris/ffi.c libffi/src/cris/ffitarget.h libffi/src/cris/sysv.S libffi/src/csky/ffi.c libffi/src/csky/ffitarget.h libffi/src/csky/sysv.S libffi/src/debug.c libffi/src/dlmalloc.c libffi/src/frv/eabi.S libffi/src/frv/ffi.c libffi/src/frv/ffitarget.h libffi/src/ia64/ffi.c libffi/src/ia64/ffitarget.h libffi/src/ia64/ia64_flags.h libffi/src/ia64/unix.S libffi/src/java_raw_api.c libffi/src/java_raw_api.lo libffi/src/java_raw_api.o libffi/src/kvx/asm.h libffi/src/kvx/ffi.c libffi/src/kvx/ffitarget.h libffi/src/kvx/sysv.S libffi/src/loongarch64/ffi.c libffi/src/loongarch64/ffitarget.h libffi/src/loongarch64/sysv.S libffi/src/m32r/ffi.c libffi/src/m32r/ffitarget.h libffi/src/m32r/sysv.S libffi/src/m68k/ffi.c libffi/src/m68k/ffitarget.h libffi/src/m68k/sysv.S libffi/src/m88k/ffi.c libffi/src/m88k/ffitarget.h libffi/src/m88k/obsd.S libffi/src/metag/ffi.c libffi/src/metag/ffitarget.h libffi/src/metag/sysv.S libffi/src/microblaze/ffi.c libffi/src/microblaze/ffitarget.h libffi/src/microblaze/sysv.S libffi/src/mips/ffi.c libffi/src/mips/ffitarget.h libffi/src/mips/n32.S libffi/src/mips/o32.S libffi/src/moxie/eabi.S libffi/src/moxie/ffi.c libffi/src/moxie/ffitarget.h libffi/src/nios2/ffi.c libffi/src/nios2/ffitarget.h libffi/src/nios2/sysv.S libffi/src/or1k/ffi.c libffi/src/or1k/ffitarget.h libffi/src/or1k/sysv.S libffi/src/pa/ffi.c libffi/src/pa/ffi64.c libffi/src/pa/ffitarget.h libffi/src/pa/hpux32.S libffi/src/pa/hpux64.S libffi/src/pa/linux.S libffi/src/powerpc/aix.S libffi/src/powerpc/aix_closure.S libffi/src/powerpc/asm.h libffi/src/powerpc/darwin.S libffi/src/powerpc/darwin_closure.S libffi/src/powerpc/ffi.c libffi/src/powerpc/ffi_darwin.c libffi/src/powerpc/ffi_linux64.c libffi/src/powerpc/ffi_powerpc.h libffi/src/powerpc/ffi_sysv.c libffi/src/powerpc/ffitarget.h libffi/src/powerpc/linux64.S libffi/src/powerpc/linux64_closure.S libffi/src/powerpc/ppc_closure.S libffi/src/powerpc/sysv.S libffi/src/powerpc/t-aix libffi/src/prep_cif.c libffi/src/prep_cif.lo libffi/src/prep_cif.o libffi/src/raw_api.c libffi/src/raw_api.lo libffi/src/raw_api.o libffi/src/riscv/ffi.c libffi/src/riscv/ffitarget.h libffi/src/riscv/sysv.S libffi/src/s390/ffi.c libffi/src/s390/ffitarget.h libffi/src/s390/internal.h libffi/src/s390/sysv.S libffi/src/sh/ffi.c libffi/src/sh/ffitarget.h libffi/src/sh/sysv.S libffi/src/sh64/ffi.c libffi/src/sh64/ffitarget.h libffi/src/sh64/sysv.S libffi/src/sparc/ffi.c libffi/src/sparc/ffi64.c libffi/src/sparc/ffitarget.h libffi/src/sparc/internal.h libffi/src/sparc/v8.S libffi/src/sparc/v9.S libffi/src/tile/ffi.c libffi/src/tile/ffitarget.h libffi/src/tile/tile.S libffi/src/tramp.c libffi/src/tramp.lo libffi/src/tramp.o libffi/src/types.c libffi/src/types.lo libffi/src/types.o libffi/src/vax/elfbsd.S libffi/src/vax/ffi.c libffi/src/vax/ffitarget.h libffi/src/wasm32/ffi.c libffi/src/wasm32/ffitarget.h libffi/src/x86/asmnames.h libffi/src/x86/ffi.c libffi/src/x86/ffi64.c libffi/src/x86/ffi64.lo libffi/src/x86/ffi64.o libffi/src/x86/ffitarget.h libffi/src/x86/ffiw64.c libffi/src/x86/ffiw64.lo libffi/src/x86/ffiw64.o libffi/src/x86/internal.h libffi/src/x86/internal64.h libffi/src/x86/sysv.S libffi/src/x86/sysv_intel.S libffi/src/x86/unix64.S libffi/src/x86/unix64.lo libffi/src/x86/unix64.o libffi/src/x86/win64.S libffi/src/x86/win64.lo libffi/src/x86/win64.o libffi/src/x86/win64_intel.S libffi/src/xtensa/ffi.c libffi/src/xtensa/ffitarget.h libffi/src/xtensa/sysv.S libffi/stamp-h.in libffi/stamp-h1 libffi/testsuite/Makefile libffi/testsuite/Makefile.am libffi/testsuite/Makefile.in libffi/testsuite/config/default.exp libffi/testsuite/emscripten/build-tests.sh libffi/testsuite/emscripten/build.sh libffi/testsuite/emscripten/conftest.py libffi/testsuite/emscripten/node-tests.sh libffi/testsuite/emscripten/test.html libffi/testsuite/emscripten/test_libffi.py libffi/testsuite/lib/libffi.exp libffi/testsuite/lib/target-libpath.exp libffi/testsuite/lib/wrapper.exp libffi/testsuite/libffi.bhaible/Makefile libffi/testsuite/libffi.bhaible/README libffi/testsuite/libffi.bhaible/alignof.h libffi/testsuite/libffi.bhaible/bhaible.exp libffi/testsuite/libffi.bhaible/test-call.c libffi/testsuite/libffi.bhaible/test-callback.c libffi/testsuite/libffi.bhaible/testcases.c libffi/testsuite/libffi.call/align_mixed.c libffi/testsuite/libffi.call/align_stdcall.c libffi/testsuite/libffi.call/bpo_38748.c libffi/testsuite/libffi.call/call.exp libffi/testsuite/libffi.call/err_bad_typedef.c libffi/testsuite/libffi.call/ffitest.h libffi/testsuite/libffi.call/float.c libffi/testsuite/libffi.call/float1.c libffi/testsuite/libffi.call/float2.c libffi/testsuite/libffi.call/float3.c libffi/testsuite/libffi.call/float4.c libffi/testsuite/libffi.call/float_va.c libffi/testsuite/libffi.call/many.c libffi/testsuite/libffi.call/many2.c libffi/testsuite/libffi.call/many_double.c libffi/testsuite/libffi.call/many_mixed.c libffi/testsuite/libffi.call/negint.c libffi/testsuite/libffi.call/offsets.c libffi/testsuite/libffi.call/pr1172638.c libffi/testsuite/libffi.call/promotion.c libffi/testsuite/libffi.call/pyobjc_tc.c libffi/testsuite/libffi.call/return_dbl.c libffi/testsuite/libffi.call/return_dbl1.c libffi/testsuite/libffi.call/return_dbl2.c libffi/testsuite/libffi.call/return_fl.c libffi/testsuite/libffi.call/return_fl1.c libffi/testsuite/libffi.call/return_fl2.c libffi/testsuite/libffi.call/return_fl3.c libffi/testsuite/libffi.call/return_ldl.c libffi/testsuite/libffi.call/return_ll.c libffi/testsuite/libffi.call/return_ll1.c libffi/testsuite/libffi.call/return_sc.c libffi/testsuite/libffi.call/return_sl.c libffi/testsuite/libffi.call/return_uc.c libffi/testsuite/libffi.call/return_ul.c libffi/testsuite/libffi.call/s55.c libffi/testsuite/libffi.call/strlen.c libffi/testsuite/libffi.call/strlen2.c libffi/testsuite/libffi.call/strlen3.c libffi/testsuite/libffi.call/strlen4.c libffi/testsuite/libffi.call/struct1.c libffi/testsuite/libffi.call/struct10.c libffi/testsuite/libffi.call/struct2.c libffi/testsuite/libffi.call/struct3.c libffi/testsuite/libffi.call/struct4.c libffi/testsuite/libffi.call/struct5.c libffi/testsuite/libffi.call/struct6.c libffi/testsuite/libffi.call/struct7.c libffi/testsuite/libffi.call/struct8.c libffi/testsuite/libffi.call/struct9.c libffi/testsuite/libffi.call/struct_by_value_2.c libffi/testsuite/libffi.call/struct_by_value_3.c libffi/testsuite/libffi.call/struct_by_value_4.c libffi/testsuite/libffi.call/struct_by_value_big.c libffi/testsuite/libffi.call/struct_by_value_small.c libffi/testsuite/libffi.call/struct_return_2H.c libffi/testsuite/libffi.call/struct_return_8H.c libffi/testsuite/libffi.call/uninitialized.c libffi/testsuite/libffi.call/va_1.c libffi/testsuite/libffi.call/va_2.c libffi/testsuite/libffi.call/va_3.c libffi/testsuite/libffi.call/va_struct1.c libffi/testsuite/libffi.call/va_struct2.c libffi/testsuite/libffi.call/va_struct3.c libffi/testsuite/libffi.closures/closure.exp libffi/testsuite/libffi.closures/closure_fn0.c libffi/testsuite/libffi.closures/closure_fn1.c libffi/testsuite/libffi.closures/closure_fn2.c libffi/testsuite/libffi.closures/closure_fn3.c libffi/testsuite/libffi.closures/closure_fn4.c libffi/testsuite/libffi.closures/closure_fn5.c libffi/testsuite/libffi.closures/closure_fn6.c libffi/testsuite/libffi.closures/closure_loc_fn0.c libffi/testsuite/libffi.closures/closure_simple.c libffi/testsuite/libffi.closures/cls_12byte.c libffi/testsuite/libffi.closures/cls_16byte.c libffi/testsuite/libffi.closures/cls_18byte.c libffi/testsuite/libffi.closures/cls_19byte.c libffi/testsuite/libffi.closures/cls_1_1byte.c libffi/testsuite/libffi.closures/cls_20byte.c libffi/testsuite/libffi.closures/cls_20byte1.c libffi/testsuite/libffi.closures/cls_24byte.c libffi/testsuite/libffi.closures/cls_2byte.c libffi/testsuite/libffi.closures/cls_3_1byte.c libffi/testsuite/libffi.closures/cls_3byte1.c libffi/testsuite/libffi.closures/cls_3byte2.c libffi/testsuite/libffi.closures/cls_3float.c libffi/testsuite/libffi.closures/cls_4_1byte.c libffi/testsuite/libffi.closures/cls_4byte.c libffi/testsuite/libffi.closures/cls_5_1_byte.c libffi/testsuite/libffi.closures/cls_5byte.c libffi/testsuite/libffi.closures/cls_64byte.c libffi/testsuite/libffi.closures/cls_6_1_byte.c libffi/testsuite/libffi.closures/cls_6byte.c libffi/testsuite/libffi.closures/cls_7_1_byte.c libffi/testsuite/libffi.closures/cls_7byte.c libffi/testsuite/libffi.closures/cls_8byte.c libffi/testsuite/libffi.closures/cls_9byte1.c libffi/testsuite/libffi.closures/cls_9byte2.c libffi/testsuite/libffi.closures/cls_align_double.c libffi/testsuite/libffi.closures/cls_align_float.c libffi/testsuite/libffi.closures/cls_align_longdouble.c libffi/testsuite/libffi.closures/cls_align_longdouble_split.c libffi/testsuite/libffi.closures/cls_align_longdouble_split2.c libffi/testsuite/libffi.closures/cls_align_pointer.c libffi/testsuite/libffi.closures/cls_align_sint16.c libffi/testsuite/libffi.closures/cls_align_sint32.c libffi/testsuite/libffi.closures/cls_align_sint64.c libffi/testsuite/libffi.closures/cls_align_uint16.c libffi/testsuite/libffi.closures/cls_align_uint32.c libffi/testsuite/libffi.closures/cls_align_uint64.c libffi/testsuite/libffi.closures/cls_dbls_struct.c libffi/testsuite/libffi.closures/cls_double.c libffi/testsuite/libffi.closures/cls_double_va.c libffi/testsuite/libffi.closures/cls_float.c libffi/testsuite/libffi.closures/cls_longdouble.c libffi/testsuite/libffi.closures/cls_longdouble_va.c libffi/testsuite/libffi.closures/cls_many_mixed_args.c libffi/testsuite/libffi.closures/cls_many_mixed_float_double.c libffi/testsuite/libffi.closures/cls_multi_schar.c libffi/testsuite/libffi.closures/cls_multi_sshort.c libffi/testsuite/libffi.closures/cls_multi_sshortchar.c libffi/testsuite/libffi.closures/cls_multi_uchar.c libffi/testsuite/libffi.closures/cls_multi_ushort.c libffi/testsuite/libffi.closures/cls_multi_ushortchar.c libffi/testsuite/libffi.closures/cls_pointer.c libffi/testsuite/libffi.closures/cls_pointer_stack.c libffi/testsuite/libffi.closures/cls_schar.c libffi/testsuite/libffi.closures/cls_sint.c libffi/testsuite/libffi.closures/cls_sshort.c libffi/testsuite/libffi.closures/cls_struct_va1.c libffi/testsuite/libffi.closures/cls_uchar.c libffi/testsuite/libffi.closures/cls_uint.c libffi/testsuite/libffi.closures/cls_uint_va.c libffi/testsuite/libffi.closures/cls_ulong_va.c libffi/testsuite/libffi.closures/cls_ulonglong.c libffi/testsuite/libffi.closures/cls_ushort.c libffi/testsuite/libffi.closures/err_bad_abi.c libffi/testsuite/libffi.closures/ffitest.h libffi/testsuite/libffi.closures/huge_struct.c libffi/testsuite/libffi.closures/nested_struct.c libffi/testsuite/libffi.closures/nested_struct1.c libffi/testsuite/libffi.closures/nested_struct10.c libffi/testsuite/libffi.closures/nested_struct11.c libffi/testsuite/libffi.closures/nested_struct12.c libffi/testsuite/libffi.closures/nested_struct13.c libffi/testsuite/libffi.closures/nested_struct2.c libffi/testsuite/libffi.closures/nested_struct3.c libffi/testsuite/libffi.closures/nested_struct4.c libffi/testsuite/libffi.closures/nested_struct5.c libffi/testsuite/libffi.closures/nested_struct6.c libffi/testsuite/libffi.closures/nested_struct7.c libffi/testsuite/libffi.closures/nested_struct8.c libffi/testsuite/libffi.closures/nested_struct9.c libffi/testsuite/libffi.closures/problem1.c libffi/testsuite/libffi.closures/single_entry_structs1.c libffi/testsuite/libffi.closures/single_entry_structs2.c libffi/testsuite/libffi.closures/single_entry_structs3.c libffi/testsuite/libffi.closures/stret_large.c libffi/testsuite/libffi.closures/stret_large2.c libffi/testsuite/libffi.closures/stret_medium.c libffi/testsuite/libffi.closures/stret_medium2.c libffi/testsuite/libffi.closures/testclosure.c libffi/testsuite/libffi.closures/unwindtest.cc libffi/testsuite/libffi.closures/unwindtest_ffi_call.cc libffi/testsuite/libffi.complex/cls_align_complex.inc libffi/testsuite/libffi.complex/cls_align_complex_double.c libffi/testsuite/libffi.complex/cls_align_complex_float.c libffi/testsuite/libffi.complex/cls_align_complex_longdouble.c libffi/testsuite/libffi.complex/cls_complex.inc libffi/testsuite/libffi.complex/cls_complex_double.c libffi/testsuite/libffi.complex/cls_complex_float.c libffi/testsuite/libffi.complex/cls_complex_longdouble.c libffi/testsuite/libffi.complex/cls_complex_struct.inc libffi/testsuite/libffi.complex/cls_complex_struct_double.c libffi/testsuite/libffi.complex/cls_complex_struct_float.c libffi/testsuite/libffi.complex/cls_complex_struct_longdouble.c libffi/testsuite/libffi.complex/cls_complex_va.inc libffi/testsuite/libffi.complex/cls_complex_va_double.c libffi/testsuite/libffi.complex/cls_complex_va_float.c libffi/testsuite/libffi.complex/cls_complex_va_longdouble.c libffi/testsuite/libffi.complex/complex.exp libffi/testsuite/libffi.complex/complex.inc libffi/testsuite/libffi.complex/complex_defs_double.inc libffi/testsuite/libffi.complex/complex_defs_float.inc libffi/testsuite/libffi.complex/complex_defs_longdouble.inc libffi/testsuite/libffi.complex/complex_double.c libffi/testsuite/libffi.complex/complex_float.c libffi/testsuite/libffi.complex/complex_int.c libffi/testsuite/libffi.complex/complex_longdouble.c libffi/testsuite/libffi.complex/ffitest.h libffi/testsuite/libffi.complex/many_complex.inc libffi/testsuite/libffi.complex/many_complex_double.c libffi/testsuite/libffi.complex/many_complex_float.c libffi/testsuite/libffi.complex/many_complex_longdouble.c libffi/testsuite/libffi.complex/return_complex.inc libffi/testsuite/libffi.complex/return_complex1.inc libffi/testsuite/libffi.complex/return_complex1_double.c libffi/testsuite/libffi.complex/return_complex1_float.c libffi/testsuite/libffi.complex/return_complex1_longdouble.c libffi/testsuite/libffi.complex/return_complex2.inc libffi/testsuite/libffi.complex/return_complex2_double.c libffi/testsuite/libffi.complex/return_complex2_float.c libffi/testsuite/libffi.complex/return_complex2_longdouble.c libffi/testsuite/libffi.complex/return_complex_double.c libffi/testsuite/libffi.complex/return_complex_float.c libffi/testsuite/libffi.complex/return_complex_longdouble.c libffi/testsuite/libffi.go/aa-direct.c libffi/testsuite/libffi.go/closure1.c libffi/testsuite/libffi.go/ffitest.h libffi/testsuite/libffi.go/go.exp libffi/testsuite/libffi.go/static-chain.h libtommath/LICENSE libtommath/README.md libtommath/bn_cutoffs.c libtommath/bn_deprecated.c libtommath/bn_mp_2expt.c libtommath/bn_mp_abs.c libtommath/bn_mp_add.c libtommath/bn_mp_add_d.c libtommath/bn_mp_addmod.c libtommath/bn_mp_and.c libtommath/bn_mp_clamp.c libtommath/bn_mp_clear.c libtommath/bn_mp_clear_multi.c libtommath/bn_mp_cmp.c libtommath/bn_mp_cmp_d.c libtommath/bn_mp_cmp_mag.c libtommath/bn_mp_cnt_lsb.c libtommath/bn_mp_complement.c libtommath/bn_mp_copy.c libtommath/bn_mp_count_bits.c libtommath/bn_mp_decr.c libtommath/bn_mp_div.c libtommath/bn_mp_div_2.c libtommath/bn_mp_div_2d.c libtommath/bn_mp_div_3.c libtommath/bn_mp_div_d.c libtommath/bn_mp_dr_is_modulus.c libtommath/bn_mp_dr_reduce.c libtommath/bn_mp_dr_setup.c libtommath/bn_mp_error_to_string.c libtommath/bn_mp_exch.c libtommath/bn_mp_expt_u32.c libtommath/bn_mp_exptmod.c libtommath/bn_mp_exteuclid.c libtommath/bn_mp_fread.c libtommath/bn_mp_from_sbin.c libtommath/bn_mp_from_ubin.c libtommath/bn_mp_fwrite.c libtommath/bn_mp_gcd.c libtommath/bn_mp_get_double.c libtommath/bn_mp_get_i32.c libtommath/bn_mp_get_i64.c libtommath/bn_mp_get_l.c libtommath/bn_mp_get_ll.c libtommath/bn_mp_get_mag_u32.c libtommath/bn_mp_get_mag_u64.c libtommath/bn_mp_get_mag_ul.c libtommath/bn_mp_get_mag_ull.c libtommath/bn_mp_grow.c libtommath/bn_mp_incr.c libtommath/bn_mp_init.c libtommath/bn_mp_init_copy.c libtommath/bn_mp_init_i32.c libtommath/bn_mp_init_i64.c libtommath/bn_mp_init_l.c libtommath/bn_mp_init_ll.c libtommath/bn_mp_init_multi.c libtommath/bn_mp_init_set.c libtommath/bn_mp_init_size.c libtommath/bn_mp_init_u32.c libtommath/bn_mp_init_u64.c libtommath/bn_mp_init_ul.c libtommath/bn_mp_init_ull.c libtommath/bn_mp_invmod.c libtommath/bn_mp_is_square.c libtommath/bn_mp_iseven.c libtommath/bn_mp_isodd.c libtommath/bn_mp_kronecker.c libtommath/bn_mp_lcm.c libtommath/bn_mp_log_u32.c libtommath/bn_mp_lshd.c libtommath/bn_mp_mod.c libtommath/bn_mp_mod_2d.c libtommath/bn_mp_mod_d.c libtommath/bn_mp_montgomery_calc_normalization.c libtommath/bn_mp_montgomery_reduce.c libtommath/bn_mp_montgomery_setup.c libtommath/bn_mp_mul.c libtommath/bn_mp_mul_2.c libtommath/bn_mp_mul_2d.c libtommath/bn_mp_mul_d.c libtommath/bn_mp_mulmod.c libtommath/bn_mp_neg.c libtommath/bn_mp_or.c libtommath/bn_mp_pack.c libtommath/bn_mp_pack_count.c libtommath/bn_mp_prime_fermat.c libtommath/bn_mp_prime_frobenius_underwood.c libtommath/bn_mp_prime_is_prime.c libtommath/bn_mp_prime_miller_rabin.c libtommath/bn_mp_prime_next_prime.c libtommath/bn_mp_prime_rabin_miller_trials.c libtommath/bn_mp_prime_rand.c libtommath/bn_mp_prime_strong_lucas_selfridge.c libtommath/bn_mp_radix_size.c libtommath/bn_mp_radix_smap.c libtommath/bn_mp_rand.c libtommath/bn_mp_read_radix.c libtommath/bn_mp_reduce.c libtommath/bn_mp_reduce_2k.c libtommath/bn_mp_reduce_2k_l.c libtommath/bn_mp_reduce_2k_setup.c libtommath/bn_mp_reduce_2k_setup_l.c libtommath/bn_mp_reduce_is_2k.c libtommath/bn_mp_reduce_is_2k_l.c libtommath/bn_mp_reduce_setup.c libtommath/bn_mp_root_u32.c libtommath/bn_mp_rshd.c libtommath/bn_mp_sbin_size.c libtommath/bn_mp_set.c libtommath/bn_mp_set_double.c libtommath/bn_mp_set_i32.c libtommath/bn_mp_set_i64.c libtommath/bn_mp_set_l.c libtommath/bn_mp_set_ll.c libtommath/bn_mp_set_u32.c libtommath/bn_mp_set_u64.c libtommath/bn_mp_set_ul.c libtommath/bn_mp_set_ull.c libtommath/bn_mp_shrink.c libtommath/bn_mp_signed_rsh.c libtommath/bn_mp_sqr.c libtommath/bn_mp_sqrmod.c libtommath/bn_mp_sqrt.c libtommath/bn_mp_sqrtmod_prime.c libtommath/bn_mp_sub.c libtommath/bn_mp_sub_d.c libtommath/bn_mp_submod.c libtommath/bn_mp_to_radix.c libtommath/bn_mp_to_sbin.c libtommath/bn_mp_to_ubin.c libtommath/bn_mp_ubin_size.c libtommath/bn_mp_unpack.c libtommath/bn_mp_xor.c libtommath/bn_mp_zero.c libtommath/bn_prime_tab.c libtommath/bn_s_mp_add.c libtommath/bn_s_mp_balance_mul.c libtommath/bn_s_mp_exptmod.c libtommath/bn_s_mp_exptmod_fast.c libtommath/bn_s_mp_get_bit.c libtommath/bn_s_mp_invmod_fast.c libtommath/bn_s_mp_invmod_slow.c libtommath/bn_s_mp_karatsuba_mul.c libtommath/bn_s_mp_karatsuba_sqr.c libtommath/bn_s_mp_montgomery_reduce_fast.c libtommath/bn_s_mp_mul_digs.c libtommath/bn_s_mp_mul_digs_fast.c libtommath/bn_s_mp_mul_high_digs.c libtommath/bn_s_mp_mul_high_digs_fast.c libtommath/bn_s_mp_prime_is_divisible.c libtommath/bn_s_mp_rand_jenkins.c libtommath/bn_s_mp_rand_platform.c libtommath/bn_s_mp_reverse.c libtommath/bn_s_mp_sqr.c libtommath/bn_s_mp_sqr_fast.c libtommath/bn_s_mp_sub.c libtommath/bn_s_mp_toom_mul.c libtommath/bn_s_mp_toom_sqr.c libtommath/demo/mtest_opponent.c libtommath/demo/shared.c libtommath/demo/shared.h libtommath/demo/test.c libtommath/demo/timing.c libtommath/etc/2kprime.c libtommath/etc/drprime.c libtommath/etc/mersenne.c libtommath/etc/mont.c libtommath/etc/pprime.c libtommath/etc/tune.c libtommath/mtest/logtab.h libtommath/mtest/mpi-config.h libtommath/mtest/mpi-types.h libtommath/mtest/mpi.c libtommath/mtest/mpi.h libtommath/mtest/mtest.c libtommath/tommath.h libtommath/tommath_class.h libtommath/tommath_cutoffs.h libtommath/tommath_private.h libtommath/tommath_superclass.h linenoise/LICENSE linenoise/Makefile linenoise/README.markdown linenoise/example.c linenoise/linenoise.c linenoise/linenoise.h ucd2c/Makefile ucd2c/UCD.zip ucd2c/UCD/ArabicShaping.txt ucd2c/UCD/BidiBrackets.txt ucd2c/UCD/BidiCharacterTest.txt ucd2c/UCD/BidiMirroring.txt ucd2c/UCD/BidiTest.txt ucd2c/UCD/Blocks.txt ucd2c/UCD/CJKRadicals.txt ucd2c/UCD/CaseFolding.txt ucd2c/UCD/CompositionExclusions.txt ucd2c/UCD/DerivedAge.txt ucd2c/UCD/DerivedCoreProperties.txt ucd2c/UCD/DerivedNormalizationProps.txt ucd2c/UCD/EastAsianWidth.txt ucd2c/UCD/EmojiSources.txt ucd2c/UCD/EquivalentUnifiedIdeograph.txt ucd2c/UCD/HangulSyllableType.txt ucd2c/UCD/Index.txt ucd2c/UCD/IndicPositionalCategory.txt ucd2c/UCD/IndicSyllabicCategory.txt ucd2c/UCD/Jamo.txt ucd2c/UCD/LineBreak.txt ucd2c/UCD/NameAliases.txt ucd2c/UCD/NamedSequences.txt ucd2c/UCD/NamedSequencesProv.txt ucd2c/UCD/NamesList.html ucd2c/UCD/NamesList.txt ucd2c/UCD/NormalizationCorrections.txt ucd2c/UCD/NormalizationTest.txt ucd2c/UCD/NushuSources.txt ucd2c/UCD/PropList.txt ucd2c/UCD/PropertyAliases.txt ucd2c/UCD/PropertyValueAliases.txt ucd2c/UCD/ReadMe.txt ucd2c/UCD/ScriptExtensions.txt ucd2c/UCD/Scripts.txt ucd2c/UCD/SpecialCasing.txt ucd2c/UCD/StandardizedVariants.txt ucd2c/UCD/TangutSources.txt ucd2c/UCD/USourceData.txt ucd2c/UCD/USourceGlyphs.pdf ucd2c/UCD/USourceRSChart.pdf ucd2c/UCD/UnicodeData.txt ucd2c/UCD/VerticalOrientation.txt ucd2c/UCD/auxiliary/GraphemeBreakProperty.txt ucd2c/UCD/auxiliary/GraphemeBreakTest.html ucd2c/UCD/auxiliary/GraphemeBreakTest.txt ucd2c/UCD/auxiliary/LineBreakTest.html ucd2c/UCD/auxiliary/LineBreakTest.txt ucd2c/UCD/auxiliary/SentenceBreakProperty.txt ucd2c/UCD/auxiliary/SentenceBreakTest.html ucd2c/UCD/auxiliary/SentenceBreakTest.txt ucd2c/UCD/auxiliary/WordBreakProperty.txt ucd2c/UCD/auxiliary/WordBreakTest.html ucd2c/UCD/auxiliary/WordBreakTest.txt ucd2c/UCD/emoji/ReadMe.txt ucd2c/UCD/emoji/emoji-data.txt ucd2c/UCD/emoji/emoji-variation-sequences.txt ucd2c/UCD/extracted/DerivedBidiClass.txt ucd2c/UCD/extracted/DerivedBinaryProperties.txt ucd2c/UCD/extracted/DerivedCombiningClass.txt ucd2c/UCD/extracted/DerivedDecompositionType.txt ucd2c/UCD/extracted/DerivedEastAsianWidth.txt ucd2c/UCD/extracted/DerivedGeneralCategory.txt ucd2c/UCD/extracted/DerivedJoiningGroup.txt ucd2c/UCD/extracted/DerivedJoiningType.txt ucd2c/UCD/extracted/DerivedLineBreak.txt ucd2c/UCD/extracted/DerivedName.txt ucd2c/UCD/extracted/DerivedNumericType.txt ucd2c/UCD/extracted/DerivedNumericValues.txt ucd2c/config.mk ucd2c/configure ucd2c/license.txt ucd2c/ucd.c ucd2c/ucd.h ucd2c/ucd2c ucd2c/ucd2c.c ucd2c/ucd2c.lo ucd2c/ucd2c.o '