assay
test suite

broadcasting

66 tests · 7 with documented divergences

Test Subject Formula Category DVs
add-scalar-to-row-vector ADD =1+{10,20,30} value
add-scalar-to-column-vector ADD =1+{10;20;30} value
add-scalar-to-2d ADD =1+{10,20;30,40} value
add-row-to-column-outer-product ADD ={1,2,3}+{10;20;30} value
add-column-to-row-outer-product ADD ={1;2;3}+{10,20,30} value
add-row-vectors-same-length ADD ={1,2,3}+{10,20,30} value
add-column-vectors-same-length ADD ={1;2;3}+{10;20;30} value
add-2d-same-shape ADD ={1,2;3,4}+{10,20;30,40} shape
add-row-broadcast-across-2d ADD ={1,2,3}+{10,20,30;40,50,60} value
add-column-broadcast-across-2d ADD ={1;2}+{10,20,30;40,50,60} value
add-row-vectors-mismatched-length ADD ={1,2,3}+{10,20} value
add-column-vectors-mismatched-length ADD ={1;2;3}+{10;20} value
add-2d-incompatible-shape ADD ={1,2;3,4}+{1,2,3;4,5,6} shape
subtract-scalar-from-row MINUS ={10,20,30}-1 value
subtract-row-from-column-outer MINUS ={10;20;30}-{1,2,3} value
multiply-scalar-by-row MULTIPLY =3*{1,2,3} value
multiply-row-by-column-outer MULTIPLY ={1,2,3}*{1;2;3} value
divide-row-by-scalar DIVIDE ={10,20,30}/10 value
divide-scalar-by-row DIVIDE =60/{1,2,3} value
exponent-row-elementwise POW ={1,2,3}^2 value
exponent-scalar-over-row POW =2^{0,1,2,3} value
unary-minus-on-row op:unary- =-{1,-2,3} value
unary-minus-on-2d op:unary- =-{1,2;3,4} value
percent-on-row op:% ={50,100,200}% value
equals-scalar-against-row op:= ={1,2,3}=2 value
less-than-scalar-against-row op:< ={1,2,3}<2 value
greater-equal-row-vs-row op:>= ={1,2,3}>={2,2,2} value
not-equal-outer-product op:<> ={1,2,3}<>{1;2;3} value
comparison-2d-vs-scalar op:> ={1,2;3,4}>2 value
concat-scalar-to-row op:& ="x"&{"a","b","c"} value
concat-row-and-column-outer op:& ={"a","b"}&{"1";"2";"3"} value
concat-row-with-numbers-coerced op:& ="v"&{1,2,3} value 1
range-column-plus-range-row-outer op:+ =A1:A3+C1:E1 value
range-vs-scalar-broadcast op:* =A1:A3*10 value
range-times-range-elementwise op:* =A1:A2*B1:B2 value
len-over-string-row LEN =LEN({"a","bb","ccc"}) value 1
upper-over-string-column UPPER =UPPER({"a";"bc";"def"}) value
abs-over-signed-row ABS =ABS({-1, 2, -3}) value
sqrt-over-row SQRT =SQRT({1, 4, 9, 16}) value
isnumber-over-mixed-row ISNUMBER =ISNUMBER({1,"a",TRUE,3}) value
if-with-array-condition IF =IF({TRUE,FALSE,TRUE}, 1, 2) value
if-with-array-condition-and-array-branches IF =IF({TRUE,FALSE,TRUE}, {10,20,30}, {-1,-2,-3}) value
if-broadcasting-scalar-condition-to-array-branches IF =IF(TRUE, {1,2,3}, {10,20,30}) value
error-in-row-vector-propagates-per-cell op:+ ={1,2,3}+{10,#N/A,30} error-code
scalar-plus-error-value op:+ =1+#DIV/0! error-code
division-by-row-with-zero op:/ =10/{1,0,2} value
error-in-2d-operand-range op:+ =A1:A2+B1:B2 error-code
blank-in-range-treated-as-zero op:+ =A1:A3+10 value
blank-literal-inside-array op:+ ={1,,3}+10 value
concat-blank-coerces-to-empty-string op:& =A1:A3&"!" value
boolean-array-coerced-in-arithmetic op:+ ={TRUE,FALSE,TRUE}+0 value
numeric-strings-in-array-coerced op:+ ={"1","2","3"}+0 value
mixed-type-array-plus-scalar op:+ ={1,"a",TRUE}+0 value
ragged-array-literal lit:array ={1,2;3} value
ragged-literal-in-arithmetic op:+ ={1,2;3}+10 value 2
implicit-intersection-with op:@ =@A1:A3+1 value
implicit-intersection-without feature:implicit-intersection =A1:A3+1 value
virtual-array-top-left-via-implicit-intersection LEN =LEN({"a","bb","ccc"}) value
range-intersects-formula-row-aa1-vs-a1-a3 feature:implicit-intersection =A1:A3 value
range-no-intersection-errors-column-at-off-row LEN =LEN(B1:B3)*1 value
single-explicit-top-left SINGLE =SINGLE({10,20,30}) value 2
index-wraps-multiplication-over-range INDEX =INDEX(A1:A3*10) value
index-wraps-outer-product INDEX =INDEX({1,2,3}+{10;20;30}) value
double-unary-coerces-boolean-row-to-numeric SUMPRODUCT =SUMPRODUCT(--({1,2,3}>1)) value 3
sumproduct-with-two-ranges SUMPRODUCT =SUMPRODUCT(A1:A3, B1:B3) value 2
sumproduct-with-boolean-broadcast SUMPRODUCT =SUMPRODUCT((A1:A3>1)*B1:B3) value 2