1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-11 14:21:10 +02:00

* __scm.h eq.c, eval.c, gc.c, hc.h, gh_data, hash.c, numbers.c,

numbers.h, objects.c, ramap.c, random.c, unif.c, unif.h: Extensive
rewrite of handling of real and complex numbers.
(SCM_FLOATS, SCM_SINGLES): These #ifdef conditionals have been
removed along with the support for floats.  (Float vectors are
still supported.)

* unif.c (scm_makflo): Removed.
This commit is contained in:
Mikael Djurfeldt 2000-03-14 06:42:56 +00:00
parent 1b88bf8a84
commit bc86da5de2

View file

@ -1,4 +1,4 @@
/* Copyright (C) 1995,1996,1997,1998 Free Software Foundation, Inc. /* Copyright (C) 1995,1996,1997,1998, 2000 Free Software Foundation, Inc.
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -114,12 +114,9 @@ scm_uniform_element_size (SCM obj)
break; break;
#endif #endif
#ifdef SCM_FLOATS
#ifdef SCM_SINGLES
case scm_tc7_fvect: case scm_tc7_fvect:
result = sizeof (float); result = sizeof (float);
break; break;
#endif
case scm_tc7_dvect: case scm_tc7_dvect:
result = sizeof (double); result = sizeof (double);
@ -128,7 +125,6 @@ scm_uniform_element_size (SCM obj)
case scm_tc7_cvect: case scm_tc7_cvect:
result = 2 * sizeof (double); result = 2 * sizeof (double);
break; break;
#endif
default: default:
result = 0; result = 0;
@ -136,27 +132,21 @@ scm_uniform_element_size (SCM obj)
return result; return result;
} }
/* Silly function used not to modify the semantics of the silly
#ifdef SCM_FLOATS * prototype system in order to be backward compatible.
#ifdef SCM_SINGLES */
static int
singp (SCM obj)
SCM
scm_makflo (float x)
{ {
SCM z; if (!SCM_SLOPPY_REALP (obj))
if (x == 0.0) return 0;
return scm_flo0; else
SCM_NEWCELL (z); {
SCM_DEFER_INTS; double x = SCM_REAL_VALUE (obj);
SCM_SETCAR (z, scm_tc_flo); float fx = x;
SCM_FLO (z) = x; return (- SCM_FLTMAX < x) && (x < SCM_FLTMAX) && (fx == x);
SCM_ALLOW_INTS; }
return z;
} }
#endif
#endif
SCM SCM
scm_make_uve (long k, SCM prot) scm_make_uve (long k, SCM prot)
@ -209,21 +199,15 @@ scm_make_uve (long k, SCM prot)
} }
} }
else else
#ifdef SCM_FLOATS
if (SCM_IMP (prot) || !SCM_INEXP (prot)) if (SCM_IMP (prot) || !SCM_INEXP (prot))
#endif
/* Huge non-unif vectors are NOT supported. */ /* Huge non-unif vectors are NOT supported. */
/* no special scm_vector */ /* no special scm_vector */
return scm_make_vector (SCM_MAKINUM (k), SCM_UNDEFINED); return scm_make_vector (SCM_MAKINUM (k), SCM_UNDEFINED);
#ifdef SCM_FLOATS else if (singp (prot))
#ifdef SCM_SINGLES
else if (SCM_SINGP (prot))
{ {
i = sizeof (float) * k; i = sizeof (float) * k;
type = scm_tc7_fvect; type = scm_tc7_fvect;
} }
#endif
else if (SCM_CPLXP (prot)) else if (SCM_CPLXP (prot))
{ {
i = 2 * sizeof (double) * k; i = 2 * sizeof (double) * k;
@ -234,7 +218,6 @@ scm_make_uve (long k, SCM prot)
i = sizeof (double) * k; i = sizeof (double) * k;
type = scm_tc7_dvect; type = scm_tc7_dvect;
} }
#endif
SCM_NEWCELL (v); SCM_NEWCELL (v);
SCM_DEFER_INTS; SCM_DEFER_INTS;
@ -327,16 +310,12 @@ SCM_DEFINE (scm_array_p, "array?", 1, 1, 0,
&& (1 == SCM_LENGTH (prot)) && (1 == SCM_LENGTH (prot))
&& ('s' == SCM_CHARS (prot)[0]); && ('s' == SCM_CHARS (prot)[0]);
#endif #endif
# ifdef SCM_FLOATS
# ifdef SCM_SINGLES
case scm_tc7_fvect: case scm_tc7_fvect:
protp = SCM_SINGP(prot); protp = singp (prot);
# endif
case scm_tc7_dvect: case scm_tc7_dvect:
protp = SCM_REALP(prot); protp = SCM_REALP(prot);
case scm_tc7_cvect: case scm_tc7_cvect:
protp = SCM_CPLXP(prot); protp = SCM_CPLXP(prot);
# endif
case scm_tc7_vector: case scm_tc7_vector:
case scm_tc7_wvect: case scm_tc7_wvect:
protp = SCM_NULLP(prot); protp = SCM_NULLP(prot);
@ -1123,16 +1102,10 @@ SCM_DEFINE (scm_uniform_vector_ref, "uniform-vector-ref", 2, 0, 0,
return SCM_MAKE_CHAR (SCM_UCHARS (v)[pos]); return SCM_MAKE_CHAR (SCM_UCHARS (v)[pos]);
case scm_tc7_byvect: case scm_tc7_byvect:
return SCM_MAKINUM (((char *)SCM_CHARS (v))[pos]); return SCM_MAKINUM (((char *)SCM_CHARS (v))[pos]);
# ifdef SCM_INUMS_ONLY
case scm_tc7_uvect:
case scm_tc7_ivect:
return SCM_MAKINUM (SCM_VELTS (v)[pos]);
# else
case scm_tc7_uvect: case scm_tc7_uvect:
return scm_ulong2num((unsigned long ) SCM_VELTS(v)[pos]); return scm_ulong2num((unsigned long ) SCM_VELTS(v)[pos]);
case scm_tc7_ivect: case scm_tc7_ivect:
return scm_long2num((long) SCM_VELTS(v)[pos]); return scm_long2num((long) SCM_VELTS(v)[pos]);
# endif
case scm_tc7_svect: case scm_tc7_svect:
return SCM_MAKINUM (((short *) SCM_CDR (v))[pos]); return SCM_MAKINUM (((short *) SCM_CDR (v))[pos]);
@ -1141,17 +1114,13 @@ SCM_DEFINE (scm_uniform_vector_ref, "uniform-vector-ref", 2, 0, 0,
return scm_long_long2num (((long_long *) SCM_CDR (v))[pos]); return scm_long_long2num (((long_long *) SCM_CDR (v))[pos]);
#endif #endif
#ifdef SCM_FLOATS
#ifdef SCM_SINGLES
case scm_tc7_fvect: case scm_tc7_fvect:
return scm_makflo (((float *) SCM_CDR (v))[pos]); return scm_make_real (((float *) SCM_CDR (v))[pos]);
#endif
case scm_tc7_dvect: case scm_tc7_dvect:
return scm_makdbl (((double *) SCM_CDR (v))[pos], 0.0); return scm_make_real (((double *) SCM_CDR (v))[pos]);
case scm_tc7_cvect: case scm_tc7_cvect:
return scm_makdbl (((double *) SCM_CDR (v))[2 * pos], return scm_make_complex (((double *) SCM_CDR (v))[2 * pos],
((double *) SCM_CDR (v))[2 * pos + 1]); ((double *) SCM_CDR (v))[2 * pos + 1]);
#endif
case scm_tc7_vector: case scm_tc7_vector:
case scm_tc7_wvect: case scm_tc7_wvect:
return SCM_VELTS (v)[pos]; return SCM_VELTS (v)[pos];
@ -1178,53 +1147,39 @@ scm_cvref (SCM v, scm_sizet pos, SCM last)
return SCM_MAKE_CHAR (SCM_UCHARS (v)[pos]); return SCM_MAKE_CHAR (SCM_UCHARS (v)[pos]);
case scm_tc7_byvect: case scm_tc7_byvect:
return SCM_MAKINUM (((char *)SCM_CHARS (v))[pos]); return SCM_MAKINUM (((char *)SCM_CHARS (v))[pos]);
# ifdef SCM_INUMS_ONLY
case scm_tc7_uvect:
case scm_tc7_ivect:
return SCM_MAKINUM (SCM_VELTS (v)[pos]);
# else
case scm_tc7_uvect: case scm_tc7_uvect:
return scm_ulong2num((unsigned long) SCM_VELTS(v)[pos]); return scm_ulong2num((unsigned long) SCM_VELTS(v)[pos]);
case scm_tc7_ivect: case scm_tc7_ivect:
return scm_long2num((long) SCM_VELTS(v)[pos]); return scm_long2num((long) SCM_VELTS(v)[pos]);
# endif
case scm_tc7_svect: case scm_tc7_svect:
return SCM_MAKINUM (((short *) SCM_CDR (v))[pos]); return SCM_MAKINUM (((short *) SCM_CDR (v))[pos]);
#ifdef HAVE_LONG_LONGS #ifdef HAVE_LONG_LONGS
case scm_tc7_llvect: case scm_tc7_llvect:
return scm_long_long2num (((long_long *) SCM_CDR (v))[pos]); return scm_long_long2num (((long_long *) SCM_CDR (v))[pos]);
#endif #endif
#ifdef SCM_FLOATS
#ifdef SCM_SINGLES
case scm_tc7_fvect: case scm_tc7_fvect:
if (SCM_NIMP (last) && (last != scm_flo0) && (scm_tc_flo == SCM_UNPACK_CAR (last))) if (SCM_NIMP (last) && last != scm_flo0 && SCM_SLOPPY_REALP (last))
{ {
SCM_FLO (last) = ((float *) SCM_CDR (v))[pos]; SCM_REAL_VALUE (last) = ((float *) SCM_CDR (v))[pos];
return last; return last;
} }
return scm_makflo (((float *) SCM_CDR (v))[pos]); return scm_make_real (((float *) SCM_CDR (v))[pos]);
#endif
case scm_tc7_dvect: case scm_tc7_dvect:
#ifdef SCM_SINGLES if (SCM_NIMP (last) && last != scm_flo0 && SCM_SLOPPY_REALP (last))
if (SCM_NIMP (last) && scm_tc_dblr == SCM_UNPACK_CAR (last))
#else
if (SCM_NIMP (last) && (last != scm_flo0) && (scm_tc_dblr == SCM_CAR (last)))
#endif
{ {
SCM_REAL (last) = ((double *) SCM_CDR (v))[pos]; SCM_REAL_VALUE (last) = ((double *) SCM_CDR (v))[pos];
return last; return last;
} }
return scm_makdbl (((double *) SCM_CDR (v))[pos], 0.0); return scm_make_real (((double *) SCM_CDR (v))[pos]);
case scm_tc7_cvect: case scm_tc7_cvect:
if (SCM_NIMP (last) && scm_tc_dblc == SCM_UNPACK_CAR (last)) if (SCM_NIMP (last) && SCM_SLOPPY_COMPLEXP (last))
{ {
SCM_REAL (last) = ((double *) SCM_CDR (v))[2 * pos]; SCM_COMPLEX_REAL (last) = ((double *) SCM_CDR (v))[2 * pos];
SCM_IMAG (last) = ((double *) SCM_CDR (v))[2 * pos + 1]; SCM_COMPLEX_IMAG (last) = ((double *) SCM_CDR (v))[2 * pos + 1];
return last; return last;
} }
return scm_makdbl (((double *) SCM_CDR (v))[2 * pos], return scm_make_complex (((double *) SCM_CDR (v))[2 * pos],
((double *) SCM_CDR (v))[2 * pos + 1]); ((double *) SCM_CDR (v))[2 * pos + 1]);
#endif
case scm_tc7_vector: case scm_tc7_vector:
case scm_tc7_wvect: case scm_tc7_wvect:
return SCM_VELTS (v)[pos]; return SCM_VELTS (v)[pos];
@ -1307,21 +1262,12 @@ SCM_DEFINE (scm_array_set_x, "array-set!", 2, 0, 1,
SCM_ASRTGO (SCM_INUMP (obj), badobj); SCM_ASRTGO (SCM_INUMP (obj), badobj);
((char *)SCM_CHARS (v))[pos] = SCM_INUM (obj); ((char *)SCM_CHARS (v))[pos] = SCM_INUM (obj);
break; break;
# ifdef SCM_INUMS_ONLY
case scm_tc7_uvect:
SCM_ASRTGO (SCM_INUM (obj) >= 0, badobj);
/* fall through */
case scm_tc7_ivect:
SCM_ASRTGO(SCM_INUMP(obj), badobj); SCM_VELTS(v)[pos] = SCM_INUM(obj);
break;
# else
case scm_tc7_uvect: case scm_tc7_uvect:
SCM_VELTS(v)[pos] = SCM_PACK (scm_num2ulong(obj, (char *)SCM_ARG2, FUNC_NAME)); SCM_VELTS(v)[pos] = SCM_PACK (scm_num2ulong(obj, (char *)SCM_ARG2, FUNC_NAME));
break; break;
case scm_tc7_ivect: case scm_tc7_ivect:
SCM_VELTS(v)[pos] = SCM_PACK (scm_num2long(obj, (char *)SCM_ARG2, FUNC_NAME)); SCM_VELTS(v)[pos] = SCM_PACK (scm_num2long(obj, (char *)SCM_ARG2, FUNC_NAME));
break; break;
# endif
case scm_tc7_svect: case scm_tc7_svect:
SCM_ASRTGO (SCM_INUMP (obj), badobj); SCM_ASRTGO (SCM_INUMP (obj), badobj);
((short *) SCM_CDR (v))[pos] = SCM_INUM (obj); ((short *) SCM_CDR (v))[pos] = SCM_INUM (obj);
@ -1333,21 +1279,17 @@ SCM_DEFINE (scm_array_set_x, "array-set!", 2, 0, 1,
#endif #endif
#ifdef SCM_FLOATS
#ifdef SCM_SINGLES
case scm_tc7_fvect: case scm_tc7_fvect:
((float *) SCM_CDR (v))[pos] = (float)scm_num2dbl(obj, FUNC_NAME); break; ((float *) SCM_CDR (v))[pos] = (float) scm_num2dbl (obj, FUNC_NAME);
break; break;
#endif
case scm_tc7_dvect: case scm_tc7_dvect:
((double *) SCM_CDR (v))[pos] = scm_num2dbl(obj, FUNC_NAME); break; ((double *) SCM_CDR (v))[pos] = scm_num2dbl (obj, FUNC_NAME);
break; break;
case scm_tc7_cvect: case scm_tc7_cvect:
SCM_ASRTGO (SCM_INEXP (obj), badobj); SCM_ASRTGO (SCM_INEXP (obj), badobj);
((double *) SCM_CDR (v))[2 * pos] = SCM_REALPART (obj); ((double *) SCM_CDR (v))[2 * pos] = SCM_REALPART (obj);
((double *) SCM_CDR (v))[2 * pos + 1] = SCM_CPLXP (obj) ? SCM_IMAG (obj) : 0.0; ((double *) SCM_CDR (v))[2 * pos + 1] = SCM_CPLXP (obj) ? SCM_IMAG (obj) : 0.0;
break; break;
#endif
case scm_tc7_vector: case scm_tc7_vector:
case scm_tc7_wvect: case scm_tc7_wvect:
SCM_VELTS (v)[pos] = obj; SCM_VELTS (v)[pos] = obj;
@ -1530,19 +1472,15 @@ loop:
sz = sizeof (long_long); sz = sizeof (long_long);
break; break;
#endif #endif
#ifdef SCM_FLOATS
#ifdef SCM_SINGLES
case scm_tc7_fvect: case scm_tc7_fvect:
sz = sizeof (float); sz = sizeof (float);
break; break;
#endif
case scm_tc7_dvect: case scm_tc7_dvect:
sz = sizeof (double); sz = sizeof (double);
break; break;
case scm_tc7_cvect: case scm_tc7_cvect:
sz = 2 * sizeof (double); sz = 2 * sizeof (double);
break; break;
#endif
} }
cend = vlen; cend = vlen;
@ -1684,19 +1622,15 @@ loop:
sz = sizeof (long_long); sz = sizeof (long_long);
break; break;
#endif #endif
#ifdef SCM_FLOATS
#ifdef SCM_SINGLES
case scm_tc7_fvect: case scm_tc7_fvect:
sz = sizeof (float); sz = sizeof (float);
break; break;
#endif
case scm_tc7_dvect: case scm_tc7_dvect:
sz = sizeof (double); sz = sizeof (double);
break; break;
case scm_tc7_cvect: case scm_tc7_cvect:
sz = 2 * sizeof (double); sz = 2 * sizeof (double);
break; break;
#endif
} }
cend = vlen; cend = vlen;
@ -2098,16 +2032,6 @@ SCM_DEFINE (scm_array_to_list, "array->list", 1, 0, 0,
res = scm_cons (SCM_BOOL(((long *) data)[k] & mask), res); res = scm_cons (SCM_BOOL(((long *) data)[k] & mask), res);
return res; return res;
} }
# ifdef SCM_INUMS_ONLY
case scm_tc7_uvect:
case scm_tc7_ivect:
{
long *data = (long *) SCM_VELTS (v);
for (k = SCM_LENGTH (v) - 1; k >= 0; k--)
res = scm_cons (SCM_MAKINUM (data[k]), res);
return res;
}
# else
case scm_tc7_uvect: { case scm_tc7_uvect: {
long *data = (long *)SCM_VELTS(v); long *data = (long *)SCM_VELTS(v);
for (k = SCM_LENGTH(v) - 1; k >= 0; k--) for (k = SCM_LENGTH(v) - 1; k >= 0; k--)
@ -2120,7 +2044,6 @@ SCM_DEFINE (scm_array_to_list, "array->list", 1, 0, 0,
res = scm_cons(scm_long2num(data[k]), res); res = scm_cons(scm_long2num(data[k]), res);
return res; return res;
} }
# endif
case scm_tc7_svect: { case scm_tc7_svect: {
short *data; short *data;
data = (short *)SCM_VELTS(v); data = (short *)SCM_VELTS(v);
@ -2139,16 +2062,13 @@ SCM_DEFINE (scm_array_to_list, "array->list", 1, 0, 0,
#endif #endif
#ifdef SCM_FLOATS
#ifdef SCM_SINGLES
case scm_tc7_fvect: case scm_tc7_fvect:
{ {
float *data = (float *) SCM_VELTS (v); float *data = (float *) SCM_VELTS (v);
for (k = SCM_LENGTH (v) - 1; k >= 0; k--) for (k = SCM_LENGTH (v) - 1; k >= 0; k--)
res = scm_cons (scm_makflo (data[k]), res); res = scm_cons (scm_make_real (data[k]), res);
return res; return res;
} }
#endif /*SCM_SINGLES*/
case scm_tc7_dvect: case scm_tc7_dvect:
{ {
double *data = (double *) SCM_VELTS (v); double *data = (double *) SCM_VELTS (v);
@ -2163,7 +2083,6 @@ SCM_DEFINE (scm_array_to_list, "array->list", 1, 0, 0,
res = scm_cons (scm_makdbl (data[k][0], data[k][1]), res); res = scm_cons (scm_makdbl (data[k][0], data[k][1]), res);
return res; return res;
} }
#endif /*SCM_FLOATS*/
} }
} }
#undef FUNC_NAME #undef FUNC_NAME
@ -2378,54 +2297,54 @@ tail:
} }
break; break;
#ifdef SCM_FLOATS
#ifdef SCM_SINGLES
case scm_tc7_fvect: case scm_tc7_fvect:
if (n-- > 0) if (n-- > 0)
{ {
SCM z = scm_makflo (1.0); SCM z = scm_make_real (1.0);
SCM_FLO (z) = ((float *) SCM_VELTS (ra))[j]; SCM_REAL_VALUE (z) = ((float *) SCM_VELTS (ra))[j];
scm_floprint (z, port, pstate); scm_print_real (z, port, pstate);
for (j += inc; n-- > 0; j += inc) for (j += inc; n-- > 0; j += inc)
{ {
scm_putc (' ', port); scm_putc (' ', port);
SCM_FLO (z) = ((float *) SCM_VELTS (ra))[j]; SCM_REAL_VALUE (z) = ((float *) SCM_VELTS (ra))[j];
scm_floprint (z, port, pstate); scm_print_real (z, port, pstate);
} }
} }
break; break;
#endif /*SCM_SINGLES*/
case scm_tc7_dvect: case scm_tc7_dvect:
if (n-- > 0) if (n-- > 0)
{ {
SCM z = scm_makdbl (1.0 / 3.0, 0.0); SCM z = scm_make_real (1.0 / 3.0);
SCM_REAL (z) = ((double *) SCM_VELTS (ra))[j]; SCM_REAL_VALUE (z) = ((double *) SCM_VELTS (ra))[j];
scm_floprint (z, port, pstate); scm_print_real (z, port, pstate);
for (j += inc; n-- > 0; j += inc) for (j += inc; n-- > 0; j += inc)
{ {
scm_putc (' ', port); scm_putc (' ', port);
SCM_REAL (z) = ((double *) SCM_VELTS (ra))[j]; SCM_REAL_VALUE (z) = ((double *) SCM_VELTS (ra))[j];
scm_floprint (z, port, pstate); scm_print_real (z, port, pstate);
} }
} }
break; break;
case scm_tc7_cvect: case scm_tc7_cvect:
if (n-- > 0) if (n-- > 0)
{ {
SCM cz = scm_makdbl (0.0, 1.0), z = scm_makdbl (1.0 / 3.0, 0.0); SCM cz = scm_make_complex (0.0, 1.0), z = scm_make_real (1.0 / 3.0);
SCM_REAL (z) = SCM_REAL (cz) = (((double *) SCM_VELTS (ra))[2 * j]); SCM_REAL_VALUE (z) =
SCM_IMAG (cz) = ((double *) SCM_VELTS (ra))[2 * j + 1]; SCM_COMPLEX_REAL (cz) = ((double *) SCM_VELTS (ra))[2 * j];
scm_floprint ((0.0 == SCM_IMAG (cz) ? z : cz), port, pstate); SCM_COMPLEX_IMAG (cz) = ((double *) SCM_VELTS (ra))[2 * j + 1];
scm_print_complex ((0.0 == SCM_COMPLEX_IMAG (cz) ? z : cz),
port, pstate);
for (j += inc; n-- > 0; j += inc) for (j += inc; n-- > 0; j += inc)
{ {
scm_putc (' ', port); scm_putc (' ', port);
SCM_REAL (z) = SCM_REAL (cz) = ((double *) SCM_VELTS (ra))[2 * j]; SCM_REAL_VALUE (z)
SCM_IMAG (cz) = ((double *) SCM_VELTS (ra))[2 * j + 1]; = SCM_COMPLEX_REAL (cz) = ((double *) SCM_VELTS (ra))[2 * j];
scm_floprint ((0.0 == SCM_IMAG (cz) ? z : cz), port, pstate); SCM_COMPLEX_IMAG (cz) = ((double *) SCM_VELTS (ra))[2 * j + 1];
scm_print_complex ((0.0 == SCM_COMPLEX_IMAG (cz) ? z : cz),
port, pstate);
} }
} }
break; break;
#endif /*SCM_FLOATS*/
} }
} }
@ -2508,19 +2427,15 @@ tail:
scm_putc ('l', port); scm_putc ('l', port);
break; break;
#endif #endif
#ifdef SCM_FLOATS
#ifdef SCM_SINGLES
case scm_tc7_fvect: case scm_tc7_fvect:
scm_putc ('s', port); scm_putc ('s', port);
break; break;
#endif /*SCM_SINGLES*/
case scm_tc7_dvect: case scm_tc7_dvect:
scm_putc ('i', port); scm_putc ('i', port);
break; break;
case scm_tc7_cvect: case scm_tc7_cvect:
scm_putc ('c', port); scm_putc ('c', port);
break; break;
#endif /*SCM_FLOATS*/
} }
scm_putc ('(', port); scm_putc ('(', port);
rapr1 (exp, base, 0, port, pstate); rapr1 (exp, base, 0, port, pstate);
@ -2568,16 +2483,12 @@ loop:
case scm_tc7_llvect: case scm_tc7_llvect:
return SCM_CDR (scm_intern ("l", 1)); return SCM_CDR (scm_intern ("l", 1));
#endif #endif
#ifdef SCM_FLOATS
#ifdef SCM_SINGLES
case scm_tc7_fvect: case scm_tc7_fvect:
return scm_makflo (1.0); return scm_make_real (1.0);
#endif
case scm_tc7_dvect: case scm_tc7_dvect:
return scm_makdbl (1.0 / 3.0, 0.0); return scm_make_real (1.0 / 3.0);
case scm_tc7_cvect: case scm_tc7_cvect:
return scm_makdbl (0.0, 1.0); return scm_make_complex (0.0, 1.0);
#endif
} }
} }
#undef FUNC_NAME #undef FUNC_NAME