/* BUG: Try commenting out the global declaration "real bogus = 0.001;" and you'll get an "uncaught exception Fail" (below), even though bogus is never needed in the program. Why is it required to have globals? [sqr-bug03.diderot:34.49] Error: syntax error at ; [sqr-bug03.diderot:34.43] Error: syntax error; try substituting "[" for ".." [sqr-bug03.diderot:34.39] Error: syntax error; try substituting ":" for "in" [sqr-bug03.diderot:34.29] Error: syntax error; try inserting ":" [sqr-bug03.diderot:30.10] Error: syntax error; try deleting "stabilize ; } } initially" [sqr-bug03.diderot:28.33] Error: syntax error; try deleting ";" [sqr-bug03.diderot:28.7] Error: syntax error; try inserting "vec4" [sqr-bug03.diderot:25.26] Error: syntax error; try deleting "; update { print" [sqr-bug03.diderot:24.1] Error: syntax error; try deleting "strand sqroot ( real val ) { output" uncaught exception Fail [Fail: Error in compiling sqr-bug03.diderot] raised at common/phase-timer.sml:76.50-76.52 raised at common/phase-timer.sml:76.50-76.52 raised at common/phase-timer.sml:76.50-76.52 raised at driver/main.sml:27.39-27.76 */ //real bogus = 0.001; strand sqroot(real val) { output real root = val; update { print("(", val, ") root = ", root, "\n"); root = (root + val/root)/2; if (|root^2 - val|/val < 0.1) stabilize; } } // Strand initialization initially [ sqroot(realIdx) | realIdx in 1..20 ];