include "NSLog.incl" begin globals long total = 0 long prim = 0 long maxPeri = 0 end globals void local fn newTri( s0 as long, s1 as long, s2 as long ) long p = s0 + s1 + s2 if ( p <= maxPeri ) prim++ total += maxPeri / p fn newTri( s0 - 2 * s1 + 2 * s2, 2 * s0 - s1 + 2 * s2, 2 * s0 - 2 * s1 + 3 * s2 ) fn newTri( s0 + 2 * s1 + 2 * s2, 2 * s0 + s1 + 2 * s2, 2 * s0 + 2 * s1 + 3 * s2 ) fn newTri( -s0 + 2 * s1 + 2 * s2, -2 * s0 + s1 + 2 * s2, -2 * s0 + 2 * s1 + 3 * s2 ) end if end fn void local fn DoIt int i = 2 maxPeri = 100 while ( maxPeri <= 10000000000 ) prim = 0 total = 0 fn newTri( 3, 4, 5 ) NSLog( @"M^%2d %12ld %12ld %-11ld", i, maxPeri, total, prim ) : i++ maxPeri *= 10 wend end fn NSLog( @"below triples primitive" ) CFTimeInterval t : t = fn CACurrentMediaTime fn DoIt NsLog( @"\nCompute time: %.3f ms", (fn CACurrentMediaTime-t)*1000 ) HandleEvents