@@ -58,6 +58,8 @@ def __init__(self, codegen_state, fortran_abi=False, type_inf_mapper=None):
58
58
self .codegen_state .callables_table )
59
59
self .type_inf_mapper = type_inf_mapper
60
60
61
+ self .allow_complex = codegen_state .allow_complex
62
+
61
63
self .fortran_abi = fortran_abi
62
64
63
65
# {{{ helpers
@@ -512,10 +514,23 @@ def complex_type_name(self, dtype):
512
514
raise LoopyError ("could not map '%s' to a complex type name." % dtype )
513
515
514
516
def map_quotient (self , expr , type_context ):
515
- num = self .rec (expr .numerator , type_context )
516
-
517
- # analogous to ^{-1}
518
- denom = self .rec (expr .denominator , type_context )
517
+ def base_impl (expr , type_context , num_tgt_dtype = None ):
518
+ num = self .rec (expr .numerator , type_context , num_tgt_dtype )
519
+
520
+ # analogous to ^{-1}
521
+ denom = self .rec (expr .denominator , type_context )
522
+
523
+ if (n_dtype .kind not in "fc"
524
+ and d_dtype .kind not in "fc" ):
525
+ # must both be integers
526
+ if type_context == "f" :
527
+ num = var ("(float) " )(num )
528
+ denom = var ("(float) " )(denom )
529
+ elif type_context == "d" :
530
+ num = var ("(double) " )(num )
531
+ denom = var ("(double) " )(denom )
532
+
533
+ return type (expr )(num , denom )
519
534
520
535
n_dtype = self .infer_type (expr .numerator ).numpy_dtype
521
536
d_dtype = self .infer_type (expr .denominator ).numpy_dtype
0 commit comments