diff --git a/lib/c3/0.1/complex.facts b/lib/c3/0.1/complex.facts
new file mode 100644
index 0000000..e222458
--- /dev/null
+++ b/lib/c3/0.1/complex.facts
@@ -0,0 +1,6 @@
+%{module: C3.Facts.Dump,
+ version: 1}
+replace {Complex, :is_a, :module}
+replace {Complex, :defstruct, [x: void,
+ y: void]}
+replace {Complex, :clean, cfn Void "gl_object_clean" (Complex)}
diff --git a/libc3/bool.c b/libc3/bool.c
index cd17bb2..4ad188b 100644
--- a/libc3/bool.c
+++ b/libc3/bool.c
@@ -14,6 +14,7 @@
#include "bool.h"
#include "buf.h"
#include "buf_inspect.h"
+#include "complex.h"
#include "integer.h"
#include "io.h"
#include "ratio.h"
@@ -24,29 +25,30 @@ bool * bool_init_cast (bool *b, const s_tag *tag)
assert(b);
assert(tag);
switch (tag->type) {
- case TAG_BOOL: *b = tag->data.bool; return b;
- case TAG_CHARACTER: *b = (bool) tag->data.character; return b;
- case TAG_F32: *b = (bool) tag->data.f32; return b;
- case TAG_F64: *b = (bool) tag->data.f64; return b;
- case TAG_F128: *b = (bool) tag->data.f128; return b;
- case TAG_INTEGER:
- *b = ! integer_is_zero(&tag->data.integer); return b;
- case TAG_RATIO:
- *b = ! ratio_is_zero(&tag->data.ratio); return b;
- case TAG_S8: *b = tag->data.s8 != 0; return b;
- case TAG_S16: *b = tag->data.s16 != 0; return b;
- case TAG_S32: *b = tag->data.s32 != 0; return b;
- case TAG_S64: *b = tag->data.s64 != 0; return b;
- case TAG_SW: *b = tag->data.sw != 0; return b;
- case TAG_U8: *b = tag->data.u8 != 0; return b;
- case TAG_U16: *b = tag->data.u16 != 0; return b;
- case TAG_U32: *b = tag->data.u32 != 0; return b;
- case TAG_U64: *b = tag->data.u64 != 0; return b;
- case TAG_UW: *b = tag->data.uw != 0; return b;
+ case TAG_BOOL: *b = tag->data.bool; return b;
+ case TAG_CHARACTER: *b = (bool) tag->data.character; return b;
+ //case TAG_COMPLEX: *b = ! complex_is_zero(tag->data.complex);
+ // return b;
+ case TAG_F32: *b = (bool) tag->data.f32; return b;
+ case TAG_F64: *b = (bool) tag->data.f64; return b;
+ case TAG_F128: *b = (bool) tag->data.f128; return b;
+ case TAG_INTEGER: *b = ! integer_is_zero(&tag->data.integer);
+ return b;
+ case TAG_RATIO: *b = ! ratio_is_zero(&tag->data.ratio); return b;
+ case TAG_S8: *b = tag->data.s8 != 0; return b;
+ case TAG_S16: *b = tag->data.s16 != 0; return b;
+ case TAG_S32: *b = tag->data.s32 != 0; return b;
+ case TAG_S64: *b = tag->data.s64 != 0; return b;
+ case TAG_SW: *b = tag->data.sw != 0; return b;
+ case TAG_U8: *b = tag->data.u8 != 0; return b;
+ case TAG_U16: *b = tag->data.u16 != 0; return b;
+ case TAG_U32: *b = tag->data.u32 != 0; return b;
+ case TAG_U64: *b = tag->data.u64 != 0; return b;
+ case TAG_UW: *b = tag->data.uw != 0; return b;
case TAG_PTAG: return tag->data.ptag ?
bool_init_cast(b, tag->data.ptag) : (*b = false, b);
- case TAG_PTR: *b = tag->data.ptr.p != 0; return b;
- case TAG_PTR_FREE: *b = tag->data.ptr_free.p != 0; return b;
+ case TAG_PTR: *b = tag->data.ptr.p != 0; return b;
+ case TAG_PTR_FREE: *b = tag->data.ptr_free.p != 0; return b;
case TAG_ARRAY:
case TAG_BLOCK:
case TAG_CALL:
diff --git a/libc3/buf_inspect.c b/libc3/buf_inspect.c
index 5d1d75f..5fd2f06 100644
--- a/libc3/buf_inspect.c
+++ b/libc3/buf_inspect.c
@@ -775,6 +775,46 @@ sw buf_inspect_character_size (const character *c)
return result;
}
+/*
+sw buf_inspect_complex (s_buf *buf, const s_complex *c)
+{
+ s_struct s;
+ sw r;
+ sw result = 0;
+ s_buf_save save;
+ buf_save_init(buf, &save);
+ if (! struct_init_with_data(&s, &g_sym_Complex, false, c)) {
+ r = -2;
+ goto clean;
+ }
+ if ((r = buf_inspect_struct(buf, c)) <= 0)
+ goto restore;
+ result += r;
+ if ((
+ goto restore;
+ result += r;
+ r = result;
+ goto clean;
+ restore:
+ buf_save_restore_wpos(buf, &save);
+ clean:
+ buf_save_clean(buf, &save);
+ return result;
+}
+
+sw buf_inspect_complex_size (const complex *c)
+{
+ sw r;
+ sw result = 0;
+ result += strlen("'");
+ if ((r = buf_inspect_str_complex_size(c)) <= 0)
+ return r;
+ result += r;
+ result += strlen("'");
+ return result;
+}
+*/
+
sw buf_inspect_f32 (s_buf *buf, const f32 *f)
{
s32 exp;
@@ -1346,7 +1386,7 @@ sw buf_inspect_integer (s_buf *buf, const s_integer *x)
result++;
}
buf_init_alloc(&buf_tmp, maxlen);
- while (!MP_IS_ZERO(&t)) {
+ while (! MP_IS_ZERO(&t)) {
if (mp_div_d(&t, radix, &t, &d) != MP_OKAY)
goto error;
p = '0' + d;
diff --git a/libc3/buf_inspect.h b/libc3/buf_inspect.h
index 877ef57..2f45860 100644
--- a/libc3/buf_inspect.h
+++ b/libc3/buf_inspect.h
@@ -80,6 +80,8 @@ sw buf_inspect_cfn (s_buf *buf, const s_cfn *cfn);
sw buf_inspect_cfn_size (const s_cfn *cfn);
sw buf_inspect_character (s_buf *buf, const character *c);
sw buf_inspect_character_size (const character *c);
+sw buf_inspect_complex (s_buf *buf, const s_complex *c);
+sw buf_inspect_complex_size (const s_complex *c);
sw buf_inspect_error_handler (s_buf *buf,
const s_error_handler *error_handler);
sw buf_inspect_f32 (s_buf *buf, const f32 *x);
diff --git a/libc3/c3.h b/libc3/c3.h
index c89c2c8..4e9598c 100644
--- a/libc3/c3.h
+++ b/libc3/c3.h
@@ -86,7 +86,6 @@
#include "tag.h"
#include "time.h"
#include "tuple.h"
-#include "type.h"
#include "u8.h"
#include "u16.h"
#include "u32.h"
diff --git a/libc3/cfn.c b/libc3/cfn.c
index 2f51cb4..2923c54 100644
--- a/libc3/cfn.c
+++ b/libc3/cfn.c
@@ -21,7 +21,7 @@
#include "sym.h"
#include "tag.h"
#include "tag_type.h"
-#include "type.h"
+//#include "type.h"
static s_tag * cfn_tag_init (s_tag *tag, const s_sym *type);
diff --git a/libc3/complex.c b/libc3/complex.c
index 7ab805c..b042d90 100644
--- a/libc3/complex.c
+++ b/libc3/complex.c
@@ -10,28 +10,13 @@
* AUTHOR BE CONSIDERED LIABLE FOR THE USE AND PERFORMANCE OF
* THIS SOFTWARE.
*/
-#include <assert.h>
+#include "assert.h"
+#include <math.h>
#include <stdlib.h>
+#include "f32.h"
+#include "f64.h"
#include "tag.h"
#include "tag_init.h"
-#include <math.h>
-
-s_complex * complex_init (s_complex *c)
-{
- assert(c);
- tag_init_f64(&c->x, 0);
- tag_init_f64(&c->y, 0);
- return c;
-}
-
-s_complex * complex_init_copy (s_complex *a, const s_complex *x)
-{
- assert(a);
- assert(x);
- tag_init_copy(&a->x, &x->x);
- tag_init_copy(&a->y, &x->y);
- return a;
-}
s_complex * complex_add (const s_complex *a, const s_complex *b,
s_complex *dest)
@@ -44,62 +29,121 @@ s_complex * complex_add (const s_complex *a, const s_complex *b,
return dest;
}
-s_complex * complex_sub (const s_complex *a, const s_complex *b,
- s_complex *dest)
+void complex_clean (s_complex *c)
{
- assert(a);
- assert(b);
- assert(dest);
- tag_sub(&a->x, &b->x, &dest->x);
- tag_sub(&a->y, &b->y, &dest->y);
- return dest;
+ assert(c);
+ tag_clean(&c->x);
+ tag_clean(&c->y);
+}
+
+s_complex * complex_init (s_complex *c)
+{
+ assert(c);
+ tag_init_f64(&c->x, 0);
+ tag_init_f64(&c->y, 0);
+ return c;
+}
+
+s_complex * complex_init_copy (s_complex *c, const s_complex *src)
+{
+ assert(c);
+ assert(src);
+ tag_init_copy(&c->x, &src->x);
+ tag_init_copy(&c->y, &src->y);
+ return c;
}
s_complex * complex_mul (const s_complex *a, const s_complex *b,
s_complex *dest)
{
+ s_tag axbx;
+ s_tag bd;
+ s_tag ad;
+ s_tag bc;
+ s_tag axbx_bd;
+ s_tag ad_bc;
assert(a);
assert(b);
assert(dest);
-
- s_tag ac, bd, ad, bc, ac_bd, ad_bc;
-
- // ac = a.x * b.x
- tag_mul(&a->x, &b->x, &ac);
+ tag_mul(&a->x, &b->x, &axbx);
// bd = a.y * b.y
tag_mul(&a->y, &b->y, &bd);
// ad = a.x * b.y
tag_mul(&a->x, &b->y, &ad);
// bc = a.y * b.x
tag_mul(&a->y, &b->x, &bc);
-
- // ac_bd = ac - bd
- tag_sub(&ac, &bd, &ac_bd);
+ // axbx_bd = ac - bd
+ tag_sub(&axbx, &bd, &axbx_bd);
// ad_bc = ad + bc
tag_add(&ad, &bc, &ad_bc);
-
// dest.x = ac_bd
- tag_init_copy(&dest->x, &ac_bd);
+ tag_init_copy(&dest->x, &axbx_bd);
// dest.y = ad_bc
tag_init_copy(&dest->y, &ad_bc);
-
return dest;
}
s_complex * complex_new (void)
{
- s_complex *c = malloc(sizeof(s_complex));
- complex_init(c);
+ s_complex *c;
+ assert(src);
+ c = calloc(1, sizeof(s_complex));
+ if (! c) {
+ err_puts("complex_new_copy: failed to allocate memory");
+ assert(! "complex_new_copy: failed to allocate memory");
+ return NULL;
+ }
+ if (! complex_init(c)) {
+ free(c);
+ return NULL;
+ }
return c;
}
-s_complex * complex_new_copy (const s_complex *a)
+s_complex * complex_new_copy (const s_complex *src)
{
- s_complex *c = malloc(sizeof(s_complex));
- complex_init_copy(c, a);
+ s_complex *c;
+ assert(src);
+ c = calloc(1, sizeof(s_complex));
+ if (! c) {
+ err_puts("complex_new_copy: failed to allocate memory");
+ assert(! "complex_new_copy: failed to allocate memory");
+ return NULL;
+ }
+ if (! complex_init_copy(c, src)) {
+ free(c);
+ return NULL;
+ }
return c;
}
+s_complex * complex_sub (const s_complex *a, const s_complex *b,
+ s_complex *dest)
+{
+ assert(a);
+ assert(b);
+ assert(dest);
+ tag_sub(&a->x, &b->x, &dest->x);
+ tag_sub(&a->y, &b->y, &dest->y);
+ return dest;
+}
+
+s_tag * complex_norm (const s_complex *c, s_tag *dest)
+{
+ s_complex d;
+ s_tag sum;
+ s_tag tmp;
+ assert(c);
+ tag_mul(&c->x, &c->x, &d.x);
+ tag_mul(&c->y, &c->y, &d.y);
+ tag_add(&d.x, &d.y, &sum);
+ tag_sqrt(&sum, &tmp);
+ tag_clean(&sum);
+ complex_clean(&d);
+ *dest = tmp;
+ return dest;
+}
+
bool complex_is_zero(const s_complex *c)
{
assert(c);
@@ -108,16 +152,20 @@ bool complex_is_zero(const s_complex *c)
f32 complex_to_f32 (const s_complex *c)
{
+ s_tag norm;
+ f32 x;
assert(c);
- f32 real = tag_to_f32(&c->x);
- f32 imag = tag_to_f32(&c->y);
- return sqrtf(real * real + imag * imag);
+ complex_norm(c, &norm);
+ f32_init_cast(&x, &norm);
+ return x;
}
f64 complex_to_f64 (const s_complex *c)
{
+ s_tag norm;
+ f64 x;
assert(c);
- f64 real = tag_to_f64(&c->x);
- f64 imag = tag_to_f64(&c->y);
- return sqrt(real * real + imag * imag);
-}
\ No newline at end of file
+ complex_norm(c, &norm);
+ f64_init_cast(&x, &norm);
+ return x;
+}
diff --git a/libc3/list_init.c b/libc3/list_init.c
index e0da66f..5f16c9f 100644
--- a/libc3/list_init.c
+++ b/libc3/list_init.c
@@ -10,8 +10,7 @@
* AUTHOR BE CONSIDERED LIABLE FOR THE USE AND PERFORMANCE OF
* THIS SOFTWARE.
*/
-#include <assert.h>
-#include <err.h>
+#include "assert.h"
#include <string.h>
#include "array.h"
#include "buf.h"
diff --git a/libc3/s.c.in b/libc3/s.c.in
index 041f68d..af13bd1 100644
--- a/libc3/s.c.in
+++ b/libc3/s.c.in
@@ -11,8 +11,7 @@
* THIS SOFTWARE.
*/
/* Gen from s.h.in BITS=_BITS$ bits=_bits$ */
-#include <assert.h>
-#include <err.h>
+#include "assert.h"
#include <stdlib.h>
#include "integer.h"
#include "tag.h"
@@ -74,8 +73,9 @@ s_bits$ * s_bits$_init_cast (s_bits$ *s, const s_tag *tag)
default:
break;
}
- warnx("s_bits$_cast: cannot cast %s to s_bits$",
- tag_type_to_string(tag->type));
+ err_write_1("s_bits$_cast: cannot cast ");
+ err_write_1(tag_type_to_string(tag->type));
+ err_puts(" to s_bits$");
assert(! "s_bits$_cast: cannot cast to s_bits$");
return NULL;
}
diff --git a/libc3/s16.c b/libc3/s16.c
index d6070d1..b26af01 100644
--- a/libc3/s16.c
+++ b/libc3/s16.c
@@ -11,8 +11,7 @@
* THIS SOFTWARE.
*/
/* Gen from s.h.in BITS=16 bits=16 */
-#include <assert.h>
-#include <err.h>
+#include "assert.h"
#include <stdlib.h>
#include "integer.h"
#include "tag.h"
@@ -74,8 +73,9 @@ s16 * s16_init_cast (s16 *s, const s_tag *tag)
default:
break;
}
- warnx("s16_cast: cannot cast %s to s16",
- tag_type_to_string(tag->type));
+ err_write_1("s16_cast: cannot cast ");
+ err_write_1(tag_type_to_string(tag->type));
+ err_puts(" to s16");
assert(! "s16_cast: cannot cast to s16");
return NULL;
}
diff --git a/libc3/s32.c b/libc3/s32.c
index 9ef890a..37e8bc0 100644
--- a/libc3/s32.c
+++ b/libc3/s32.c
@@ -11,8 +11,7 @@
* THIS SOFTWARE.
*/
/* Gen from s.h.in BITS=32 bits=32 */
-#include <assert.h>
-#include <err.h>
+#include "assert.h"
#include <stdlib.h>
#include "integer.h"
#include "tag.h"
@@ -74,8 +73,9 @@ s32 * s32_init_cast (s32 *s, const s_tag *tag)
default:
break;
}
- warnx("s32_cast: cannot cast %s to s32",
- tag_type_to_string(tag->type));
+ err_write_1("s32_cast: cannot cast ");
+ err_write_1(tag_type_to_string(tag->type));
+ err_puts(" to s32");
assert(! "s32_cast: cannot cast to s32");
return NULL;
}
diff --git a/libc3/s64.c b/libc3/s64.c
index c90c066..9309c1d 100644
--- a/libc3/s64.c
+++ b/libc3/s64.c
@@ -11,8 +11,7 @@
* THIS SOFTWARE.
*/
/* Gen from s.h.in BITS=64 bits=64 */
-#include <assert.h>
-#include <err.h>
+#include "assert.h"
#include <stdlib.h>
#include "integer.h"
#include "tag.h"
@@ -74,8 +73,9 @@ s64 * s64_init_cast (s64 *s, const s_tag *tag)
default:
break;
}
- warnx("s64_cast: cannot cast %s to s64",
- tag_type_to_string(tag->type));
+ err_write_1("s64_cast: cannot cast ");
+ err_write_1(tag_type_to_string(tag->type));
+ err_puts(" to s64");
assert(! "s64_cast: cannot cast to s64");
return NULL;
}
diff --git a/libc3/s8.c b/libc3/s8.c
index 81dd31f..b0a037a 100644
--- a/libc3/s8.c
+++ b/libc3/s8.c
@@ -11,8 +11,7 @@
* THIS SOFTWARE.
*/
/* Gen from s.h.in BITS=8 bits=8 */
-#include <assert.h>
-#include <err.h>
+#include "assert.h"
#include <stdlib.h>
#include "integer.h"
#include "tag.h"
@@ -74,8 +73,9 @@ s8 * s8_init_cast (s8 *s, const s_tag *tag)
default:
break;
}
- warnx("s8_cast: cannot cast %s to s8",
- tag_type_to_string(tag->type));
+ err_write_1("s8_cast: cannot cast ");
+ err_write_1(tag_type_to_string(tag->type));
+ err_puts(" to s8");
assert(! "s8_cast: cannot cast to s8");
return NULL;
}
diff --git a/libc3/sources.mk b/libc3/sources.mk
index bf74d54..6b343a2 100644
--- a/libc3/sources.mk
+++ b/libc3/sources.mk
@@ -144,7 +144,6 @@ HEADERS = \
"tag_type.h" \
"time.h" \
"tuple.h" \
- "type.h" \
"types.h" \
"u16.h" \
"u32.h" \
@@ -301,13 +300,13 @@ SOURCES = \
"tag_init.c" \
"tag_mod.c" \
"tag_mul.c" \
+ "tag_neg.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" \
@@ -560,13 +559,13 @@ LO_SOURCES = \
"tag_init.c" \
"tag_mod.c" \
"tag_mul.c" \
+ "tag_neg.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" \
diff --git a/libc3/sources.sh b/libc3/sources.sh
index 8074556..3d626c1 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 block.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 complex.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 queue.h quote.h ratio.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 special_operator.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 unquote.h uw.h var.h void.h '
-SOURCES='abs.c arg.c array.c binding.c block.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 complex.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 queue.c quote.c ratio.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 special_operator.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 unquote.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 block.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 complex.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 queue.c quote.c ratio.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 special_operator.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 unquote.c uw.c var.c void.c '
+HEADERS='abs.h arg.h array.h assert.h binding.h block.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 complex.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 queue.h quote.h ratio.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 special_operator.h str.h struct.h struct_type.h sw.h sym.h tag.h tag_init.h tag_type.h time.h tuple.h types.h u16.h u32.h u64.h u8.h ucd.h unquote.h uw.h var.h void.h '
+SOURCES='abs.c arg.c array.c binding.c block.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 complex.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 queue.c quote.c ratio.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 special_operator.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_neg.c tag_shift_left.c tag_shift_right.c tag_sub.c tag_type.c time.c tuple.c u16.c u32.c u64.c u8.c ucd.c unquote.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 block.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 complex.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 queue.c quote.c ratio.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 special_operator.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_neg.c tag_shift_left.c tag_shift_right.c tag_sub.c tag_type.c time.c tuple.c u16.c u32.c u64.c u8.c ucd.c unquote.c uw.c var.c void.c '
diff --git a/libc3/sw.c b/libc3/sw.c
index 58f9d21..a645c86 100644
--- a/libc3/sw.c
+++ b/libc3/sw.c
@@ -11,8 +11,7 @@
* THIS SOFTWARE.
*/
/* Gen from s.h.in BITS=W bits=w */
-#include <assert.h>
-#include <err.h>
+#include "assert.h"
#include <stdlib.h>
#include "integer.h"
#include "tag.h"
@@ -74,8 +73,9 @@ sw * sw_init_cast (sw *s, const s_tag *tag)
default:
break;
}
- warnx("sw_cast: cannot cast %s to sw",
- tag_type_to_string(tag->type));
+ err_write_1("sw_cast: cannot cast ");
+ err_write_1(tag_type_to_string(tag->type));
+ err_puts(" to sw");
assert(! "sw_cast: cannot cast to sw");
return NULL;
}
diff --git a/libc3/tag.c b/libc3/tag.c
index dfc996f..5f84e29 100644
--- a/libc3/tag.c
+++ b/libc3/tag.c
@@ -10,7 +10,7 @@
* AUTHOR BE CONSIDERED LIABLE FOR THE USE AND PERFORMANCE OF
* THIS SOFTWARE.
*/
-#include <assert.h>
+#include "assert.h"
#include <err.h>
#include <math.h>
#include <stdlib.h>
@@ -587,71 +587,6 @@ bool * tag_lte (const s_tag *a, const s_tag *b, bool *dest)
return dest;
}
-s_tag * tag_neg (const s_tag *tag, s_tag *result)
-{
- s_integer tmp;
- switch (tag->type) {
- case TAG_BOOL:
- return tag_init_s8(result, tag->data.bool ? -1 : 0);
- case TAG_CHARACTER:
- return tag_init_s64(result, -tag->data.character);
- case TAG_INTEGER:
- result->type = TAG_INTEGER;
- integer_neg(&tag->data.integer, &result->data.integer);
- return result;
- case TAG_RATIO:
- result->type = TAG_RATIO;
- ratio_neg(&tag->data.ratio, &result->data.ratio);
- return result;
- case TAG_SW:
- if (tag->data.sw == SW_MIN) {
- integer_init_sw(&tmp, tag->data.sw);
- result->type = TAG_INTEGER;
- integer_neg(&tmp, &result->data.integer);
- integer_clean(&tmp);
- return result;
- }
- return tag_init_sw(result, -tag->data.sw);
- case TAG_S64:
- if (tag->data.s64 == S64_MIN) {
- integer_init_s64(&tmp, tag->data.s64);
- result->type = TAG_INTEGER;
- integer_neg(&tmp, &result->data.integer);
- integer_clean(&tmp);
- return result;
- }
- return tag_init_s64(result, -tag->data.s64);
- case TAG_S32:
- return tag_init_s64(result, - (s64) tag->data.s32);
- case TAG_S16:
- return tag_init_s32(result, - (s32) tag->data.s16);
- case TAG_S8:
- return tag_init_s16(result, - (s16) tag->data.s8);
- case TAG_U8:
- return tag_init_s16(result, - (s16) tag->data.u8);
- case TAG_U16:
- return tag_init_s32(result, - (s32) tag->data.u16);
- case TAG_U32:
- return tag_init_s64(result, - (s64) tag->data.u32);
- case TAG_U64:
- integer_init_u64(&tmp, tag->data.u64);
- result->type = TAG_INTEGER;
- integer_neg(&tmp, &result->data.integer);
- integer_clean(&tmp);
- return result;
- case TAG_UW:
- integer_init_uw(&tmp, tag->data.uw);
- result->type = TAG_INTEGER;
- integer_neg(&tmp, &result->data.integer);
- integer_clean(&tmp);
- return result;
- default:
- warnx("tag_neg: invalid tag type: %s",
- tag_type_to_string(tag->type));
- }
- return NULL;
-}
-
s_tag * tag_new (void)
{
s_tag *tag;
@@ -1098,43 +1033,6 @@ bool tag_to_pointer (s_tag *tag, const s_sym *type, void **dest)
return false;
}
-f32 tag_to_f32(const s_tag *tag)
-{
- assert(tag);
- assert(tag->type == TAG_F32);
- return tag->data.f32;
-}
-
-f64 tag_to_f64(const s_tag *tag)
-{
- assert(tag);
- assert(tag->type == TAG_F64);
- return tag->data.f64;
-}
-
-s_integer tag_to_integer(const s_tag *tag)
-{
- assert(tag);
- assert(tag->type == TAG_INTEGER);
- return tag->data.integer;
-}
-
-/*
-s_tag * tag_tuple (s_tag *tag, uw count)
-{
- assert(tag);
- tag_clean(tag);
- return tag_init_tuple(tag, count);
-}
-
-s_tag * tag_tuple_2 (s_tag *tag, const s_tag *a, const s_tag *b)
-{
- assert(tag);
- tag_clean(tag);
- return tag_init_tuple_2(tag, a, b);
-}
-*/
-
const s_sym ** tag_type (const s_tag *tag, const s_sym **dest)
{
assert(tag);
diff --git a/libc3/tag.h b/libc3/tag.h
index 21face3..f1efc0a 100644
--- a/libc3/tag.h
+++ b/libc3/tag.h
@@ -52,9 +52,6 @@ bool tag_is_zero(const s_tag *tag);
s8 tag_number_compare (const s_tag *a, const s_tag *b);
uw * tag_size (const s_tag *tag, uw *dest);
ffi_type tag_to_ffi_type(const s_tag *tag);
-f32 tag_to_f32(const s_tag *tag);
-f64 tag_to_f64(const s_tag *tag);
-s_integer tag_to_integer(const s_tag *tag);
const s_sym ** tag_type (const s_tag *tag, const s_sym **type);
/* Operators. */
@@ -99,6 +96,7 @@ bool * tag_or (const s_tag *a, const s_tag *b, bool *dest);
s_tag * tag_paren (const s_tag *tag, s_tag *dest);
s_tag * tag_shift_left (const s_tag *a, const s_tag *b, s_tag *dest);
s_tag * tag_shift_right (const s_tag *a, const s_tag *b, s_tag *dest);
+s_tag * tag_sqrt (const s_tag *tag, s_tag *dest);
s_tag * tag_sub (const s_tag *a, const s_tag *b, s_tag *dest);
#endif /* LIBC3_TAG_H */
diff --git a/libc3/tag_add.c b/libc3/tag_add.c
index 9bb8639..4449bd1 100644
--- a/libc3/tag_add.c
+++ b/libc3/tag_add.c
@@ -1216,9 +1216,10 @@ s_tag * tag_add (const s_tag *a, const s_tag *b, s_tag *dest)
goto ko;
}
ko:
- err_write_1("tag_add: cannot add ");
+ err_write_1("tag_add: invalid tag type: ");
err_write_1(tag_type_to_string(a->type));
- err_write_1(" to ");
+ err_write_1(" + ");
err_puts(tag_type_to_string(b->type));
+ assert(! "tag_add: invalid tag type");
return NULL;
}
diff --git a/libc3/tag_band.c b/libc3/tag_band.c
index 53275f0..6f51a6b 100644
--- a/libc3/tag_band.c
+++ b/libc3/tag_band.c
@@ -10,8 +10,7 @@
* AUTHOR BE CONSIDERED LIABLE FOR THE USE AND PERFORMANCE OF
* THIS SOFTWARE.
*/
-#include <assert.h>
-#include <err.h>
+#include "assert.h"
#include "integer.h"
#include "tag.h"
@@ -472,8 +471,10 @@ s_tag * tag_band (const s_tag *a, const s_tag *b, s_tag *result)
goto error;
}
error:
- warnx("tag_band: invalid tag type: %s & %s",
- tag_type_to_string(a->type),
- tag_type_to_string(b->type));
+ err_write_1("tag_band: invalid tag type: ");
+ err_write_1(tag_type_to_string(a->type));
+ err_write_1(" & ");
+ err_puts(tag_type_to_string(b->type));
+ assert(! "tag_band: invalid tag type");
return NULL;
}
diff --git a/libc3/tag_bor.c b/libc3/tag_bor.c
index 34ef693..fc50685 100644
--- a/libc3/tag_bor.c
+++ b/libc3/tag_bor.c
@@ -10,8 +10,7 @@
* AUTHOR BE CONSIDERED LIABLE FOR THE USE AND PERFORMANCE OF
* THIS SOFTWARE.
*/
-#include <assert.h>
-#include <err.h>
+#include "assert.h"
#include "integer.h"
#include "tag.h"
@@ -564,8 +563,10 @@ s_tag * tag_bor (const s_tag *a, const s_tag *b, s_tag *result)
goto error;
}
error:
- warnx("tag_bor: invalid tag type: %s | %s",
- tag_type_to_string(a->type),
- tag_type_to_string(b->type));
+ err_write_1("tag_bor: invalid tag type: ");
+ err_write_1(tag_type_to_string(a->type));
+ err_write_1(" | ");
+ err_write_1(tag_type_to_string(b->type));
+ assert(! "tag_bor: invalid tag type");
return NULL;
}
diff --git a/libc3/tag_bxor.c b/libc3/tag_bxor.c
index 0a332f3..ffd8e99 100644
--- a/libc3/tag_bxor.c
+++ b/libc3/tag_bxor.c
@@ -10,8 +10,7 @@
* AUTHOR BE CONSIDERED LIABLE FOR THE USE AND PERFORMANCE OF
* THIS SOFTWARE.
*/
-#include <assert.h>
-#include <err.h>
+#include "assert.h"
#include "integer.h"
#include "tag.h"
@@ -564,8 +563,10 @@ s_tag * tag_bxor (const s_tag *a, const s_tag *b, s_tag *result)
goto error;
}
error:
- warnx("tag_bxor: invalid tag type: %s ^ %s",
- tag_type_to_string(a->type),
- tag_type_to_string(b->type));
+ err_write_1("tag_bxor: invalid tag type: ");
+ err_write_1(tag_type_to_string(a->type));
+ err_write_1(" ^ ");
+ err_puts(tag_type_to_string(b->type));
+ assert(! "tag_bxor: invalid tag type");
return NULL;
}
diff --git a/libc3/tag_div.c b/libc3/tag_div.c
index c52d5b7..5d8dda9 100644
--- a/libc3/tag_div.c
+++ b/libc3/tag_div.c
@@ -10,8 +10,7 @@
* AUTHOR BE CONSIDERED LIABLE FOR THE USE AND PERFORMANCE OF
* THIS SOFTWARE.
*/
-#include <assert.h>
-#include <err.h>
+#include "assert.h"
#include <math.h>
#include "integer.h"
#include "tag.h"
@@ -451,9 +450,10 @@ s_tag * tag_div (const s_tag *a, const s_tag *b, s_tag *dest)
goto ko;
}
ko:
+ err_write_1("tag_div: invalid tag type: ");
+ err_write_1(tag_type_to_string(a->type));
+ err_write_1(" / ");
+ err_puts(tag_type_to_string(b->type));
assert(! "tag_div: invalid tag type");
- warnx("tag_div: invalid tag type: %s / %s",
- tag_type_to_string(a->type),
- tag_type_to_string(b->type));
return NULL;
}
diff --git a/libc3/tag_init.c b/libc3/tag_init.c
index fd66848..39763c6 100644
--- a/libc3/tag_init.c
+++ b/libc3/tag_init.c
@@ -10,8 +10,7 @@
* AUTHOR BE CONSIDERED LIABLE FOR THE USE AND PERFORMANCE OF
* THIS SOFTWARE.
*/
-#include <assert.h>
-#include <err.h>
+#include "assert.h"
#include <string.h>
#include "array.h"
#include "buf.h"
@@ -520,8 +519,10 @@ s_tag * tag_new_array (const s_sym *type, uw dimension,
const uw *dimensions)
{
s_tag *tag;
- if (! (tag = calloc(1, sizeof(s_tag)))) {
- warn("tag_new_array: calloc");
+ tag = calloc(1, sizeof(s_tag));
+ if (! tag) {
+ err_puts("tag_new_array: failed to allocate memory");
+ assert(! "tag_new_array: failed to allocate memory");
return NULL;
}
tag->type = TAG_ARRAY;
@@ -535,8 +536,10 @@ s_tag * tag_new_array (const s_sym *type, uw dimension,
s_tag * tag_new_array_copy (const s_array *a)
{
s_tag *tag;
- if (! (tag = calloc(1, sizeof(s_tag)))) {
- warn("tag_new_array_copy: calloc");
+ tag = calloc(1, sizeof(s_tag));
+ if (! tag) {
+ err_puts("tag_new_array_copy: failed to allocate memory");
+ assert(! "tag_new_array_copy: failed to allocate memory");
return NULL;
}
tag->type = TAG_ARRAY;
@@ -550,8 +553,10 @@ s_tag * tag_new_array_copy (const s_array *a)
s_tag * tag_new_bool (bool b)
{
s_tag *tag;
- if (! (tag = calloc(1, sizeof(s_tag)))) {
- warn("tag_new_bool: calloc");
+ tag = calloc(1, sizeof(s_tag));
+ if (! tag) {
+ err_puts("tag_new_bool: failed to allocate memory");
+ assert(! "tag_new_bool: failed to allocate memory");
return NULL;
}
tag->type = TAG_BOOL;
@@ -562,8 +567,10 @@ s_tag * tag_new_bool (bool b)
s_tag * tag_new_call (void)
{
s_tag *tag;
- if (! (tag = calloc(1, sizeof(s_tag)))) {
- warn("tag_new_call: calloc");
+ tag = calloc(1, sizeof(s_tag));
+ if (! tag) {
+ err_puts("tag_new_call: failed to allocate memory");
+ assert(! "tag_new_call: failed to allocate memory");
return NULL;
}
tag->type = TAG_CALL;
@@ -577,8 +584,10 @@ s_tag * tag_new_call (void)
s_tag * tag_new_character (character c)
{
s_tag *tag;
- if (! (tag = calloc(1, sizeof(s_tag)))) {
- warn("tag_new_character: calloc");
+ tag = calloc(1, sizeof(s_tag));
+ if (! tag) {
+ err_puts("tag_new_character: failed to allocate memory");
+ assert(! "tag_new_character: failed to allocate memory");
return NULL;
}
tag->type = TAG_CHARACTER;
@@ -589,8 +598,10 @@ s_tag * tag_new_character (character c)
s_tag * tag_new_f32 (f32 f)
{
s_tag *tag;
- if (! (tag = calloc(1, sizeof(s_tag)))) {
- warn("tag_new_f32: calloc");
+ tag = calloc(1, sizeof(s_tag));
+ if (! tag) {
+ err_puts("tag_new_f32: failed to allocate memory");
+ assert(! "tag_new_f32: failed to allocate memory");
return NULL;
}
tag->type = TAG_F32;
@@ -601,8 +612,10 @@ s_tag * tag_new_f32 (f32 f)
s_tag * tag_new_f64 (f64 f)
{
s_tag *tag;
- if (! (tag = calloc(1, sizeof(s_tag)))) {
- warn("tag_new_f64: calloc");
+ tag = calloc(1, sizeof(s_tag));
+ if (! tag) {
+ err_puts("tag_new_f64: failed to allocate memory");
+ assert(! "tag_new_f64: failed to allocate memory");
return NULL;
}
tag->type = TAG_F64;
@@ -613,8 +626,10 @@ s_tag * tag_new_f64 (f64 f)
s_tag * tag_new_f128 (f128 f)
{
s_tag *tag;
- if (! (tag = calloc(1, sizeof(s_tag)))) {
- warn("tag_new_f128: calloc");
+ tag = calloc(1, sizeof(s_tag));
+ if (! tag) {
+ err_puts("tag_new_f128: failed to allocate memory");
+ assert(! "tag_new_f128: failed to allocate memory");
return NULL;
}
tag->type = TAG_F128;
@@ -625,8 +640,10 @@ s_tag * tag_new_f128 (f128 f)
s_tag * tag_new_ident (const s_ident *ident)
{
s_tag *tag;
- if (! (tag = calloc(1, sizeof(s_tag)))) {
- warn("tag_new_ident: calloc");
+ tag = calloc(1, sizeof(s_tag));
+ if (! tag) {
+ err_puts("tag_new_ident: failed to allocate memory");
+ assert(! "tag_new_ident: failed to allocate memory");
return NULL;
}
tag->type = TAG_IDENT;
@@ -637,8 +654,10 @@ s_tag * tag_new_ident (const s_ident *ident)
s_tag * tag_new_ident_1 (const char *p)
{
s_tag *tag;
- if (! (tag = calloc(1, sizeof(s_tag)))) {
- warn("tag_new_ident_1: calloc");
+ tag = calloc(1, sizeof(s_tag));
+ if (! tag) {
+ err_puts("tag_new_ident_1: failed to allocate memory");
+ assert(! "tag_new_ident_1: failed to allocate memory");
return NULL;
}
tag->type = TAG_IDENT;
@@ -652,8 +671,10 @@ s_tag * tag_new_ident_1 (const char *p)
s_tag * tag_new_integer_1 (const char *p)
{
s_tag *tag;
- if (! (tag = calloc(1, sizeof(s_tag)))) {
- warn("tag_new_integer_1: calloc");
+ tag = calloc(1, sizeof(s_tag));
+ if (! tag) {
+ err_puts("tag_new_integer_1: failed to allocate memory");
+ assert(! "tag_new_integer_1: failed to allocate memory");
return NULL;
}
tag->type = TAG_INTEGER;
@@ -667,8 +688,10 @@ s_tag * tag_new_integer_1 (const char *p)
s_tag * tag_new_integer_copy (const s_integer *i)
{
s_tag *tag;
- if (! (tag = calloc(1, sizeof(s_tag)))) {
- warn("tag_new_integer_copy: calloc");
+ tag = calloc(1, sizeof(s_tag));
+ if (! tag) {
+ err_puts("tag_new_integer_copy: failed to allocate memory");
+ assert(! "tag_new_integer_copy: failed to allocate memory");
return NULL;
}
tag->type = TAG_INTEGER;
@@ -682,8 +705,10 @@ s_tag * tag_new_integer_copy (const s_integer *i)
s_tag * tag_new_integer_zero (void)
{
s_tag *tag;
- if (! (tag = calloc(1, sizeof(s_tag)))) {
- warn("tag_new_integer_zero: calloc");
+ tag = calloc(1, sizeof(s_tag));
+ if (! tag) {
+ err_puts("tag_new_integer_zero: failed to allocate memory");
+ assert(! "tag_new_integer_zero: failed to allocate memory");
return NULL;
}
tag->type = TAG_INTEGER;
@@ -697,8 +722,10 @@ s_tag * tag_new_integer_zero (void)
s_tag * tag_new_list (s_list *list)
{
s_tag *tag;
- if (! (tag = calloc(1, sizeof(s_tag)))) {
- warn("tag_new_list: calloc");
+ tag = calloc(1, sizeof(s_tag));
+ if (! tag) {
+ err_puts("tag_new_list: failed to allocate memory");
+ assert(! "tag_new_list: failed to allocate memory");
return NULL;
}
tag->type = TAG_LIST;
@@ -709,8 +736,10 @@ s_tag * tag_new_list (s_list *list)
s_tag * tag_new_map (uw count)
{
s_tag *tag;
- if (! (tag = calloc(1, sizeof(s_tag)))) {
- warn("tag_new_map: calloc");
+ tag = calloc(1, sizeof(s_tag));
+ if (! tag) {
+ err_puts("tag_new_map: failed to allocate memory");
+ assert(! "tag_new_map: failed to allocate memory");
return NULL;
}
tag->type = TAG_MAP;
@@ -724,8 +753,10 @@ s_tag * tag_new_map (uw count)
s_tag * tag_new_map_1 (const char *p)
{
s_tag *tag;
- if (! (tag = calloc(1, sizeof(s_tag)))) {
- warn("tag_new_map_1: calloc");
+ tag = calloc(1, sizeof(s_tag));
+ if (! tag) {
+ err_puts("tag_new_map_1: failed to allocate memory");
+ assert(! "tag_new_map_1: failed to allocate memory");
return NULL;
}
tag->type = TAG_MAP;
@@ -739,8 +770,10 @@ s_tag * tag_new_map_1 (const char *p)
s_tag * tag_new_ptr (void *p)
{
s_tag *tag;
- if (! (tag = calloc(1, sizeof(s_tag)))) {
- warn("tag_new_ptr: calloc");
+ tag = calloc(1, sizeof(s_tag));
+ if (! tag) {
+ err_puts("tag_new_ptr: failed to allocate memory");
+ assert(! "tag_new_ptr: failed to allocate memory");
return NULL;
}
tag->type = TAG_PTR;
@@ -754,8 +787,10 @@ s_tag * tag_new_ptr (void *p)
s_tag * tag_new_ptr_free (void *p)
{
s_tag *tag;
- if (! (tag = calloc(1, sizeof(s_tag)))) {
- warn("tag_new_ptr_free: calloc");
+ tag = calloc(1, sizeof(s_tag));
+ if (! tag) {
+ err_puts("tag_new_ptr_free: failed to allocate memory");
+ assert(! "tag_new_ptr_free: failed to allocate memory");
return NULL;
}
tag->type = TAG_PTR_FREE;
@@ -769,8 +804,10 @@ s_tag * tag_new_ptr_free (void *p)
s_tag * tag_new_quote_copy (const s_quote *quote)
{
s_tag *tag;
- if (! (tag = calloc(1, sizeof(s_tag)))) {
- warn("tag_new_quote_copy: calloc");
+ tag = calloc(1, sizeof(s_tag));
+ if (! tag) {
+ err_puts("tag_new_quote_copy: failed to allocate memory");
+ assert(! "tag_new_quote_copy: failed to allocate memory");
return NULL;
}
tag->type = TAG_QUOTE;
@@ -784,8 +821,10 @@ s_tag * tag_new_quote_copy (const s_quote *quote)
s_tag * tag_new_ratio_1 (const char *p)
{
s_tag *tag;
- if (! (tag = calloc(1, sizeof(s_tag)))) {
- warn("tag_new_ratio_1: calloc");
+ tag = calloc(1, sizeof(s_tag));
+ if (! tag) {
+ err_puts("tag_new_ratio_1: failed to allocate memory");
+ assert(! "tag_new_ratio_1: failed to allocate memory");
return NULL;
}
tag->type = TAG_RATIO;
@@ -799,8 +838,10 @@ s_tag * tag_new_ratio_1 (const char *p)
s_tag * tag_new_ratio (void)
{
s_tag *tag;
- if (! (tag = calloc(1, sizeof(s_tag)))) {
- warn("tag_new_ratio: calloc");
+ tag = calloc(1, sizeof(s_tag));
+ if (! tag) {
+ err_puts("tag_new_ratio: failed to allocate memory");
+ assert(! "tag_new_ratio: failed to allocate memory");
return NULL;
}
tag->type = TAG_RATIO;
@@ -814,8 +855,10 @@ s_tag * tag_new_ratio (void)
s_tag * tag_new_ratio_copy (const s_ratio *r)
{
s_tag *tag;
- if (! (tag = calloc(1, sizeof(s_tag)))) {
- warn("tag_new_ratio_copy: calloc");
+ tag = calloc(1, sizeof(s_tag));
+ if (! tag) {
+ err_puts("tag_new_ratio_copy: failed to allocate memory");
+ assert(! "tag_new_ratio_copy: failed to allocate memory");
return NULL;
}
tag->type = TAG_RATIO;
@@ -829,8 +872,10 @@ s_tag * tag_new_ratio_copy (const s_ratio *r)
s_tag * tag_new_ratio_zero (void)
{
s_tag *tag;
- if (! (tag = calloc(1, sizeof(s_tag)))) {
- warn("tag_new_ratio_zero: calloc");
+ tag = calloc(1, sizeof(s_tag));
+ if (! tag) {
+ err_puts("tag_new_ratio_zero: failed to allocate memory");
+ assert(! "tag_new_ratio_zero: failed to allocate memory");
return NULL;
}
tag->type = TAG_RATIO;
@@ -844,8 +889,10 @@ s_tag * tag_new_ratio_zero (void)
s_tag * tag_new_s8 (s8 i)
{
s_tag *tag;
- if (! (tag = calloc(1, sizeof(s_tag)))) {
- warn("tag_new_s8: calloc");
+ tag = calloc(1, sizeof(s_tag));
+ if (! tag) {
+ err_puts("tag_new_s8: failed to allocate memory");
+ assert(! "tag_new_s8: failed to allocate memory");
return NULL;
}
tag->type = TAG_S8;
@@ -856,8 +903,10 @@ s_tag * tag_new_s8 (s8 i)
s_tag * tag_new_s16 (s16 i)
{
s_tag *tag;
- if (! (tag = calloc(1, sizeof(s_tag)))) {
- warn("tag_new_s16: calloc");
+ tag = calloc(1, sizeof(s_tag));
+ if (! tag) {
+ err_puts("tag_new_s16: failed to allocate memory");
+ assert(! "tag_new_s16: failed to allocate memory");
return NULL;
}
tag->type = TAG_S16;
@@ -868,8 +917,10 @@ s_tag * tag_new_s16 (s16 i)
s_tag * tag_new_s32 (s32 i)
{
s_tag *tag;
- if (! (tag = calloc(1, sizeof(s_tag)))) {
- warn("tag_new_s32: calloc");
+ tag = calloc(1, sizeof(s_tag));
+ if (! tag) {
+ err_puts("tag_new_s32: failed to allocate memory");
+ assert(! "tag_new_s32: failed to allocate memory");
return NULL;
}
tag->type = TAG_S32;
@@ -880,8 +931,10 @@ s_tag * tag_new_s32 (s32 i)
s_tag * tag_new_s64 (s64 i)
{
s_tag *tag;
- if (! (tag = calloc(1, sizeof(s_tag)))) {
- warn("tag_new_s64: calloc");
+ tag = calloc(1, sizeof(s_tag));
+ if (! tag) {
+ err_puts("tag_new_s64: failed to allocate memory");
+ assert(! "tag_new_s64: failed to allocate memory");
return NULL;
}
tag->type = TAG_S64;
@@ -892,8 +945,10 @@ s_tag * tag_new_s64 (s64 i)
s_tag * tag_new_str (char *p_free, uw size, const char *p)
{
s_tag *tag;
- if (! (tag = calloc(1, sizeof(s_tag)))) {
- warn("tag_new_str: calloc");
+ tag = calloc(1, sizeof(s_tag));
+ if (! tag) {
+ err_puts("tag_new_str: failed to allocate memory");
+ assert(! "tag_new_str: failed to allocate memory");
return NULL;
}
tag->type = TAG_STR;
@@ -907,8 +962,10 @@ s_tag * tag_new_str (char *p_free, uw size, const char *p)
s_tag * tag_new_str_1 (char *p_free, const char *p)
{
s_tag *tag;
- if (! (tag = calloc(1, sizeof(s_tag)))) {
- warn("tag_new_str_1: calloc");
+ tag = calloc(1, sizeof(s_tag));
+ if (! tag) {
+ err_puts("tag_new_str_1: failed to allocate memory");
+ assert(! "tag_new_str_1: failed to allocate memory");
return NULL;
}
tag->type = TAG_STR;
@@ -922,8 +979,10 @@ s_tag * tag_new_str_1 (char *p_free, const char *p)
s_tag * tag_new_str_cat (const s_str *a, const s_str *b)
{
s_tag *tag;
- if (! (tag = calloc(1, sizeof(s_tag)))) {
- warn("tag_new_str_cat: calloc");
+ tag = calloc(1, sizeof(s_tag));
+ if (! tag) {
+ err_puts("tag_new_str_cat: failed to allocate memory");
+ assert(! "tag_new_str_cat: failed to allocate memory");
return NULL;
}
tag->type = TAG_STR;
@@ -937,8 +996,10 @@ s_tag * tag_new_str_cat (const s_str *a, const s_str *b)
s_tag * tag_new_str_empty (void)
{
s_tag *tag;
- if (! (tag = calloc(1, sizeof(s_tag)))) {
- warn("tag_new_str_empty: calloc");
+ tag = calloc(1, sizeof(s_tag));
+ if (! tag) {
+ err_puts("tag_new_str_empty: failed to allocate memory");
+ assert(! "tag_new_str_empty: failed to allocate memory");
return NULL;
}
tag->type = TAG_STR;
@@ -952,8 +1013,10 @@ s_tag * tag_new_str_empty (void)
s_tag * tag_new_struct (const s_sym *module)
{
s_tag *tag;
- if (! (tag = calloc(1, sizeof(s_tag)))) {
- warn("tag_new_struct: calloc");
+ tag = calloc(1, sizeof(s_tag));
+ if (! tag) {
+ err_puts("tag_new_struct: failed to allocate memory");
+ assert(! "tag_new_struct: failed to allocate memory");
return NULL;
}
tag->type = TAG_STRUCT;
@@ -968,8 +1031,10 @@ s_tag * tag_new_struct_with_data (const s_sym *module, bool free_data,
void *data)
{
s_tag *tag;
- if (! (tag = calloc(1, sizeof(s_tag)))) {
- warn("tag_new_struct_with_data: calloc");
+ tag = calloc(1, sizeof(s_tag));
+ if (! tag) {
+ err_puts("tag_new_struct_with_data: failed to allocate memory");
+ assert(! "tag_new_struct_with_data: failed to allocate memory");
return NULL;
}
tag->type = TAG_STRUCT;
@@ -984,8 +1049,10 @@ s_tag * tag_new_struct_with_data (const s_sym *module, bool free_data,
s_tag * tag_new_sw (sw i)
{
s_tag *tag;
- if (! (tag = calloc(1, sizeof(s_tag)))) {
- warn("tag_new_sw: calloc");
+ tag = calloc(1, sizeof(s_tag));
+ if (! tag) {
+ err_puts("tag_new_sw: failed to allocate memory");
+ assert(! "tag_new_sw: failed to allocate memory");
return NULL;
}
tag->type = TAG_SW;
@@ -996,8 +1063,10 @@ s_tag * tag_new_sw (sw i)
s_tag * tag_new_sym (const s_sym *sym)
{
s_tag *tag;
- if (! (tag = calloc(1, sizeof(s_tag)))) {
- warn("tag_new_sym: calloc");
+ tag = calloc(1, sizeof(s_tag));
+ if (! tag) {
+ err_puts("tag_new_sym: failed to allocate memory");
+ assert(! "tag_new_sym: failed to allocate memory");
return NULL;
}
tag->type = TAG_SYM;
@@ -1008,8 +1077,10 @@ s_tag * tag_new_sym (const s_sym *sym)
s_tag * tag_new_tuple (uw count)
{
s_tag *tag;
- if (! (tag = calloc(1, sizeof(s_tag)))) {
- warn("tag_new_tuple: calloc");
+ tag = calloc(1, sizeof(s_tag));
+ if (! tag) {
+ err_puts("tag_new_tuple: failed to allocate memory");
+ assert(! "tag_new_tuple: failed to allocate memory");
return NULL;
}
tag->type = TAG_TUPLE;
@@ -1023,8 +1094,10 @@ s_tag * tag_new_tuple (uw count)
s_tag * tag_new_tuple_2 (const s_tag *a, const s_tag *b)
{
s_tag *tag;
- if (! (tag = calloc(1, sizeof(s_tag)))) {
- warn("tag_new_tuple_2: calloc");
+ tag = calloc(1, sizeof(s_tag));
+ if (! tag) {
+ err_puts("tag_new_tuple_2: failed to allocate memory");
+ assert(! "tag_new_tuple_2: failed to allocate memory");
return NULL;
}
tag->type = TAG_TUPLE;
@@ -1038,8 +1111,10 @@ s_tag * tag_new_tuple_2 (const s_tag *a, const s_tag *b)
s_tag * tag_new_u8 (u8 i)
{
s_tag *tag;
- if (! (tag = calloc(1, sizeof(s_tag)))) {
- warn("tag_new_u8: calloc");
+ tag = calloc(1, sizeof(s_tag));
+ if (! tag) {
+ err_puts("tag_new_u8: failed to allocate memory");
+ assert(! "tag_new_u8: failed to allocate memory");
return NULL;
}
tag->type = TAG_U8;
@@ -1050,8 +1125,10 @@ s_tag * tag_new_u8 (u8 i)
s_tag * tag_new_u16 (u16 i)
{
s_tag *tag;
- if (! (tag = calloc(1, sizeof(s_tag)))) {
- warn("tag_new_u16: calloc");
+ tag = calloc(1, sizeof(s_tag));
+ if (! tag) {
+ err_puts("tag_new_u16: failed to allocate memory");
+ assert(! "tag_new_u16: failed to allocate memory");
return NULL;
}
tag->type = TAG_U16;
@@ -1062,8 +1139,10 @@ s_tag * tag_new_u16 (u16 i)
s_tag * tag_new_u32 (u32 i)
{
s_tag *tag;
- if (! (tag = calloc(1, sizeof(s_tag)))) {
- warn("tag_new_u32: calloc");
+ tag = calloc(1, sizeof(s_tag));
+ if (! tag) {
+ err_puts("tag_new_u32: failed to allocate memory");
+ assert(! "tag_new_u32: failed to allocate memory");
return NULL;
}
tag->type = TAG_U32;
@@ -1074,8 +1153,10 @@ s_tag * tag_new_u32 (u32 i)
s_tag * tag_new_u64 (u64 i)
{
s_tag *tag;
- if (! (tag = calloc(1, sizeof(s_tag)))) {
- warn("tag_new_u64: calloc");
+ tag = calloc(1, sizeof(s_tag));
+ if (! tag) {
+ err_puts("tag_new_u64: failed to allocate memory");
+ assert(! "tag_new_u64: failed to allocate memory");
return NULL;
}
tag->type = TAG_U64;
@@ -1086,8 +1167,10 @@ s_tag * tag_new_u64 (u64 i)
s_tag * tag_new_unquote_copy (const s_unquote *unquote)
{
s_tag *tag;
- if (! (tag = calloc(1, sizeof(s_tag)))) {
- warn("tag_new_unquote_copy: calloc");
+ tag = calloc(1, sizeof(s_tag));
+ if (! tag) {
+ err_puts("tag_new_unquote_copy: failed to allocate memory");
+ assert(! "tag_new_unquote_copy: failed to allocate memory");
return NULL;
}
tag->type = TAG_UNQUOTE;
@@ -1101,8 +1184,10 @@ s_tag * tag_new_unquote_copy (const s_unquote *unquote)
s_tag * tag_new_uw (uw i)
{
s_tag *tag;
- if (! (tag = calloc(1, sizeof(s_tag)))) {
- warn("tag_new_uw: calloc");
+ tag = calloc(1, sizeof(s_tag));
+ if (! tag) {
+ err_puts("tag_new_uw: failed to allocate memory");
+ assert(! "tag_new_uw: failed to allocate memory");
return NULL;
}
tag->type = TAG_UW;
@@ -1113,8 +1198,10 @@ s_tag * tag_new_uw (uw i)
s_tag * tag_new_var (void)
{
s_tag *tag;
- if (! (tag = calloc(1, sizeof(s_tag)))) {
- warn("tag_new_var: calloc");
+ tag = calloc(1, sizeof(s_tag));
+ if (! tag) {
+ err_puts("tag_new_var: failed to allocate memory");
+ assert(! "tag_new_var: failed to allocate memory");
return NULL;
}
tag->type = TAG_VAR;
@@ -1124,8 +1211,10 @@ s_tag * tag_new_var (void)
s_tag * tag_new_void (void)
{
s_tag *tag;
- if (! (tag = calloc(1, sizeof(s_tag)))) {
- warn("tag_new_void: calloc");
+ tag = calloc(1, sizeof(s_tag));
+ if (! tag) {
+ err_puts("tag_new_void: failed to allocate memory");
+ assert(! "tag_new_void: failed to allocate memory");
return NULL;
}
tag->type = TAG_VOID;
diff --git a/libc3/tag_init.rb b/libc3/tag_init.rb
index 6cefaff..6228794 100644
--- a/libc3/tag_init.rb
+++ b/libc3/tag_init.rb
@@ -167,8 +167,10 @@ EOF
#{tag_new_proto[0..-2]}
{
s_tag *tag;
- if (! (tag = calloc(1, sizeof(s_tag)))) {
- warn("tag_new_#{name_suffix}: calloc");
+ tag = calloc(1, sizeof(s_tag));
+ if (! tag) {
+ err_puts("tag_new_#{name_suffix}: failed to allocate memory");
+ assert(! "tag_new_#{name_suffix}: failed to allocate memory");
return NULL;
}
#{tag_type ? "tag->type = #{tag_type};\n" : ""}#{def_tag_new_init} return tag;
@@ -504,8 +506,7 @@ inits = TagInitList.all
tag_init_c = FileUpdate.new("tag_init.c")
tag_init_c.content = <<EOF
#{$license}
-#include <assert.h>
-#include <err.h>
+#include "assert.h"
#include <string.h>
#include "array.h"
#include "buf.h"
@@ -558,8 +559,7 @@ tag_init_h.commit
list_init_c = FileUpdate.new("list_init.c")
list_init_c.content = <<EOF
#{$license}
-#include <assert.h>
-#include <err.h>
+#include "assert.h"
#include <string.h>
#include "array.h"
#include "buf.h"
diff --git a/libc3/tag_mod.c b/libc3/tag_mod.c
index 768d516..407b4c2 100644
--- a/libc3/tag_mod.c
+++ b/libc3/tag_mod.c
@@ -10,8 +10,7 @@
* AUTHOR BE CONSIDERED LIABLE FOR THE USE AND PERFORMANCE OF
* THIS SOFTWARE.
*/
-#include <assert.h>
-#include <err.h>
+#include "assert.h"
#include <math.h>
#include "integer.h"
#include "tag.h"
@@ -781,7 +780,10 @@ s_tag * tag_mod (const s_tag *a, const s_tag *b, s_tag *dest)
goto ko;
}
ko:
- errx(1, "cannot divide %s by %s",
- tag_type_to_string(a->type),
- tag_type_to_string(b->type));
+ err_write_1("tag_mod: invalid tag type: ");
+ err_write_1(tag_type_to_string(a->type));
+ err_write_1(" mod ");
+ err_puts(tag_type_to_string(b->type));
+ assert(! "tag_mod: invalid tag type");
+ return NULL;
}
diff --git a/libc3/tag_mul.c b/libc3/tag_mul.c
index 0fa60ce..2097fc4 100644
--- a/libc3/tag_mul.c
+++ b/libc3/tag_mul.c
@@ -10,8 +10,7 @@
* AUTHOR BE CONSIDERED LIABLE FOR THE USE AND PERFORMANCE OF
* THIS SOFTWARE.
*/
-#include <assert.h>
-#include <err.h>
+#include "assert.h"
#include <math.h>
#include "integer.h"
#include "tag.h"
@@ -564,7 +563,10 @@ s_tag * tag_mul (const s_tag *a, const s_tag *b, s_tag *dest)
goto ko;
}
ko:
- errx(1, "cannot multiply %s by %s",
- tag_type_to_string(a->type),
- tag_type_to_string(b->type));
+ err_write_1("tag_mul: invalid tag type: ");
+ err_write_1(tag_type_to_string(a->type));
+ err_write_1(" * ");
+ err_puts(tag_type_to_string(b->type));
+ assert(! "tag_mul: invalid tag type");
+ return NULL;
}
diff --git a/libc3/tag_neg.c b/libc3/tag_neg.c
new file mode 100644
index 0000000..9e09e5c
--- /dev/null
+++ b/libc3/tag_neg.c
@@ -0,0 +1,77 @@
+/* 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 "integer.h"
+#include "ratio.h"
+#include "tag.h"
+
+s_tag * tag_neg (const s_tag *tag, s_tag *result)
+{
+ s_integer tmp;
+ switch (tag->type) {
+ case TAG_INTEGER:
+ result->type = TAG_INTEGER;
+ integer_neg(&tag->data.integer, &result->data.integer);
+ return result;
+ case TAG_RATIO:
+ result->type = TAG_RATIO;
+ ratio_neg(&tag->data.ratio, &result->data.ratio);
+ return result;
+ case TAG_SW:
+ if (tag->data.sw == SW_MIN) {
+ integer_init_sw(&tmp, tag->data.sw);
+ result->type = TAG_INTEGER;
+ integer_neg(&tmp, &result->data.integer);
+ integer_clean(&tmp);
+ return result;
+ }
+ return tag_init_sw(result, -tag->data.sw);
+ case TAG_S64:
+ if (tag->data.s64 == S64_MIN) {
+ integer_init_s64(&tmp, tag->data.s64);
+ result->type = TAG_INTEGER;
+ integer_neg(&tmp, &result->data.integer);
+ integer_clean(&tmp);
+ return result;
+ }
+ return tag_init_s64(result, -tag->data.s64);
+ case TAG_S32:
+ return tag_init_s64(result, - (s64) tag->data.s32);
+ case TAG_S16:
+ return tag_init_s32(result, - (s32) tag->data.s16);
+ case TAG_S8:
+ return tag_init_s16(result, - (s16) tag->data.s8);
+ case TAG_U8:
+ return tag_init_s16(result, - (s16) tag->data.u8);
+ case TAG_U16:
+ return tag_init_s32(result, - (s32) tag->data.u16);
+ case TAG_U32:
+ return tag_init_s64(result, - (s64) tag->data.u32);
+ case TAG_U64:
+ integer_init_u64(&tmp, tag->data.u64);
+ result->type = TAG_INTEGER;
+ integer_neg(&tmp, &result->data.integer);
+ integer_clean(&tmp);
+ return result;
+ case TAG_UW:
+ integer_init_uw(&tmp, tag->data.uw);
+ result->type = TAG_INTEGER;
+ integer_neg(&tmp, &result->data.integer);
+ integer_clean(&tmp);
+ return result;
+ default:
+ err_write_1("tag_neg: invalid tag type: ");
+ err_puts(tag_type_to_string(tag->type));
+ }
+ return NULL;
+}
diff --git a/libc3/tag_shift_left.c b/libc3/tag_shift_left.c
index 5c258fa..cee6ea8 100644
--- a/libc3/tag_shift_left.c
+++ b/libc3/tag_shift_left.c
@@ -10,8 +10,7 @@
* AUTHOR BE CONSIDERED LIABLE FOR THE USE AND PERFORMANCE OF
* THIS SOFTWARE.
*/
-#include <assert.h>
-#include <err.h>
+#include "assert.h"
#include "integer.h"
#include "tag.h"
@@ -544,8 +543,10 @@ s_tag * tag_shift_left (const s_tag *a, const s_tag *b, s_tag *result)
goto error;
}
error:
- warnx("tag_shift_left: invalid tag type: %s << %s",
- tag_type_to_string(a->type),
- tag_type_to_string(b->type));
+ err_write_1("tag_shift_left: invalid tag type: ");
+ err_write_1(tag_type_to_string(a->type));
+ err_write_1(" << ");
+ err_puts(tag_type_to_string(b->type));
+ assert(! "tag_shift_left: invalid tag type");
return NULL;
}
diff --git a/libc3/tag_shift_right.c b/libc3/tag_shift_right.c
index 818546e..0f98418 100644
--- a/libc3/tag_shift_right.c
+++ b/libc3/tag_shift_right.c
@@ -10,8 +10,7 @@
* AUTHOR BE CONSIDERED LIABLE FOR THE USE AND PERFORMANCE OF
* THIS SOFTWARE.
*/
-#include <assert.h>
-#include <err.h>
+#include "assert.h"
#include "integer.h"
#include "tag.h"
@@ -544,8 +543,10 @@ s_tag * tag_shift_right (const s_tag *a, const s_tag *b, s_tag *result)
goto error;
}
error:
- warnx("tag_shift_right: invalid tag type: %s >> %s",
- tag_type_to_string(a->type),
- tag_type_to_string(b->type));
+ err_write_1("tag_shift_right: invalid tag type: ");
+ err_write_1(tag_type_to_string(a->type));
+ err_write_1(" >> ");
+ err_puts(tag_type_to_string(b->type));
+ assert(! "tag_shift_right: invalid tag type");
return NULL;
}
diff --git a/libc3/tag_sqrt.c b/libc3/tag_sqrt.c
new file mode 100644
index 0000000..a6bdddf
--- /dev/null
+++ b/libc3/tag_sqrt.c
@@ -0,0 +1,57 @@
+/* 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 "integer.h"
+#include "ratio.h"
+#include "tag.h"
+
+s_tag * tag_sqrt (const s_tag *tag, s_tag *dest)
+{
+ s_complex c;
+ switch (tag->type) {
+ case TAG_INTEGER:
+ if (integer_is_negative(&tag->data.integer))
+
+ dest->type = TAG_INTEGER;
+ integer_sqrt(&tag->data.integer, &dest->data.integer);
+ return dest;
+ case TAG_RATIO:
+ dest->type = TAG_RATIO;
+ ratio_sqrt(&tag->data.ratio, &dest->data.ratio);
+ return dest;
+ case TAG_SW:
+ return tag_init_sw(dest, sw_sqrt(tag->data.sw));
+ case TAG_S64:
+ return tag_init_s64(dest, s64_sqrt(tag->data.s64));
+ case TAG_S32:
+ return tag_init_s32(dest, s32_sqrt(tag->data.s32);
+ case TAG_S16:
+ return tag_init_s16(dest, tag->data.s16);
+ case TAG_S8:
+ return tag_init_s8(dest, tag->data.s8);
+ case TAG_U8:
+ return tag_init_u8(dest, tag->data.u8);
+ case TAG_U16:
+ return tag_init_u16(dest, tag->data.u16);
+ case TAG_U32:
+ return tag_init_u32(dest, tag->data.u32);
+ case TAG_U64:
+ return tag_init_u64(dest, tag->data.u32);
+ case TAG_UW:
+ return tag_init_uw(dest, tag->data.u32);
+ default:
+ err_write_1("tag_neg: invalid tag type: ");
+ err_puts(tag_type_to_string(tag->type));
+ }
+ return NULL;
+}
diff --git a/libc3/tag_sub.c b/libc3/tag_sub.c
index 800a6a6..5057909 100644
--- a/libc3/tag_sub.c
+++ b/libc3/tag_sub.c
@@ -10,8 +10,7 @@
* AUTHOR BE CONSIDERED LIABLE FOR THE USE AND PERFORMANCE OF
* THIS SOFTWARE.
*/
-#include <assert.h>
-#include <err.h>
+#include "assert.h"
#include <math.h>
#include "integer.h"
#include "tag.h"
@@ -564,7 +563,9 @@ s_tag * tag_sub (const s_tag *a, const s_tag *b, s_tag *dest)
goto ko;
}
ko:
- errx(1, "cannot subtract %s by %s",
- tag_type_to_string(a->type),
- tag_type_to_string(b->type));
+ err_write_1("tag_sub: cannot subtract ");
+ err_write_1(tag_type_to_string(a->type));
+ err_write_1(" by ");
+ err_puts(tag_type_to_string(b->type));
+ return NULL;
}
diff --git a/libc3/type.c b/libc3/type.c
deleted file mode 100644
index 4508566..0000000
--- a/libc3/type.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/* 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 <string.h>
-#include "str.h"
-#include "type.h"
-
-const s_sym * type_pointer (const s_sym *type)
-{
- uw len;
- char *mem;
- s_str str;
- const s_sym *tmp;
- assert(type);
- len = type->str.size + 2;
- if (! (mem = malloc(len)))
- errx(1, "type_pointer: out of memory");
- memcpy(mem, type->str.ptr.pchar, type->str.size);
- memcpy(mem + type->str.size, "*", 2);
- str_init(&str, mem, len, mem);
- tmp = str_to_sym(&str);
- str_clean(&str);
- return tmp;
-}
diff --git a/libc3/type.h b/libc3/type.h
deleted file mode 100644
index 3fbca05..0000000
--- a/libc3/type.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/* 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.
- */
-/**
- * @file type.h
- * @brief C3 types.
- *
- * Structure to manipulate C3 type.
- */
-#ifndef LIBC3_TYPE_H
-#define LIBC3_TYPE_H
-
-#include "types.h"
-
-const s_sym * type_pointer (const s_sym *type);
-
-#endif /* LIBC3_TYPE_H */
diff --git a/libc3/types.h b/libc3/types.h
index c6cbba7..fceb0b8 100644
--- a/libc3/types.h
+++ b/libc3/types.h
@@ -96,6 +96,7 @@ typedef enum {
TAG_CALL,
TAG_CFN,
TAG_CHARACTER,
+ //TAG_COMPLEX,
TAG_F32,
TAG_F64,
TAG_F128,
@@ -435,6 +436,7 @@ union tag_data {
s_call call;
s_cfn cfn;
character character;
+ s_complex *complex;
f32 f32;
f64 f64;
f128 f128;
diff --git a/libc3/u.c.in b/libc3/u.c.in
index b7bfc27..8612000 100644
--- a/libc3/u.c.in
+++ b/libc3/u.c.in
@@ -12,7 +12,6 @@
*/
/* Gen from u.h.in BITS=_BITS$ bits=_bits$ */
#include "assert.h"
-#include <err.h>
#include <math.h>
#include <stdlib.h>
#include "integer.h"
@@ -74,8 +73,9 @@ u_bits$ * u_bits$_init_cast (u_bits$ *u, const s_tag *tag)
default:
break;
}
- warnx("u_bits$_cast: cannot cast %s to u_bits$",
- tag_type_to_string(tag->type));
+ err_write_1("u_bits$_cast: cannot cast ");
+ err_write_1(tag_type_to_string(tag->type));
+ err_puts(" to u_bits$");
assert(! "u_bits$_cast: cannot cast to u_bits$");
return NULL;
}
diff --git a/libc3/u16.c b/libc3/u16.c
index 2df4106..ea2a40a 100644
--- a/libc3/u16.c
+++ b/libc3/u16.c
@@ -12,7 +12,6 @@
*/
/* Gen from u.h.in BITS=16 bits=16 */
#include "assert.h"
-#include <err.h>
#include <math.h>
#include <stdlib.h>
#include "integer.h"
@@ -74,8 +73,9 @@ u16 * u16_init_cast (u16 *u, const s_tag *tag)
default:
break;
}
- warnx("u16_cast: cannot cast %s to u16",
- tag_type_to_string(tag->type));
+ err_write_1("u16_cast: cannot cast ");
+ err_write_1(tag_type_to_string(tag->type));
+ err_puts(" to u16");
assert(! "u16_cast: cannot cast to u16");
return NULL;
}
diff --git a/libc3/u32.c b/libc3/u32.c
index 86e5d78..a1208ea 100644
--- a/libc3/u32.c
+++ b/libc3/u32.c
@@ -12,7 +12,6 @@
*/
/* Gen from u.h.in BITS=32 bits=32 */
#include "assert.h"
-#include <err.h>
#include <math.h>
#include <stdlib.h>
#include "integer.h"
@@ -74,8 +73,9 @@ u32 * u32_init_cast (u32 *u, const s_tag *tag)
default:
break;
}
- warnx("u32_cast: cannot cast %s to u32",
- tag_type_to_string(tag->type));
+ err_write_1("u32_cast: cannot cast ");
+ err_write_1(tag_type_to_string(tag->type));
+ err_puts(" to u32");
assert(! "u32_cast: cannot cast to u32");
return NULL;
}
diff --git a/libc3/u64.c b/libc3/u64.c
index a5020fd..9449dc0 100644
--- a/libc3/u64.c
+++ b/libc3/u64.c
@@ -12,7 +12,6 @@
*/
/* Gen from u.h.in BITS=64 bits=64 */
#include "assert.h"
-#include <err.h>
#include <math.h>
#include <stdlib.h>
#include "integer.h"
@@ -74,8 +73,9 @@ u64 * u64_init_cast (u64 *u, const s_tag *tag)
default:
break;
}
- warnx("u64_cast: cannot cast %s to u64",
- tag_type_to_string(tag->type));
+ err_write_1("u64_cast: cannot cast ");
+ err_write_1(tag_type_to_string(tag->type));
+ err_puts(" to u64");
assert(! "u64_cast: cannot cast to u64");
return NULL;
}
diff --git a/libc3/u8.c b/libc3/u8.c
index 91f55d2..b23337f 100644
--- a/libc3/u8.c
+++ b/libc3/u8.c
@@ -12,7 +12,6 @@
*/
/* Gen from u.h.in BITS=8 bits=8 */
#include "assert.h"
-#include <err.h>
#include <math.h>
#include <stdlib.h>
#include "integer.h"
@@ -74,8 +73,9 @@ u8 * u8_init_cast (u8 *u, const s_tag *tag)
default:
break;
}
- warnx("u8_cast: cannot cast %s to u8",
- tag_type_to_string(tag->type));
+ err_write_1("u8_cast: cannot cast ");
+ err_write_1(tag_type_to_string(tag->type));
+ err_puts(" to u8");
assert(! "u8_cast: cannot cast to u8");
return NULL;
}
diff --git a/libc3/uw.c b/libc3/uw.c
index b6d6150..8a78494 100644
--- a/libc3/uw.c
+++ b/libc3/uw.c
@@ -12,7 +12,6 @@
*/
/* Gen from u.h.in BITS=W bits=w */
#include "assert.h"
-#include <err.h>
#include <math.h>
#include <stdlib.h>
#include "integer.h"
@@ -74,8 +73,9 @@ uw * uw_init_cast (uw *u, const s_tag *tag)
default:
break;
}
- warnx("uw_cast: cannot cast %s to uw",
- tag_type_to_string(tag->type));
+ err_write_1("uw_cast: cannot cast ");
+ err_write_1(tag_type_to_string(tag->type));
+ err_puts(" to uw");
assert(! "uw_cast: cannot cast to uw");
return NULL;
}
diff --git a/libc3/var.c b/libc3/var.c
index ff57a74..ffa21ec 100644
--- a/libc3/var.c
+++ b/libc3/var.c
@@ -10,7 +10,17 @@
* AUTHOR BE CONSIDERED LIABLE FOR THE USE AND PERFORMANCE OF
* THIS SOFTWARE.
*/
-#include <assert.h>
-#include <err.h>
+#include "assert.h"
#include "tag.h"
#include "var.h"
+
+s_tag * var_init_copy (s_tag *var, const s_tag *src)
+{
+ assert(var);
+ assert(src);
+ assert(src->type == TAG_VAR);
+ if (src->type != TAG_VAR)
+ return NULL;
+ tag_init_var(var);
+ return var;
+}
diff --git a/sources.mk b/sources.mk
index d658fa2..e47c41b 100644
--- a/sources.mk
+++ b/sources.mk
@@ -411,6 +411,7 @@ C3_C_SOURCES = \
"libc3/tag_init.h" \
"libc3/tag_mod.c" \
"libc3/tag_mul.c" \
+ "libc3/tag_neg.c" \
"libc3/tag_shift_left.c" \
"libc3/tag_shift_right.c" \
"libc3/tag_sub.c" \
@@ -420,8 +421,6 @@ C3_C_SOURCES = \
"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" \
@@ -813,6 +812,9 @@ C3_OTHER_SOURCES = \
"test/ic3/quote.in" \
"test/ic3/quote.out.expected" \
"test/ic3/quote.ret.expected" \
+ "test/ic3/ratio.in" \
+ "test/ic3/ratio.out.expected" \
+ "test/ic3/ratio.ret.expected" \
"test/ic3/str.err.expected" \
"test/ic3/str.in" \
"test/ic3/str.out.expected" \
@@ -1096,5 +1098,8 @@ C3_EXTERNAL_SOURCES = \
"ucd2c/license.txt" \
"ucd2c/ucd.c" \
"ucd2c/ucd.h" \
+ "ucd2c/ucd2c" \
"ucd2c/ucd2c.c" \
+ "ucd2c/ucd2c.lo" \
+ "ucd2c/ucd2c.o" \
diff --git a/sources.sh b/sources.sh
index fad4ba4..a3a3221 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/block.c libc3/block.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/complex.c libc3/complex.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/queue.c libc3/queue.h libc3/quote.c libc3/quote.h libc3/ratio.c libc3/ratio.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/special_operator.c libc3/special_operator.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/unquote.c libc3/unquote.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/cairo_text.c libc3/window/cairo/cairo_text.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/mandelbrot_f128.c libc3/window/cairo/demo/mandelbrot_f128.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/matrix.c libc3/window/sdl2/demo/matrix.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/dmat3.h libc3/window/sdl2/dmat4.c libc3/window/sdl2/dmat4.h libc3/window/sdl2/dvec2.c libc3/window/sdl2/dvec2.h libc3/window/sdl2/dvec3.c libc3/window/sdl2/dvec3.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_lines.c libc3/window/sdl2/gl_lines.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_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/gl_vtext.c libc3/window/sdl2/gl_vtext.h libc3/window/sdl2/mat3.h libc3/window/sdl2/mat4.c libc3/window/sdl2/mat4.h libc3/window/sdl2/types.h libc3/window/sdl2/vec2.c libc3/window/sdl2/vec2.h libc3/window/sdl2/vec3.c libc3/window/sdl2/vec3.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/block.c libc3/block.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/complex.c libc3/complex.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/queue.c libc3/queue.h libc3/quote.c libc3/quote.h libc3/ratio.c libc3/ratio.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/special_operator.c libc3/special_operator.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_neg.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/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/unquote.c libc3/unquote.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/cairo_text.c libc3/window/cairo/cairo_text.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/mandelbrot_f128.c libc3/window/cairo/demo/mandelbrot_f128.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/matrix.c libc3/window/sdl2/demo/matrix.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/dmat3.h libc3/window/sdl2/dmat4.c libc3/window/sdl2/dmat4.h libc3/window/sdl2/dvec2.c libc3/window/sdl2/dvec2.h libc3/window/sdl2/dvec3.c libc3/window/sdl2/dvec3.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_lines.c libc3/window/sdl2/gl_lines.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_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/gl_vtext.c libc3/window/sdl2/gl_vtext.h libc3/window/sdl2/mat3.h libc3/window/sdl2/mat4.c libc3/window/sdl2/mat4.h libc3/window/sdl2/types.h libc3/window/sdl2/vec2.c libc3/window/sdl2/vec2.h libc3/window/sdl2/vec3.c libc3/window/sdl2/vec3.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 fonts/NotoSans-Regular.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/mandelbrot_f128_limit.1.png img/mandelbrot_f128_limit.2.png img/mandelbrot_f128_limit.3.png img/mandelbrot_f128_limit.png img/matrix_shade.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/point2f.facts lib/c3/0.1/gl/point3d.facts lib/c3/0.1/gl/point3f.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.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/str.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/block.in test/ic3/block.out.expected test/ic3/block.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/if.in test/ic3/if.out.expected test/ic3/if.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/macro.in test/ic3/macro.out.expected test/ic3/macro.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/quote.in test/ic3/quote.out.expected test/ic3/quote.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='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.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.txt ucd2c/UCD/auxiliary/LineBreakTest.txt ucd2c/UCD/auxiliary/SentenceBreakProperty.txt ucd2c/UCD/auxiliary/SentenceBreakTest.txt ucd2c/UCD/auxiliary/WordBreakProperty.txt 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.c '
+C3_OTHER_SOURCES='AUTHORS Makefile README.md c3.index c3.version config.subr configure fonts/Courier New/Courier New.ttf fonts/NotoSans-Regular.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/mandelbrot_f128_limit.1.png img/mandelbrot_f128_limit.2.png img/mandelbrot_f128_limit.3.png img/mandelbrot_f128_limit.png img/matrix_shade.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/point2f.facts lib/c3/0.1/gl/point3d.facts lib/c3/0.1/gl/point3f.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.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/str.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/block.in test/ic3/block.out.expected test/ic3/block.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/if.in test/ic3/if.out.expected test/ic3/if.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/macro.in test/ic3/macro.out.expected test/ic3/macro.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/quote.in test/ic3/quote.out.expected test/ic3/quote.ret.expected test/ic3/ratio.in test/ic3/ratio.out.expected test/ic3/ratio.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='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.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.txt ucd2c/UCD/auxiliary/LineBreakTest.txt ucd2c/UCD/auxiliary/SentenceBreakProperty.txt ucd2c/UCD/auxiliary/SentenceBreakTest.txt ucd2c/UCD/auxiliary/WordBreakProperty.txt 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 '