@@ -290,3 +290,70 @@ function eadd(
290
290
C = GBMatrix {t} (size (A))
291
291
return eadd! (C, A, B, op; mask, accum, desc)
292
292
end
293
+
294
+ # Elementwise Broadcasts
295
+ # ######################
296
+
297
+ # default argument is missing to avoid `nothing` picking up the default default :).
298
+ function Base. broadcasted (:: typeof (∪ ), A:: GBArray , B:: GBArray )
299
+ eadd (A, B, missing )
300
+ end
301
+
302
+ # default argument is missing to avoid `nothing` picking up the default default :).
303
+ function Base. broadcasted (:: typeof (∩ ), A:: GBArray , B:: GBArray )
304
+ emul (A, B, missing )
305
+ end
306
+
307
+ function Base. broadcasted (:: typeof (* ), A:: GBArray , B:: GBArray )
308
+ emul (A, B, BinaryOps. TIMES)
309
+ end
310
+
311
+ function Base. broadcasted (:: typeof (+ ), A:: GBArray , B:: GBArray )
312
+ eadd (A, B, BinaryOps. PLUS)
313
+ end
314
+
315
+ function Base. broadcasted (:: typeof (- ), A:: GBArray , B:: GBArray )
316
+ eadd (A, B, BinaryOps. MINUS)
317
+ end
318
+
319
+ function Base. broadcasted (:: typeof (/ ), A:: GBArray , B:: GBArray )
320
+ emul (A, B, BinaryOps. DIV)
321
+ end
322
+
323
+ # TODO : fix tricky gotchas, this will do type-specific (ie sometimes integer) division.
324
+ function Base. broadcasted (:: typeof (/ ), A:: GBArray , B:: GBArray )
325
+ emul (A, B, BinaryOps. DIV)
326
+ end
327
+
328
+ # TODO : fix tricky gotchas, this will do type-specific (ie sometimes integer) division.
329
+ function Base. broadcasted (:: typeof (\ ), A:: GBArray , B:: GBArray )
330
+ emul (A, B, BinaryOps. RDIV)
331
+ end
332
+
333
+ function Base. broadcasted (:: typeof (== ), A:: GBArray , B:: GBArray )
334
+ eadd (A, B, BinaryOps. EQ)
335
+ end
336
+
337
+ function Base. broadcasted (:: typeof (!= ), A:: GBArray , B:: GBArray )
338
+ eadd (A, B, BinaryOps. NE)
339
+ end
340
+
341
+ function Base. broadcasted (:: typeof (< ), A:: GBArray , B:: GBArray )
342
+ eadd (A, B, BinaryOps. LT)
343
+ end
344
+
345
+ function Base. broadcasted (:: typeof (> ), A:: GBArray , B:: GBArray )
346
+ eadd (A, B, BinaryOps. GT)
347
+ end
348
+
349
+ function Base. broadcasted (:: typeof (<= ), A:: GBArray , B:: GBArray )
350
+ eadd (A, B, BinaryOps. LE)
351
+ end
352
+
353
+ function Base. broadcasted (:: typeof (>= ), A:: GBArray , B:: GBArray )
354
+ eadd (A, B, BinaryOps. GE)
355
+ end
356
+
357
+ function Base. broadcasted (:: typeof (^ ), A:: GBArray , B:: GBArray )
358
+ emul (A, B, BinaryOps. POW)
359
+ end
0 commit comments