static Scheme_Object *make_rational(const Scheme_Object *n, const Scheme_Object *d, int normalize) { Scheme_Rational *r; r = (Scheme_Rational *)scheme_malloc_small_dirty_tagged(sizeof(Scheme_Rational)); r->so.type = scheme_rational_type; CLEAR_KEY_FIELD(&r->so); r->num = (Scheme_Object *)n; r->denom = (Scheme_Object *)d; return (normalize ? scheme_rational_normalize((Scheme_Object *)r) : (Scheme_Object *)r); }
static Scheme_Object *make_complex(const Scheme_Object *r, const Scheme_Object *i, int normalize) { Scheme_Complex *c; c = (Scheme_Complex *)scheme_malloc_small_dirty_tagged(sizeof(Scheme_Complex)); CLEAR_KEY_FIELD(&c->so); c->so.type = scheme_complex_type; c->r = (Scheme_Object *)r; c->i = (Scheme_Object *)i; if (normalize) return scheme_complex_normalize((Scheme_Object *)c); else return (Scheme_Object *)c; }