diff --git a/src/c/numbers/abs.d b/src/c/numbers/abs.d index 26520c9aa..41bc188d2 100644 --- a/src/c/numbers/abs.d +++ b/src/c/numbers/abs.d @@ -102,4 +102,5 @@ ecl_abs_complex(cl_object x) MATH_DEF_DISPATCH1_NE(abs, @[abs], @[number], ecl_abs_fixnum, ecl_abs_bignum, ecl_abs_rational, ecl_abs_single_float, ecl_abs_double_float, ecl_abs_long_float, - ecl_abs_complex); + ecl_abs_complex, + /* implementme */ absfailed, absfailed, absfailed); diff --git a/src/c/numbers/conjugate.d b/src/c/numbers/conjugate.d index 676442671..9fe3da30d 100644 --- a/src/c/numbers/conjugate.d +++ b/src/c/numbers/conjugate.d @@ -37,4 +37,5 @@ MATH_DEF_DISPATCH1_NE(conjugate, @[conjugate], @[number], ecl_conjugate_real, ecl_conjugate_real, ecl_conjugate_real, ecl_conjugate_real, ecl_conjugate_real, ecl_conjugate_real, - ecl_conjugate_complex); + ecl_conjugate_complex, + /* implementme */ conjugatefailed, conjugatefailed, conjugatefailed); diff --git a/src/c/numbers/cos.d b/src/c/numbers/cos.d index 9ef991ee6..25e1687b1 100644 --- a/src/c/numbers/cos.d +++ b/src/c/numbers/cos.d @@ -67,4 +67,5 @@ ecl_cos_complex(cl_object x) MATH_DEF_DISPATCH1(cos, @[cos], @[number], ecl_cos_rational, ecl_cos_rational, ecl_cos_rational, ecl_cos_single_float, ecl_cos_double_float, ecl_cos_long_float, - ecl_cos_complex); + ecl_cos_complex, + /* implementme */ cos_nefailed, cos_nefailed, cos_nefailed); diff --git a/src/c/numbers/cosh.d b/src/c/numbers/cosh.d index f28083313..7ebe66f61 100644 --- a/src/c/numbers/cosh.d +++ b/src/c/numbers/cosh.d @@ -70,4 +70,5 @@ ecl_cosh_complex(cl_object x) MATH_DEF_DISPATCH1(cosh, @[cosh], @[number], ecl_cosh_rational, ecl_cosh_rational, ecl_cosh_rational, ecl_cosh_single_float, ecl_cosh_double_float, ecl_cosh_long_float, - ecl_cosh_complex); + ecl_cosh_complex, + /* implementme */ cosh_nefailed, cosh_nefailed, cosh_nefailed); diff --git a/src/c/numbers/exp.d b/src/c/numbers/exp.d index 768871cdd..779d3de0d 100644 --- a/src/c/numbers/exp.d +++ b/src/c/numbers/exp.d @@ -66,4 +66,5 @@ ecl_exp_complex(cl_object x) MATH_DEF_DISPATCH1(exp, @[exp], @[number], ecl_exp_rational, ecl_exp_rational, ecl_exp_rational, ecl_exp_single_float, ecl_exp_double_float, ecl_exp_long_float, - ecl_exp_complex); + ecl_exp_complex, + /* implementme */ exp_nefailed, exp_nefailed, exp_nefailed); diff --git a/src/c/numbers/expt.d b/src/c/numbers/expt.d index d7912a927..1e3cafde3 100644 --- a/src/c/numbers/expt.d +++ b/src/c/numbers/expt.d @@ -20,8 +20,6 @@ #include #include -#include /* for abort() */ - #pragma STDC FENV_ACCESS ON cl_fixnum @@ -81,7 +79,8 @@ expt_zero(cl_object x, cl_object y) return ecl_make_complex(z, ecl_make_fixnum(0)); default: /* We will never reach this */ - abort(); + if (ty > tx) FEwrong_type_nth_arg(@[expt], 1, x, @[number]); + else FEwrong_type_nth_arg(@[expt], 2, y, @[number]); } } diff --git a/src/c/numbers/log.d b/src/c/numbers/log.d index 3f4b8656c..5ac48ce1a 100644 --- a/src/c/numbers/log.d +++ b/src/c/numbers/log.d @@ -107,7 +107,8 @@ ecl_log1_complex(cl_object x) MATH_DEF_DISPATCH1(log1, @[log], @[number], ecl_log1_rational, ecl_log1_bignum, ecl_log1_rational, ecl_log1_single_float, ecl_log1_double_float, ecl_log1_long_float, - ecl_log1_complex); + ecl_log1_complex, + /* implementme */ log1_nefailed, log1_nefailed, log1_nefailed); cl_object ecl_log2(cl_object x, cl_object y) @@ -221,4 +222,5 @@ ecl_log1p_complex(cl_object x) MATH_DEF_DISPATCH1(log1p, @[si::log1p], @[number], ecl_log1p_rational, ecl_log1p_simple, ecl_log1p_rational, ecl_log1p_single_float, ecl_log1p_double_float, ecl_log1p_long_float, - ecl_log1p_complex); + ecl_log1p_complex, + /* implementme */ log1p_nefailed, log1p_nefailed, log1p_nefailed); diff --git a/src/c/numbers/minusp.d b/src/c/numbers/minusp.d index 728cdfafd..c5f498321 100644 --- a/src/c/numbers/minusp.d +++ b/src/c/numbers/minusp.d @@ -62,4 +62,5 @@ MATH_DEF_DISPATCH1_BOOL(minusp, @[minusp], @[real], ecl_minusp_fixnum, ecl_minusp_big, ecl_minusp_ratio, ecl_minusp_single_float, ecl_minusp_double_float, ecl_minusp_long_float, - minuspfailed) + minuspfailed, + minuspfailed, minuspfailed, minuspfailed) diff --git a/src/c/numbers/negate.d b/src/c/numbers/negate.d index 50abd3b55..001bc9a2c 100644 --- a/src/c/numbers/negate.d +++ b/src/c/numbers/negate.d @@ -64,4 +64,5 @@ MATH_DEF_DISPATCH1_NE(negate, @[-], @[number], ecl_negate_fix, ecl_negate_big, ecl_negate_ratio, ecl_negate_single_float, ecl_negate_double_float, ecl_negate_long_float, - ecl_negate_complex); + ecl_negate_complex, + /* implementme */ negatefailed, negatefailed, negatefailed); diff --git a/src/c/numbers/one_minus.d b/src/c/numbers/one_minus.d index a9ee26c54..bccc2d668 100644 --- a/src/c/numbers/one_minus.d +++ b/src/c/numbers/one_minus.d @@ -67,7 +67,8 @@ MATH_DEF_DISPATCH1_NE(one_minus, @[1-], @[number], ecl_one_minus_fix, ecl_one_minus_big, ecl_one_minus_ratio, ecl_one_minus_single_float, ecl_one_minus_double_float, ecl_one_minus_long_float, - ecl_one_minus_complex); + ecl_one_minus_complex, + /* implementme */ one_minusfailed, one_minusfailed, one_minusfailed); /* (1- x) */ cl_object diff --git a/src/c/numbers/one_plus.d b/src/c/numbers/one_plus.d index 72723f3cb..d8d87e3a4 100644 --- a/src/c/numbers/one_plus.d +++ b/src/c/numbers/one_plus.d @@ -67,7 +67,8 @@ MATH_DEF_DISPATCH1_NE(one_plus, @[1+], @[number], ecl_one_plus_fix, ecl_one_plus_big, ecl_one_plus_ratio, ecl_one_plus_single_float, ecl_one_plus_double_float, ecl_one_plus_long_float, - ecl_one_plus_complex); + ecl_one_plus_complex, + /* implementme */ one_plusfailed, one_plusfailed, one_plusfailed); /* (1+ x) */ cl_object diff --git a/src/c/numbers/plusp.d b/src/c/numbers/plusp.d index 1d238f421..80b5ee0c0 100644 --- a/src/c/numbers/plusp.d +++ b/src/c/numbers/plusp.d @@ -63,4 +63,5 @@ MATH_DEF_DISPATCH1_BOOL(plusp, @[plusp], @[real], ecl_plusp_fixnum, ecl_plusp_big, ecl_plusp_ratio, ecl_plusp_single_float, ecl_plusp_double_float, ecl_plusp_long_float, - pluspfailed) + pluspfailed, + /* implementme*/ pluspfailed, pluspfailed, pluspfailed) diff --git a/src/c/numbers/sin.d b/src/c/numbers/sin.d index bd5dc1be4..2824b8e8a 100644 --- a/src/c/numbers/sin.d +++ b/src/c/numbers/sin.d @@ -70,4 +70,5 @@ ecl_sin_complex(cl_object x) MATH_DEF_DISPATCH1(sin, @[sin], @[number], ecl_sin_rational, ecl_sin_rational, ecl_sin_rational, ecl_sin_single_float, ecl_sin_double_float, ecl_sin_long_float, - ecl_sin_complex); + ecl_sin_complex, + /* implementme */ sin_nefailed, sin_nefailed, sin_nefailed); diff --git a/src/c/numbers/sinh.d b/src/c/numbers/sinh.d index 64d6b7b82..6735962ac 100644 --- a/src/c/numbers/sinh.d +++ b/src/c/numbers/sinh.d @@ -71,4 +71,5 @@ ecl_sinh_complex(cl_object x) MATH_DEF_DISPATCH1(sinh, @[sinh], @[number], ecl_sinh_rational, ecl_sinh_rational, ecl_sinh_rational, ecl_sinh_single_float, ecl_sinh_double_float, ecl_sinh_long_float, - ecl_sinh_complex); + ecl_sinh_complex, + /* implementme */ sinh_nefailed, sinh_nefailed, sinh_nefailed); diff --git a/src/c/numbers/sqrt.d b/src/c/numbers/sqrt.d index 2b833c203..da3546c76 100644 --- a/src/c/numbers/sqrt.d +++ b/src/c/numbers/sqrt.d @@ -84,4 +84,5 @@ ecl_sqrt_complex(cl_object x) MATH_DEF_DISPATCH1(sqrt, @[sqrt], @[number], ecl_sqrt_rational, ecl_sqrt_rational, ecl_sqrt_rational, ecl_sqrt_single_float, ecl_sqrt_double_float, ecl_sqrt_long_float, - ecl_sqrt_complex); + ecl_sqrt_complex, + /* implementme */ sqrt_nefailed, sqrt_nefailed, sqrt_nefailed); diff --git a/src/c/numbers/tan.d b/src/c/numbers/tan.d index 8df59710e..ec23801ed 100644 --- a/src/c/numbers/tan.d +++ b/src/c/numbers/tan.d @@ -77,4 +77,5 @@ ecl_tan_complex(cl_object x) MATH_DEF_DISPATCH1(tan, @[tan], @[number], ecl_tan_rational, ecl_tan_rational, ecl_tan_rational, ecl_tan_single_float, ecl_tan_double_float, ecl_tan_long_float, - ecl_tan_complex); + ecl_tan_complex, + /* implementme */ tan_nefailed, tan_nefailed, tan_nefailed); diff --git a/src/c/numbers/tanh.d b/src/c/numbers/tanh.d index b44e25a8e..abc849e32 100644 --- a/src/c/numbers/tanh.d +++ b/src/c/numbers/tanh.d @@ -63,4 +63,5 @@ ecl_tanh_complex(cl_object x) MATH_DEF_DISPATCH1(tanh, @[tanh], @[number], ecl_tanh_rational, ecl_tanh_rational, ecl_tanh_rational, ecl_tanh_single_float, ecl_tanh_double_float, ecl_tanh_long_float, - ecl_tanh_complex); + ecl_tanh_complex, + /* implementme */ tanh_nefailed, tanh_nefailed, tanh_nefailed); diff --git a/src/c/numbers/zerop.d b/src/c/numbers/zerop.d index e82fee579..36067615c 100644 --- a/src/c/numbers/zerop.d +++ b/src/c/numbers/zerop.d @@ -63,4 +63,5 @@ MATH_DEF_DISPATCH1_BOOL(zerop, @[zerop], @[number], ecl_zerop_fixnum, ecl_zerop_ratio, ecl_zerop_ratio, ecl_zerop_single_float, ecl_zerop_double_float, ecl_zerop_long_float, - ecl_zerop_complex) + ecl_zerop_complex, + /* implementme */ zeropfailed, zeropfailed, zeropfailed) diff --git a/src/h/impl/math_dispatch.h b/src/h/impl/math_dispatch.h index df2b019f6..4732ddaf2 100644 --- a/src/h/impl/math_dispatch.h +++ b/src/h/impl/math_dispatch.h @@ -28,29 +28,44 @@ typedef cl_object (*math_one_arg_fn)(cl_object); #else #define MATH_LONG_DOUBLE(opt) #endif -#define MATH_DEF_DISPATCH1_NE(name,id,type,fix,big,ratio,single_float,double_float,long_float,complex) \ + +#ifdef ECL_COMPLEX_FLOAT +#define MATH_CFLOAT(c1,c2,c3) c1, c2, c3 +#else +#define MATH_CFLOAT(c1,c2,c3) +#endif + +#define MATH_DEF_DISPATCH1_NE(name,id,type,fix,big,ratio, \ + single_float,double_float,long_float, \ + complex,csfloat,cdfloat,clfloat) \ static cl_object name##failed(cl_object x) { \ FEwrong_type_only_arg(id, x, type); \ } \ - static const math_one_arg_fn name##dispatch[t_complex+1]= { \ - name##failed, /* t_start */ \ - name##failed, /* t_list */ \ - name##failed, /* t_character */ \ - fix, big, ratio, /* t_fixnum, bignum, ratio */ \ - single_float, double_float, /* t_singlefloat, t_doublefloat */ \ - MATH_LONG_DOUBLE(long_float) /* t_longfloat, optional */ \ - complex }; \ + static const math_one_arg_fn name##dispatch[t_last_number+1]= { \ + name##failed, /* t_start */ \ + name##failed, /* t_list */ \ + name##failed, /* t_character */ \ + fix, big, ratio, /* t_fixnum, t_bignum, t_ratio */ \ + single_float, /* t_singlefloat */ \ + double_float, /* t_doublefloat */ \ + MATH_LONG_DOUBLE(long_float) /* t_longfloat */ \ + complex, /* t_complex */ \ + MATH_CFLOAT(csfloat,cdfloat,clfloat) /* t_c?float */ }; \ cl_object ecl_##name(cl_object arg) \ { \ - int t = ECL_IMMEDIATE(arg); \ + int t = ECL_IMMEDIATE(arg); \ if (t == 0) { \ t = arg->d.t; \ - unlikely_if (t > t_complex) return name##failed(arg); \ + unlikely_if (t > t_last_number) return name##failed(arg); \ } \ return name##dispatch[t](arg); \ } -#define MATH_DEF_DISPATCH1(name,id,type,fix,big,ratio,single_float,double_float,long_float,complex) \ - MATH_DEF_DISPATCH1_NE(name##_ne,id,type,fix,big,ratio,single_float,double_float,long_float,complex) \ +#define MATH_DEF_DISPATCH1(name,id,type,fix,big,ratio, \ + single_float,double_float,long_float, \ + complex,csfloat,cdfloat,clfloat) \ + MATH_DEF_DISPATCH1_NE(name##_ne,id,type,fix,big,ratio, \ + single_float,double_float,long_float, \ + complex,csfloat,cdfloat,clfloat) \ cl_object ecl_##name(cl_object arg) \ { \ cl_object out; \ @@ -61,24 +76,28 @@ typedef cl_object (*math_one_arg_fn)(cl_object); } typedef int (*math_one_arg_bool_fn)(cl_object); -#define MATH_DEF_DISPATCH1_BOOL(name,id,type,fix,big,ratio,single_float,double_float,long_float,complex) \ +#define MATH_DEF_DISPATCH1_BOOL(name,id,type,fix,big,ratio, \ + single_float,double_float,long_float, \ + complex,csfloat,cdfloat,clfloat) \ static int name##failed(cl_object x) { \ FEwrong_type_only_arg(id, x, type); \ } \ - static const math_one_arg_bool_fn name##dispatch[t_complex+1]= { \ - name##failed, /* t_start */ \ - name##failed, /* t_list */ \ - name##failed, /* t_character */ \ - fix, big, ratio, /* t_fixnum, bignum, ratio */ \ - single_float, double_float, /* t_singlefloat, t_doublefloat */ \ - MATH_LONG_DOUBLE(long_float) /* t_longfloat, optional */ \ - complex }; \ + static const math_one_arg_bool_fn name##dispatch[t_last_number+1]= {\ + name##failed, /* t_start */ \ + name##failed, /* t_list */ \ + name##failed, /* t_character */ \ + fix, big, ratio, /* t_fixnum, t_bignum, t_ratio */ \ + single_float, /* t_singlefloat */ \ + double_float, /* t_doublefloat */ \ + MATH_LONG_DOUBLE(long_float) /* t_longfloat */ \ + complex, /* t_complex */ \ + MATH_CFLOAT(csfloat,cdfloat,clfloat) /* t_c?float */ }; \ int ecl_##name(cl_object arg) \ { \ - int t = ECL_IMMEDIATE(arg); \ + int t = ECL_IMMEDIATE(arg); \ if (t == 0) { \ t = arg->d.t; \ - unlikely_if (t > t_complex) return name##failed(arg); \ + unlikely_if (t > t_last_number) return name##failed(arg); \ } \ return name##dispatch[t](arg); \ } diff --git a/src/h/impl/math_dispatch2.h b/src/h/impl/math_dispatch2.h index 607e34327..971e36a7c 100644 --- a/src/h/impl/math_dispatch2.h +++ b/src/h/impl/math_dispatch2.h @@ -20,13 +20,76 @@ #include /* for unlikely_if */ -#define MATH_DISPATCH2_LABEL(t1,t2) case ((t1)*(t_complex+1)+(t2)): +#define MATH_DISPATCH2_LABEL(t1,t2) case ((t1)*(t_last_number+1)+(t2)): #define MATH_DISPATCH2_BEGIN(x,y) { \ int tx = ecl_t_of(x), ty = ecl_t_of(y); \ - unlikely_if (ty > t_complex) { goto DISPATCH2_ERROR; } \ - switch (tx * (t_complex+1) + ty) + unlikely_if (ty > t_last_number) { goto DISPATCH2_ERROR; } \ + switch (tx * (t_last_number+1) + ty) #define MATH_DISPATCH2_END } (void)0 +#define CASE_CLFLOAT_FIXNUM \ + MATH_DISPATCH2_LABEL(t_clfloat,t_fixnum) +#define CASE_CLFLOAT_BIGNUM \ + MATH_DISPATCH2_LABEL(t_clfloat,t_bignum) +#define CASE_CLFLOAT_RATIO \ + MATH_DISPATCH2_LABEL(t_clfloat,t_ratio) +#define CASE_CLFLOAT_SINGLE_FLOAT \ + MATH_DISPATCH2_LABEL(t_clfloat,t_singlefloat) +#define CASE_CLFLOAT_DOUBLE_FLOAT \ + MATH_DISPATCH2_LABEL(t_clfloat,t_doublefloat) +#define CASE_CLFLOAT_LONG_FLOAT \ + MATH_DISPATCH2_LABEL(t_clfloat,t_longfloat) +#define CASE_CLFLOAT_COMPLEX \ + MATH_DISPATCH2_LABEL(t_clfloat,t_complex) +#define CASE_CLFLOAT_CSFLOAT \ + MATH_DISPATCH2_LABEL(t_clfloat,t_csfloat) +#define CASE_CLFLOAT_CDFLOAT \ + MATH_DISPATCH2_LABEL(t_clfloat,t_cdfloat) +#define CASE_CLFLOAT_CLFLOAT \ + MATH_DISPATCH2_LABEL(t_clfloat,t_clfloat) + +#define CASE_CDFLOAT_FIXNUM \ + MATH_DISPATCH2_LABEL(t_cdfloat,t_fixnum) +#define CASE_CDFLOAT_BIGNUM \ + MATH_DISPATCH2_LABEL(t_cdfloat,t_bignum) +#define CASE_CDFLOAT_RATIO \ + MATH_DISPATCH2_LABEL(t_cdfloat,t_ratio) +#define CASE_CDFLOAT_SINGLE_FLOAT \ + MATH_DISPATCH2_LABEL(t_cdfloat,t_singlefloat) +#define CASE_CDFLOAT_DOUBLE_FLOAT \ + MATH_DISPATCH2_LABEL(t_cdfloat,t_doublefloat) +#define CASE_CDFLOAT_LONG_FLOAT \ + MATH_DISPATCH2_LABEL(t_cdfloat,t_longfloat) +#define CASE_CDFLOAT_COMPLEX \ + MATH_DISPATCH2_LABEL(t_cdfloat,t_complex) +#define CASE_CDFLOAT_CSFLOAT \ + MATH_DISPATCH2_LABEL(t_cdfloat,t_csfloat) +#define CASE_CDFLOAT_CDFLOAT \ + MATH_DISPATCH2_LABEL(t_cdfloat,t_cdfloat) +#define CASE_CDFLOAT_CLFLOAT \ + MATH_DISPATCH2_LABEL(t_cdfloat,t_clfloat) + +#define CASE_CSFLOAT_FIXNUM \ + MATH_DISPATCH2_LABEL(t_csfloat,t_fixnum) +#define CASE_CSFLOAT_BIGNUM \ + MATH_DISPATCH2_LABEL(t_csfloat,t_bignum) +#define CASE_CSFLOAT_RATIO \ + MATH_DISPATCH2_LABEL(t_csfloat,t_ratio) +#define CASE_CSFLOAT_SINGLE_FLOAT \ + MATH_DISPATCH2_LABEL(t_csfloat,t_singlefloat) +#define CASE_CSFLOAT_DOUBLE_FLOAT \ + MATH_DISPATCH2_LABEL(t_csfloat,t_doublefloat) +#define CASE_CSFLOAT_LONG_FLOAT \ + MATH_DISPATCH2_LABEL(t_csfloat,t_longfloat) +#define CASE_CSFLOAT_COMPLEX \ + MATH_DISPATCH2_LABEL(t_csfloat,t_complex) +#define CASE_CSFLOAT_CSFLOAT \ + MATH_DISPATCH2_LABEL(t_csfloat,t_csfloat) +#define CASE_CSFLOAT_CDFLOAT \ + MATH_DISPATCH2_LABEL(t_csfloat,t_cdfloat) +#define CASE_CSFLOAT_CLFLOAT \ + MATH_DISPATCH2_LABEL(t_csfloat,t_clfloat) + #define CASE_COMPLEX_FIXNUM \ MATH_DISPATCH2_LABEL(t_complex,t_fixnum) #define CASE_COMPLEX_BIGNUM \ @@ -41,6 +104,12 @@ MATH_DISPATCH2_LABEL(t_complex,t_longfloat) #define CASE_COMPLEX_COMPLEX \ MATH_DISPATCH2_LABEL(t_complex,t_complex) +#define CASE_COMPLEX_CSFLOAT \ + MATH_DISPATCH2_LABEL(t_complex,t_csfloat) +#define CASE_COMPLEX_CDFLOAT \ + MATH_DISPATCH2_LABEL(t_complex,t_cdfloat) +#define CASE_COMPLEX_CLFLOAT \ + MATH_DISPATCH2_LABEL(t_complex,t_clfloat) #define CASE_LONG_FLOAT_FIXNUM \ MATH_DISPATCH2_LABEL(t_longfloat,t_fixnum) @@ -56,6 +125,12 @@ MATH_DISPATCH2_LABEL(t_longfloat,t_longfloat) #define CASE_LONG_FLOAT_COMPLEX \ MATH_DISPATCH2_LABEL(t_longfloat,t_complex) +#define CASE_LONG_FLOAT_CSFLOAT \ + MATH_DISPATCH2_LABEL(t_longfloat,t_csfloat) +#define CASE_LONG_FLOAT_CDFLOAT \ + MATH_DISPATCH2_LABEL(t_longfloat,t_cdfloat) +#define CASE_LONG_FLOAT_CLFLOAT \ + MATH_DISPATCH2_LABEL(t_longfloat,t_clfloat) #define CASE_DOUBLE_FLOAT_FIXNUM \ MATH_DISPATCH2_LABEL(t_doublefloat,t_fixnum) @@ -71,6 +146,12 @@ MATH_DISPATCH2_LABEL(t_doublefloat,t_longfloat) #define CASE_DOUBLE_FLOAT_COMPLEX \ MATH_DISPATCH2_LABEL(t_doublefloat,t_complex) +#define CASE_DOUBLE_FLOAT_CSFLOAT \ + MATH_DISPATCH2_LABEL(t_doublefloat,t_csfloat) +#define CASE_DOUBLE_FLOAT_CDFLOAT \ + MATH_DISPATCH2_LABEL(t_doublefloat,t_cdfloat) +#define CASE_DOUBLE_FLOAT_CLFLOAT \ + MATH_DISPATCH2_LABEL(t_doublefloat,t_clfloat) #define CASE_SINGLE_FLOAT_FIXNUM \ MATH_DISPATCH2_LABEL(t_singlefloat,t_fixnum) @@ -86,6 +167,12 @@ MATH_DISPATCH2_LABEL(t_singlefloat,t_longfloat) #define CASE_SINGLE_FLOAT_COMPLEX \ MATH_DISPATCH2_LABEL(t_singlefloat,t_complex) +#define CASE_SINGLE_FLOAT_CSFLOAT \ + MATH_DISPATCH2_LABEL(t_singlefloat,t_csfloat) +#define CASE_SINGLE_FLOAT_CDFLOAT \ + MATH_DISPATCH2_LABEL(t_singlefloat,t_cdfloat) +#define CASE_SINGLE_FLOAT_CLFLOAT \ + MATH_DISPATCH2_LABEL(t_singlefloat,t_clfloat) #define CASE_RATIO_FIXNUM \ MATH_DISPATCH2_LABEL(t_ratio,t_fixnum) @@ -101,6 +188,12 @@ MATH_DISPATCH2_LABEL(t_ratio,t_longfloat) #define CASE_RATIO_COMPLEX \ MATH_DISPATCH2_LABEL(t_ratio,t_complex) +#define CASE_RATIO_CSFLOAT \ + MATH_DISPATCH2_LABEL(t_ratio,t_csfloat) +#define CASE_RATIO_CDFLOAT \ + MATH_DISPATCH2_LABEL(t_ratio,t_cdfloat) +#define CASE_RATIO_CLFLOAT \ + MATH_DISPATCH2_LABEL(t_ratio,t_clfloat) #define CASE_BIGNUM_FIXNUM \ MATH_DISPATCH2_LABEL(t_bignum,t_fixnum) @@ -116,6 +209,12 @@ MATH_DISPATCH2_LABEL(t_bignum,t_longfloat) #define CASE_BIGNUM_COMPLEX \ MATH_DISPATCH2_LABEL(t_bignum,t_complex) +#define CASE_BIGNUM_CSFLOAT \ + MATH_DISPATCH2_LABEL(t_bignum,t_csfloat) +#define CASE_BIGNUM_CDFLOAT \ + MATH_DISPATCH2_LABEL(t_bignum,t_cdfloat) +#define CASE_BIGNUM_CLFLOAT \ + MATH_DISPATCH2_LABEL(t_bignum,t_clfloat) #define CASE_FIXNUM_FIXNUM \ MATH_DISPATCH2_LABEL(t_fixnum,t_fixnum) @@ -131,6 +230,13 @@ MATH_DISPATCH2_LABEL(t_fixnum,t_longfloat) #define CASE_FIXNUM_COMPLEX \ MATH_DISPATCH2_LABEL(t_fixnum,t_complex) +#define CASE_FIXNUM_CSFLOAT \ + MATH_DISPATCH2_LABEL(t_fixnum,t_csfloat) +#define CASE_FIXNUM_CDFLOAT \ + MATH_DISPATCH2_LABEL(t_fixnum,t_cdfloat) +#define CASE_FIXNUM_CLFLOAT \ + MATH_DISPATCH2_LABEL(t_fixnum,t_clfloat) + #define CASE_UNKNOWN(routine,x,y,type) \ default: DISPATCH2_ERROR: \ if (!ecl_numberp(x)) \