Skip to content

KlausC/GeneratorArrays.jl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GeneratorArrays

Travis Build Status codecov.io

Array view to Generators and Iterators

Effectively provide an AbstractArray view of a generator or iterator.

That means it will be possible to pass a generator to methods expecting arrays. The only exported function is called array and array(g) can be used like a read-only abstract array.

The restrictions to the generators and iterators are that they need to have a size.

Usage:


    using GeneratorArrays

    a = array(x^2 for x in 0:0.01:1)

    a[1] == 0
    a[51] ≈ 0.25
    a[101] == 1


For example you can exploit the binary-search functionality of searchsorted without evaluating the function at all grid points.

    using GeneratorArrays

    n = 10^6
    a = randn(ComplexF64, n);
    p = sortperm(a, by=real);

    # positions in a[p] where numbers in corresponding vertical stripes are found
    res = Int[]
    for h in -3:0.1:3
        x = searchsortedfirst(array(real(a[p[i]]) for i in 1:n), h)
        push!(res, x)
    end
    
    mysin(x) = begin println(x); sin(x); end
    # finding inverse value of a monotonic function
    searchsortedfirst(array(mysin(x) for x in 0:0.001:3.14), 0.5)


    using Primes
    # first prime greater than 10^6 ( note: primes(10^6, 10^6+100) is much better)
    searchsortedfirst(array(prime(i) for i = 5*10^4:10^5), 10^6)

About

View Generators and Iterators as Abstract Arrays

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages