File: array14-running-example.fut

package info (click to toggle)
haskell-futhark 0.25.32-3
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 18,236 kB
  • sloc: haskell: 100,484; ansic: 12,100; python: 3,440; yacc: 785; sh: 561; javascript: 558; lisp: 399; makefile: 272
file content (15 lines) | stat: -rw-r--r-- 457 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
-- Example program from the ARRAY'14 paper.
-- ==

def main [k][m][n] (xs: [k]i64, as: [m][n]f64): [][]f64 =
  map  (\(e: (i64, []f64))  ->
         #[unsafe]
         let (i, a) = e in
         let a = loop a = copy a for j < n do
           let a[j] = a[ xs[j] ] * 2.0 in a
         in
         map  (\(j: i64): f64  ->
                if (j < 2*i) && (xs[j] == j)
                then a[j*i] else 0.0
             ) (iota(n))
      ) (zip (iota(m)) as )