Binomial transform: Difference between revisions

Content added Content deleted
(Added C)
Line 552: Line 552:
var b = List.filled(c, null)
var b = List.filled(c, null)
for (n in 0...c) {
for (n in 0...c) {
var sum = Long.zero
b[n] = Long.zero
for (k in 0..n) sum = sum + ULong.binomial(n, k).toLong * a[k]
for (k in 0..n) b[n] = b[n] + ULong.binomial(n, k).toLong * a[k]
b[n] = sum.toNum
}
}
return b
return b
Line 563: Line 562:
var a = List.filled(c, null)
var a = List.filled(c, null)
for (n in 0...c) {
for (n in 0...c) {
var sum = Long.zero
a[n] = Long.zero
for (k in 0..n) {
for (k in 0..n) {
var sign = (-1).pow(n-k)
var sign = ((n - k) % 2 == 0) ? 1 : -1
sum = sum + ULong.binomial(n, k).toLong * b[k] * sign
a[n] = a[n] + ULong.binomial(n, k).toLong * b[k] * sign
a[n] = sum.toNum
}
}
}
}