@@ -77,7 +77,11 @@ def _prec(self, expr):
7777 if dtype is None or np .issubdtype (dtype , np .integer ):
7878 real = any (isinstance (i , Float ) for i in expr .atoms ())
7979 if real :
80- return self .dtype
80+ try :
81+ return np .promote_types (self .dtype , np .float32 ).type
82+ except np .exceptions .DTypePromotionError :
83+ # Corner cases, e.g. Void, cannot (shouldn't) be promoted
84+ return self .dtype
8185 else :
8286 return dtype or self .dtype
8387 else :
@@ -89,9 +93,9 @@ def prec_literal(self, expr):
8993 def func_literal (self , expr ):
9094 return self ._func_litterals .get (self ._prec (expr ), '' )
9195
92- def func_prefix (self , expr , abs = False ):
96+ def func_prefix (self , expr , mfunc = False ):
9397 prefix = self ._func_prefix .get (self ._prec (expr ), '' )
94- if abs :
98+ if mfunc :
9599 return prefix
96100 else :
97101 return '' if prefix == 'f' else prefix
@@ -235,7 +239,7 @@ def _print_Mul(self, expr):
235239
236240 def _print_fmath_func (self , name , expr ):
237241 args = "," .join ([self ._print (i ) for i in expr .args ])
238- func = f'{ self .func_prefix (expr , abs = True )} { name } { self .func_literal (expr )} '
242+ func = f'{ self .func_prefix (expr , mfunc = True )} { name } { self .func_literal (expr )} '
239243 return f"{ self ._ns } { func } ({ args } )"
240244
241245 def _print_Min (self , expr ):
0 commit comments