## Re: [xsl] A super-efficient way to compute the sum of A[i] * B[i] for i=1 to n?

 Subject: Re: [xsl] A super-efficient way to compute the sum of A[i] * B[i] for i=1 to n? From: "Martin Honnen martin.honnen@xxxxxx" Date: Sat, 9 May 2020 12:18:48 -0000
Am 09.05.2020 um 13:59 schrieb Costello, Roger L. costello@xxxxxxxxx:
Hi Folks,

I need a super-efficient way to compute the sum of A[i] * B[i] for i=1 to
n.

For example, suppose A is this:

```<row>
<col>0.9</col>
<col>0.3</col>
</row>```

and B is this:

```<row>
<col>0.2</col>
<col>0.8</col>
</row>```

I want to compute:

(0.9 * 0.2) + (0.3 * 0.8)

Here's one way to do it:

sum(for \$i in 1 to count(\$A/col) return number(\$A/col[\$i]) *
number(\$B/col[\$i]))

I suspect that is not the most efficient approach.

What is the most efficient approach? I will be doing hundreds of thousands
of these computations, so I want to use the most efficient approach.

```You can express it a bit more nicely in XPath 3 with higher-order
functions as```

sum(for-each-pair(\$A/col, \$B/col, function(\$a, \$b) { \$a * \$b}))

but whether that performs better or worse is something you can only measure.