@@ -203,24 +203,51 @@ function printcoefficient(io::IO, a::Rational{T}, j, mimetype::MIME"text/latex")
203
203
end
204
204
205
205
# print complex numbers with parentheses as needed
206
- function printcoefficient (io:: IO , pj:: Complex{T} , j, mimetype) where {T}
206
+ function printcoefficient (io:: IO , pj:: S , j, mimetype) where {T,S <: Complex{T} }
207
207
208
- hasreal = abs (real (pj)) > 0 || isnan (real (pj)) || isinf (real (pj))
209
- hasimag = abs (imag (pj)) > 0 || isnan (imag (pj)) || isinf (imag (pj))
208
+ (a,b) = reim (pj)
209
+ hasreal = ! iszero (a) || isnan (a) || isinf (a)
210
+ hasimag = ! iszero (b) || isnan (b) || isinf (b)
210
211
211
212
if hasreal && hasimag
212
- Base. show_unquoted (io, pj, 0 , Base. operator_precedence (:* ))
213
+ print (io, " (" )
214
+ print (io, a)
215
+
216
+ # print b
217
+ if isone (b) || isone (- b)
218
+ if hasneg (S) && b < 0
219
+ print (io, showop (mimetype, " -" ))
220
+ else
221
+ print (io, showop (mimetype, " +" ))
222
+ end
223
+ else
224
+ if hasneg (S) && b < 0
225
+ print (io, showop (mimetype, " -" ))
226
+ (showone (S) || ! isone (- b)) && print (io, - b)
227
+ else
228
+ print (io, showop (mimetype," +" ))
229
+ print (io, b)
230
+ end
231
+ (isnan (b) || isinf (b)) && print (io, showop (mimetype, " *" ))
232
+ end
233
+
234
+ print (io, imagsymbol (mimetype))
235
+ print (io, " )" )
236
+
213
237
elseif hasreal
214
- a = real (pj)
215
- (j== 0 || showone (T) || a != one (T)) && printcoefficient (io, a, j, mimetype)
238
+
239
+ (iszero (j) || showone (T) || isone (a)) && printcoefficient (io, a, j, mimetype)
240
+
216
241
elseif hasimag
217
- b = imag (pj)
218
- (showone (T) || b != one (T)) && printcoefficient (io, b, j, mimetype)
219
- (isnan (imag (pj)) || isinf (imag (pj))) && print (io, showop (mimetype, " *" ))
220
- print (io, im)
221
- else
222
- return nothing
242
+
243
+ (showone (T) || ! isone (b)) && printcoefficient (io, b, j, mimetype)
244
+ (isnan (b) || isinf (b)) && print (io, showop (mimetype, " *" ))
245
+ print (io, imagsymbol (mimetype))
246
+
223
247
end
248
+
249
+ return nothing
250
+
224
251
end
225
252
226
253
# # show exponent
@@ -252,3 +279,6 @@ function unicode_subscript(io, j)
252
279
print (io, a[Int (i)- 44 ])
253
280
end
254
281
end
282
+
283
+ imagsymbol (:: Any ) = " im"
284
+ imagsymbol (:: MIME"text/latex" ) = " i"
0 commit comments