#!/bin/env lyng
/*
    Calculate the limit of Sum( f(n) )
    until it reaches asymptotic limit 0.00001% change
    return null or found limit
*/
fun findSumLimit(f) {
    var sum = 0.0
    for( n in 1..1000000 ) {
        val s0 = sum
        sum += f(n)
        if( abs(sum - s0) / abs(sum) < 1.0e-6 ) {
            println("limit reached after "+n+" rounds")
            break sum
        }
    }
    else {
        println("limit not reached")
        null
    }
}

val limit = findSumLimit { n -> 1.0/n/n }

println("Result: "+limit)
