=================================================================== RCS file: /home/cvs/OpenXM/src/ox_toolkit/cmo.c,v retrieving revision 1.24 retrieving revision 1.28 diff -u -p -r1.24 -r1.28 --- OpenXM/src/ox_toolkit/cmo.c 2015/08/17 05:18:35 1.24 +++ OpenXM/src/ox_toolkit/cmo.c 2018/04/03 09:58:30 1.28 @@ -1,10 +1,8 @@ /* -*- mode: C; coding: euc-japan -*- */ -/* $OpenXM: OpenXM/src/ox_toolkit/cmo.c,v 1.23 2015/08/04 05:24:44 noro Exp $ */ +/* $OpenXM: OpenXM/src/ox_toolkit/cmo.c,v 1.27 2016/06/30 01:14:00 ohara Exp $ */ /* This module includes functions for sending/receiveng CMO's. - Some commnets is written in Japanese by the EUC-JP coded - character set. */ #include @@ -111,6 +109,12 @@ cmo *list_nth(cmo_list* this, int n) return NULL; } +char *cmo_indeterminate_get_name(cmo_indeterminate *this) +{ + cmo_string *ob = (cmo_string *)this->ob; + return ob->s; +} + /* for GNU mpz */ void resize_mpz(mpz_ptr mpz, int size) { @@ -257,11 +261,18 @@ cmo_qq* new_cmo_qq() cmo_bf* new_cmo_bf() { cmo_bf* c = MALLOC(sizeof(cmo_bf)); - c->tag = CMO_BIGFLOAT; + c->tag = CMO_BIGFLOAT32; mpfr_init(c->mpfr); return c; } +cmo_complex* new_cmo_complex() +{ + cmo_complex* c = MALLOC(sizeof(cmo_complex)); + c->tag = CMO_COMPLEX; + return c; +} + cmo_qq* new_cmo_qq_set_mpq(mpq_ptr q) { cmo_qq* c = new_cmo_qq(); @@ -285,6 +296,14 @@ cmo_bf* new_cmo_bf_set_mpfr(mpfr_ptr num) return c; } +cmo_complex* new_cmo_complex_set_re_im(cmo *re,cmo *im) +{ + cmo_complex* c = new_cmo_complex(); + c->re = re; + c->im = im; + return c; +} + cmo_zero* new_cmo_zero() { cmo_zero* m = MALLOC_ATOMIC(sizeof(cmo_zero)); @@ -323,6 +342,11 @@ cmo_indeterminate* new_cmo_indeterminate(cmo* ob) return c; } +cmo_indeterminate* new_cmo_indeterminate_set_name(char *variable) +{ + return new_cmo_indeterminate(new_cmo_string(variable)); +} + cmo_distributed_polynomial* new_cmo_distributed_polynomial() { cmo_distributed_polynomial* c = MALLOC(sizeof(cmo_distributed_polynomial)); @@ -469,7 +493,7 @@ char *new_string_set_cmo(cmo *m) int cmo_to_int(cmo *n) { - switch(n->tag) { + switch(n->tag) { case CMO_ZERO: return 0; case CMO_INT32: @@ -478,5 +502,5 @@ int cmo_to_int(cmo *n) return mpz_get_si(((cmo_zz *)n)->mpz); default: return 0; - } + } }