--- source: src/main.rs expression: parsed input_file: test-data/lua5.1-tests/math.lua --- [ Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"testing numbers and math lib\"", ), ], ], ), ], line: 1, }, DoBlock( CodeBlock { start: 5, code: [ Variable { names: [ ( "a", false, ), ( "b", false, ), ( "c", false, ), ], values: [ [ Symbol( "\"2\"", ), ], [ Symbol( "\" 3e0 \"", ), ], [ Symbol( "\" 10 \"", ), ], ], line: 4, column: 12, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 5, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 5, }, Operator( ( "==", true, ), ), Symbol( "5", ), Operator( ( "and", true, ), ), Operator( ( "-", false, ), ), Ident { expr: [ Symbol( "b", ), ], line: 5, }, Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 5, }, Operator( ( "+", true, ), ), Symbol( "\"2\"", ), Operator( ( "==", true, ), ), Symbol( "5", ), Operator( ( "and", true, ), ), Symbol( "\"10\"", ), Operator( ( "-", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 5, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 4, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 6, }, ], ], ), ], line: 6, }, Operator( ( "==", true, ), ), Symbol( "'string'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 6, }, ], ], ), ], line: 6, }, Operator( ( "==", true, ), ), Symbol( "'string'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 6, }, ], ], ), ], line: 6, }, Operator( ( "==", true, ), ), Symbol( "'string'", ), ], ], ), ], line: 5, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 7, }, Operator( ( "==", true, ), ), Symbol( "\"2\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 7, }, Operator( ( "==", true, ), ), Symbol( "\" 3e0 \"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 7, }, Operator( ( "==", true, ), ), Symbol( "\" 10 \"", ), Operator( ( "and", true, ), ), Operator( ( "-", false, ), ), Ident { expr: [ Symbol( "c", ), ], line: 7, }, Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Symbol( "\" 10 \"", ), ], ], ), ], line: 6, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 8, }, Operator( ( "%", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 8, }, Operator( ( "==", true, ), ), Symbol( "0", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 8, }, Operator( ( "^", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 8, }, Operator( ( "==", true, ), ), Symbol( "8", ), ], ], ), ], line: 7, }, ], end: 101, }, ), DoBlock( CodeBlock { start: 102, code: [ Variable { names: [ ( "a", false, ), ( "b", false, ), ], values: [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "modf", ), Call( [ [ Symbol( "3.5", ), ], ], ), ], line: 13, }, ], ], line: 13, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 14, }, Operator( ( "==", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 14, }, Operator( ( "==", true, ), ), Symbol( "0.5", ), ], ], ), ], line: 13, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "huge", ), ], line: 15, }, Operator( ( ">", true, ), ), Symbol( "10e30", ), ], ], ), ], line: 14, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "-", false, ), ), Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "huge", ), ], line: 16, }, Operator( ( "<", true, ), ), Operator( ( "-", false, ), ), Symbol( "10e30", ), ], ], ), ], line: 15, }, ], end: 142, }, ), Function { local: false, name: [ Symbol( "f", ), ], args: [ "...", ], body: CodeBlock { start: 147, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "select", ), Call( [ [ Symbol( "'#'", ), ], [ Symbol( "...", ), ], ], ), ], line: 20, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], body: CodeBlock { start: 10, code: [ Return( Some( [ [ Expr( [ Symbol( "...", ), ], ), Ident { expr: [], line: 21, }, ], ], ), ), ], end: 15, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 15, code: [ Return( Some( [ [ Symbol( "\"***\"", ), ], ], ), ), ], end: 18, }, next: None, line: 24, column: 1, }, ), line: 24, column: 1, }, ], end: 166, }, line: 25, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "tonumber", ), Call( [ [ Table { data: [], line: 27, column: 5, }, ], ], ), ], line: 27, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 25, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "tonumber", ), Call( [ [ Symbol( "'+0.01'", ), ], ], ), ], line: 28, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "/", true, ), ), Symbol( "100", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "tonumber", ), Call( [ [ Symbol( "'+.01'", ), ], ], ), ], line: 28, }, Operator( ( "==", true, ), ), Symbol( "0.01", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "tonumber", ), Call( [ [ Symbol( "'.01'", ), ], ], ), ], line: 28, }, Operator( ( "==", true, ), ), Symbol( "0.01", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "tonumber", ), Call( [ [ Symbol( "'-1.'", ), ], ], ), ], line: 29, }, Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "tonumber", ), Call( [ [ Symbol( "'+1.'", ), ], ], ), ], line: 29, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 27, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "tonumber", ), Call( [ [ Symbol( "'+ 0.01'", ), ], ], ), ], line: 31, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "tonumber", ), Call( [ [ Symbol( "'+.e1'", ), ], ], ), ], line: 31, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "tonumber", ), Call( [ [ Symbol( "'1e'", ), ], ], ), ], line: 31, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "tonumber", ), Call( [ [ Symbol( "'1.0e+'", ), ], ], ), ], line: 32, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "tonumber", ), Call( [ [ Symbol( "'.'", ), ], ], ), ], line: 32, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 30, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "tonumber", ), Call( [ [ Symbol( "'-12'", ), ], ], ), ], line: 34, }, Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Symbol( "10", ), Operator( ( "-", true, ), ), Symbol( "2", ), ], ], ), ], line: 33, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "tonumber", ), Call( [ [ Symbol( "'-1.2e2'", ), ], ], ), ], line: 35, }, Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Operator( ( "-", true, ), ), Operator( ( "-", false, ), ), Symbol( "120", ), ], ], ), ], line: 34, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Ident { expr: [ Symbol( "tonumber", ), Call( [ [ Symbol( "'1 a'", ), ], ], ), ], line: 36, }, ], ], ), ], line: 36, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 35, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Ident { expr: [ Symbol( "tonumber", ), Call( [ [ Symbol( "'e1'", ), ], ], ), ], line: 37, }, ], ], ), ], line: 37, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 36, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Ident { expr: [ Symbol( "tonumber", ), Call( [ [ Symbol( "'e 1'", ), ], ], ), ], line: 38, }, ], ], ), ], line: 38, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 37, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Ident { expr: [ Symbol( "tonumber", ), Call( [ [ Symbol( "' 3.4.5 '", ), ], ], ), ], line: 39, }, ], ], ), ], line: 39, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 38, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Ident { expr: [ Symbol( "tonumber", ), Call( [ [ Symbol( "''", ), ], ], ), ], line: 40, }, ], ], ), ], line: 40, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 39, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Ident { expr: [ Symbol( "tonumber", ), Call( [ [ Symbol( "''", ), ], [ Symbol( "8", ), ], ], ), ], line: 41, }, ], ], ), ], line: 41, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 40, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Ident { expr: [ Symbol( "tonumber", ), Call( [ [ Symbol( "' '", ), ], ], ), ], line: 42, }, ], ], ), ], line: 42, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 41, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Ident { expr: [ Symbol( "tonumber", ), Call( [ [ Symbol( "' '", ), ], [ Symbol( "9", ), ], ], ), ], line: 43, }, ], ], ), ], line: 43, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 42, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Ident { expr: [ Symbol( "tonumber", ), Call( [ [ Symbol( "'99'", ), ], [ Symbol( "8", ), ], ], ), ], line: 44, }, ], ], ), ], line: 44, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 43, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "tonumber", ), Call( [ [ Symbol( "' 1010 '", ), ], [ Symbol( "2", ), ], ], ), ], line: 45, }, Operator( ( "==", true, ), ), Symbol( "10", ), ], ], ), ], line: 44, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "tonumber", ), Call( [ [ Symbol( "'10'", ), ], [ Symbol( "36", ), ], ], ), ], line: 46, }, Operator( ( "==", true, ), ), Symbol( "36", ), ], ], ), ], line: 45, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "tonumber", ), Call( [ [ Symbol( "'fFfa'", ), ], [ Symbol( "15", ), ], ], ), ], line: 49, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 46, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "tonumber", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "rep", ), Call( [ [ Symbol( "'1'", ), ], [ Symbol( "32", ), ], ], ), ], line: 51, }, ], [ Symbol( "2", ), ], ], ), ], line: 51, }, Operator( ( "+", true, ), ), Symbol( "1", ), Operator( ( "==", true, ), ), Symbol( "2", ), Operator( ( "^", true, ), ), Symbol( "32", ), ], ], ), ], line: 49, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "tonumber", ), Call( [ [ Symbol( "'ffffFFFF'", ), ], [ Symbol( "16", ), ], ], ), ], line: 53, }, Operator( ( "+", true, ), ), Symbol( "1", ), Operator( ( "==", true, ), ), Symbol( "2", ), Operator( ( "^", true, ), ), Symbol( "32", ), ], ], ), ], line: 51, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "1.1", ), Operator( ( "==", true, ), ), Symbol( "1.0", ), Operator( ( "+", true, ), ), Symbol( "0.1", ), ], ], ), ], line: 53, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "100.0", ), Operator( ( "==", true, ), ), Symbol( "1e2", ), Operator( ( "and", true, ), ), Symbol( "0.01", ), Operator( ( "==", true, ), ), Symbol( "1e-2", ), ], ], ), ], line: 55, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "1111111111111111", ), Operator( ( "-", true, ), ), Symbol( "1111111111111110", ), Operator( ( "==", true, ), ), Symbol( "1000.00e-03", ), ], ], ), ], line: 56, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "1.1", ), Operator( ( "==", true, ), ), Symbol( "'1.'", ), Operator( ( "+", true, ), ), Symbol( "'.1'", ), ], ], ), ], line: 57, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "'1111111111111111'", ), Operator( ( "-", true, ), ), Symbol( "'1111111111111110'", ), Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "tonumber", ), Call( [ [ Symbol( "\" +0.001e+3 \\n\\t\"", ), ], ], ), ], line: 60, }, ], ], ), ], line: 59, }, Function { local: false, name: [ Symbol( "eq", ), ], args: [ "a", "b", "limit", ], body: CodeBlock { start: 491, code: [ IfStatement { condition: [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "limit", ), ], line: 63, }, ], body: CodeBlock { start: 4, code: [ Alter { names: [ Ident { expr: [ Symbol( "limit", ), ], line: 63, }, ], values: [ [ Symbol( "10e-10", ), ], ], line: 63, column: 3, }, ], end: 8, }, next: None, line: 63, column: 8, }, Return( Some( [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "abs", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 64, }, Operator( ( "-", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 64, }, ], ], ), ], line: 64, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "limit", ), ], line: 64, }, ], ], ), ), ], end: 511, }, line: 65, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "0.1e-30", ), Operator( ( ">", true, ), ), Symbol( "0.9e-31", ), Operator( ( "and", true, ), ), Symbol( "0.9e30", ), Operator( ( "<", true, ), ), Symbol( "0.1e31", ), ], ], ), ], line: 65, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "0.123456", ), Operator( ( ">", true, ), ), Symbol( "0.123455", ), ], ], ), ], line: 67, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "tonumber", ), Call( [ [ Symbol( "'+1.23E30'", ), ], ], ), ], line: 71, }, Operator( ( "==", true, ), ), Symbol( "1.23", ), Operator( ( "*", true, ), ), Symbol( "10", ), Operator( ( "^", true, ), ), Symbol( "30", ), ], ], ), ], line: 69, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Expr( [ Symbol( "1", ), Operator( ( "<", true, ), ), Symbol( "1", ), ], ), Ident { expr: [], line: 74, }, Operator( ( "and", true, ), ), Expr( [ Symbol( "1", ), Operator( ( "<", true, ), ), Symbol( "2", ), ], ), Ident { expr: [], line: 74, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Expr( [ Symbol( "2", ), Operator( ( "<", true, ), ), Symbol( "1", ), ], ), Ident { expr: [], line: 74, }, ], ], ), ], line: 71, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Expr( [ Symbol( "'a'", ), Operator( ( "<", true, ), ), Symbol( "'a'", ), ], ), Ident { expr: [], line: 75, }, Operator( ( "and", true, ), ), Expr( [ Symbol( "'a'", ), Operator( ( "<", true, ), ), Symbol( "'b'", ), ], ), Ident { expr: [], line: 75, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Expr( [ Symbol( "'b'", ), Operator( ( "<", true, ), ), Symbol( "'a'", ), ], ), Ident { expr: [], line: 75, }, ], ], ), ], line: 74, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Symbol( "1", ), Operator( ( "<=", true, ), ), Symbol( "1", ), ], ), Ident { expr: [], line: 76, }, Operator( ( "and", true, ), ), Expr( [ Symbol( "1", ), Operator( ( "<=", true, ), ), Symbol( "2", ), ], ), Ident { expr: [], line: 76, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Expr( [ Symbol( "2", ), Operator( ( "<=", true, ), ), Symbol( "1", ), ], ), Ident { expr: [], line: 76, }, ], ], ), ], line: 75, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Symbol( "'a'", ), Operator( ( "<=", true, ), ), Symbol( "'a'", ), ], ), Ident { expr: [], line: 77, }, Operator( ( "and", true, ), ), Expr( [ Symbol( "'a'", ), Operator( ( "<=", true, ), ), Symbol( "'b'", ), ], ), Ident { expr: [], line: 77, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Expr( [ Symbol( "'b'", ), Operator( ( "<=", true, ), ), Symbol( "'a'", ), ], ), Ident { expr: [], line: 77, }, ], ], ), ], line: 76, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Expr( [ Symbol( "1", ), Operator( ( ">", true, ), ), Symbol( "1", ), ], ), Ident { expr: [], line: 78, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Expr( [ Symbol( "1", ), Operator( ( ">", true, ), ), Symbol( "2", ), ], ), Ident { expr: [], line: 78, }, Operator( ( "and", true, ), ), Expr( [ Symbol( "2", ), Operator( ( ">", true, ), ), Symbol( "1", ), ], ), Ident { expr: [], line: 78, }, ], ], ), ], line: 77, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Expr( [ Symbol( "'a'", ), Operator( ( ">", true, ), ), Symbol( "'a'", ), ], ), Ident { expr: [], line: 79, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Expr( [ Symbol( "'a'", ), Operator( ( ">", true, ), ), Symbol( "'b'", ), ], ), Ident { expr: [], line: 79, }, Operator( ( "and", true, ), ), Expr( [ Symbol( "'b'", ), Operator( ( ">", true, ), ), Symbol( "'a'", ), ], ), Ident { expr: [], line: 79, }, ], ], ), ], line: 78, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Symbol( "1", ), Operator( ( ">=", true, ), ), Symbol( "1", ), ], ), Ident { expr: [], line: 80, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Expr( [ Symbol( "1", ), Operator( ( ">=", true, ), ), Symbol( "2", ), ], ), Ident { expr: [], line: 80, }, Operator( ( "and", true, ), ), Expr( [ Symbol( "2", ), Operator( ( ">=", true, ), ), Symbol( "1", ), ], ), Ident { expr: [], line: 80, }, ], ], ), ], line: 79, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Symbol( "'a'", ), Operator( ( ">=", true, ), ), Symbol( "'a'", ), ], ), Ident { expr: [], line: 81, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Expr( [ Symbol( "'a'", ), Operator( ( ">=", true, ), ), Symbol( "'b'", ), ], ), Ident { expr: [], line: 81, }, Operator( ( "and", true, ), ), Expr( [ Symbol( "'b'", ), Operator( ( ">=", true, ), ), Symbol( "'a'", ), ], ), Ident { expr: [], line: 81, }, ], ], ), ], line: 80, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "4", ), Operator( ( "%", true, ), ), Symbol( "3", ), Operator( ( "==", true, ), ), Symbol( "2", ), ], ], ), ], line: 81, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "4", ), Operator( ( "%", true, ), ), Operator( ( "-", false, ), ), Symbol( "3", ), Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Symbol( "2", ), ], ], ), ], line: 84, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "pi", ), ], line: 86, }, Operator( ( "-", true, ), ), Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "pi", ), ], line: 86, }, Operator( ( "%", true, ), ), Symbol( "1", ), Operator( ( "==", true, ), ), Symbol( "3", ), ], ], ), ], line: 85, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "pi", ), ], line: 87, }, Operator( ( "-", true, ), ), Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "pi", ), ], line: 87, }, Operator( ( "%", true, ), ), Symbol( "0.001", ), Operator( ( "==", true, ), ), Symbol( "3.141", ), ], ], ), ], line: 86, }, Function { local: true, name: [ Symbol( "testbit", ), ], args: [ "a", "n", ], body: CodeBlock { start: 767, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 90, }, Operator( ( "/", true, ), ), Symbol( "2", ), Operator( ( "^", true, ), ), Ident { expr: [ Symbol( "n", ), ], line: 90, }, Operator( ( "%", true, ), ), Symbol( "2", ), Operator( ( ">=", true, ), ), Symbol( "1", ), ], ], ), ), ], end: 778, }, line: 91, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "eq", ), Call( [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "sin", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "9.8", ), ], ], ), ], line: 93, }, Operator( ( "^", true, ), ), Symbol( "2", ), Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "cos", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "9.8", ), ], ], ), ], line: 93, }, Operator( ( "^", true, ), ), Symbol( "2", ), ], [ Symbol( "1", ), ], ], ), ], line: 93, }, ], ], ), ], line: 91, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "eq", ), Call( [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "tan", ), Call( [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "pi", ), ], line: 94, }, Operator( ( "/", true, ), ), Symbol( "4", ), ], ], ), ], line: 94, }, ], [ Symbol( "1", ), ], ], ), ], line: 94, }, ], ], ), ], line: 93, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "eq", ), Call( [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "sin", ), Call( [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "pi", ), ], line: 95, }, Operator( ( "/", true, ), ), Symbol( "2", ), ], ], ), ], line: 95, }, ], [ Symbol( "1", ), ], ], ), ], line: 95, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "eq", ), Call( [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "cos", ), Call( [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "pi", ), ], line: 95, }, Operator( ( "/", true, ), ), Symbol( "2", ), ], ], ), ], line: 95, }, ], [ Symbol( "0", ), ], ], ), ], line: 95, }, ], ], ), ], line: 94, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "eq", ), Call( [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "atan", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 96, }, ], [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "pi", ), ], line: 96, }, Operator( ( "/", true, ), ), Symbol( "4", ), ], ], ), ], line: 96, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "eq", ), Call( [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "acos", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 96, }, ], [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "pi", ), ], line: 96, }, Operator( ( "/", true, ), ), Symbol( "2", ), ], ], ), ], line: 96, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "eq", ), Call( [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "asin", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 97, }, ], [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "pi", ), ], line: 97, }, Operator( ( "/", true, ), ), Symbol( "2", ), ], ], ), ], line: 96, }, ], ], ), ], line: 95, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "eq", ), Call( [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "deg", ), Call( [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "pi", ), ], line: 98, }, Operator( ( "/", true, ), ), Symbol( "2", ), ], ], ), ], line: 98, }, ], [ Symbol( "90", ), ], ], ), ], line: 98, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "eq", ), Call( [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "rad", ), Call( [ [ Symbol( "90", ), ], ], ), ], line: 98, }, ], [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "pi", ), ], line: 98, }, Operator( ( "/", true, ), ), Symbol( "2", ), ], ], ), ], line: 98, }, ], ], ), ], line: 97, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "abs", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "10", ), ], ], ), ], line: 99, }, Operator( ( "==", true, ), ), Symbol( "10", ), ], ], ), ], line: 98, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "eq", ), Call( [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "atan2", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "0", ), ], ], ), ], line: 100, }, ], [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "pi", ), ], line: 100, }, Operator( ( "/", true, ), ), Symbol( "2", ), ], ], ), ], line: 100, }, ], ], ), ], line: 99, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "ceil", ), Call( [ [ Symbol( "4.5", ), ], ], ), ], line: 101, }, Operator( ( "==", true, ), ), Symbol( "5.0", ), ], ], ), ], line: 100, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "floor", ), Call( [ [ Symbol( "4.5", ), ], ], ), ], line: 102, }, Operator( ( "==", true, ), ), Symbol( "4.0", ), ], ], ), ], line: 101, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "mod", ), Call( [ [ Symbol( "10", ), ], [ Symbol( "3", ), ], ], ), ], line: 103, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 102, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "eq", ), Call( [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "sqrt", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 104, }, Operator( ( "^", true, ), ), Symbol( "2", ), ], [ Symbol( "10", ), ], ], ), ], line: 104, }, ], ], ), ], line: 103, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "eq", ), Call( [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "log10", ), Call( [ [ Symbol( "2", ), ], ], ), ], line: 105, }, ], [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "log", ), Call( [ [ Symbol( "2", ), ], ], ), ], line: 105, }, Operator( ( "/", true, ), ), Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "log", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 105, }, ], ], ), ], line: 105, }, ], ], ), ], line: 104, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "eq", ), Call( [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "exp", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 106, }, ], [ Symbol( "1", ), ], ], ), ], line: 106, }, ], ], ), ], line: 105, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "eq", ), Call( [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "sin", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 107, }, ], [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "sin", ), Call( [ [ Symbol( "10", ), Operator( ( "%", true, ), ), Expr( [ Symbol( "2", ), Operator( ( "*", true, ), ), Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "pi", ), ], line: 107, }, ], ), Ident { expr: [], line: 107, }, ], ], ), ], line: 107, }, ], ], ), ], line: 107, }, ], ], ), ], line: 106, }, Variable { names: [ ( "v", false, ), ( "e", false, ), ], values: [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "frexp", ), Call( [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "pi", ), ], line: 108, }, ], ], ), ], line: 108, }, ], ], line: 108, column: 13, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "eq", ), Call( [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "ldexp", ), Call( [ [ Ident { expr: [ Symbol( "v", ), ], line: 109, }, ], [ Ident { expr: [ Symbol( "e", ), ], line: 109, }, ], ], ), ], line: 109, }, ], [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "pi", ), ], line: 109, }, ], ], ), ], line: 109, }, ], ], ), ], line: 108, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "eq", ), Call( [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "tanh", ), Call( [ [ Symbol( "3.5", ), ], ], ), ], line: 111, }, ], [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "sinh", ), Call( [ [ Symbol( "3.5", ), ], ], ), ], line: 111, }, Operator( ( "/", true, ), ), Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "cosh", ), Call( [ [ Symbol( "3.5", ), ], ], ), ], line: 111, }, ], ], ), ], line: 111, }, ], ], ), ], line: 109, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "tonumber", ), Call( [ [ Symbol( "' 1.3e-2 '", ), ], ], ), ], line: 113, }, Operator( ( "==", true, ), ), Symbol( "1.3e-2", ), ], ], ), ], line: 111, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "tonumber", ), Call( [ [ Symbol( "' -1.00000000000001 '", ), ], ], ), ], line: 114, }, Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Symbol( "1.00000000000001", ), ], ], ), ], line: 113, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "8388609", ), Operator( ( "+", true, ), ), Operator( ( "-", false, ), ), Symbol( "8388609", ), Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 114, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "8388608", ), Operator( ( "+", true, ), ), Operator( ( "-", false, ), ), Symbol( "8388608", ), Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 118, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "8388607", ), Operator( ( "+", true, ), ), Operator( ( "-", false, ), ), Symbol( "8388607", ), Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 119, }, IfStatement { condition: [ Ident { expr: [ Symbol( "rawget", ), Call( [ [ Ident { expr: [ Symbol( "_G", ), ], line: 122, }, ], [ Symbol( "\"_soft\"", ), ], ], ), ], line: 122, }, ], body: CodeBlock { start: 1202, code: [ Return( None, ), ], end: 1204, }, next: None, line: 122, column: 10, }, Alter { names: [ Ident { expr: [ Symbol( "f", ), ], line: 122, }, ], values: [ [ Ident { expr: [ Symbol( "io", ), Symbol( ".", ), Symbol( "tmpfile", ), Call( [], ), ], line: 124, }, ], ], line: 124, column: 7, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 125, }, ], ], ), ], line: 124, }, Ident { expr: [ Symbol( "f", ), Symbol( ":", ), Symbol( "write", ), Call( [ [ Symbol( "\"a = {\"", ), ], ], ), ], line: 125, }, Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 126, }, ], values: [ [ Symbol( "1", ), ], ], line: 128, column: 0, }, RepeatLoop { condition: [ Ident { expr: [ Symbol( "i", ), ], line: 131, }, Operator( ( ">", true, ), ), Symbol( "1000", ), ], body: CodeBlock { start: 1225, code: [ Ident { expr: [ Symbol( "f", ), Symbol( ":", ), Symbol( "write", ), Call( [ [ Symbol( "\"{\"", ), ], [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "sin", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 129, }, ], ], ), ], line: 129, }, ], [ Symbol( "\", \"", ), ], [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "cos", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 129, }, ], ], ), ], line: 129, }, ], [ Symbol( "\", \"", ), ], [ Ident { expr: [ Symbol( "i", ), ], line: 129, }, Operator( ( "/", true, ), ), Symbol( "3", ), ], [ Symbol( "\"},\\n\"", ), ], ], ), ], line: 129, }, Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 129, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 130, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], line: 130, column: 5, }, ], end: 1261, }, line: 131, column: 4, }, Ident { expr: [ Symbol( "f", ), Symbol( ":", ), Symbol( "write", ), Call( [ [ Symbol( "\"}\"", ), ], ], ), ], line: 131, }, Ident { expr: [ Symbol( "f", ), Symbol( ":", ), Symbol( "seek", ), Call( [ [ Symbol( "\"set\"", ), ], [ Symbol( "0", ), ], ], ), ], line: 132, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "loadstring", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Symbol( ":", ), Symbol( "read", ), Call( [ [ Symbol( "'*a'", ), ], ], ), ], line: 134, }, ], ], ), ], line: 134, }, ], ], ), Call( [], ), ], line: 133, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Symbol( ":", ), Symbol( "close", ), Call( [], ), ], line: 135, }, ], ], ), ], line: 134, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "eq", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "300", ), ], ), Symbol( "]", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 137, }, ], [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "sin", ), Call( [ [ Symbol( "300", ), ], ], ), ], line: 137, }, ], ], ), ], line: 137, }, ], ], ), ], line: 135, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "eq", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "600", ), ], ), Symbol( "]", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 138, }, ], [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "sin", ), Call( [ [ Symbol( "600", ), ], ], ), ], line: 138, }, ], ], ), ], line: 138, }, ], ], ), ], line: 137, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "eq", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "500", ), ], ), Symbol( "]", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 139, }, ], [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "cos", ), Call( [ [ Symbol( "500", ), ], ], ), ], line: 139, }, ], ], ), ], line: 139, }, ], ], ), ], line: 138, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "eq", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "800", ), ], ), Symbol( "]", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 140, }, ], [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "cos", ), Call( [ [ Symbol( "800", ), ], ], ), ], line: 140, }, ], ], ), ], line: 140, }, ], ], ), ], line: 139, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "eq", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "200", ), ], ), Symbol( "]", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 141, }, ], [ Symbol( "200", ), Operator( ( "/", true, ), ), Symbol( "3", ), ], ], ), ], line: 141, }, ], ], ), ], line: 140, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "eq", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1000", ), ], ), Symbol( "]", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 142, }, ], [ Symbol( "1000", ), Operator( ( "/", true, ), ), Symbol( "3", ), ], [ Symbol( "0.001", ), ], ], ), ], line: 142, }, ], ], ), ], line: 141, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'+'", ), ], ], ), ], line: 142, }, DoBlock( CodeBlock { start: 1421, code: [ Variable { names: [ ( "NaN", false, ), ], values: [ [ Symbol( "10e500", ), Operator( ( "-", true, ), ), Symbol( "10e400", ), ], ], line: 146, column: 6, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "NaN", ), ], line: 147, }, Operator( ( "~=", true, ), ), Ident { expr: [ Symbol( "NaN", ), ], line: 147, }, ], ], ), ], line: 146, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "NaN", ), ], line: 148, }, Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "NaN", ), ], line: 148, }, ], ), Ident { expr: [], line: 148, }, ], ], ), ], line: 147, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "NaN", ), ], line: 149, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "NaN", ), ], line: 149, }, ], ), Ident { expr: [], line: 149, }, ], ], ), ], line: 148, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "NaN", ), ], line: 150, }, Operator( ( ">", true, ), ), Ident { expr: [ Symbol( "NaN", ), ], line: 150, }, ], ), Ident { expr: [], line: 150, }, ], ], ), ], line: 149, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "NaN", ), ], line: 151, }, Operator( ( ">=", true, ), ), Ident { expr: [ Symbol( "NaN", ), ], line: 151, }, ], ), Ident { expr: [], line: 151, }, ], ], ), ], line: 150, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Expr( [ Symbol( "0", ), Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "NaN", ), ], line: 152, }, ], ), Ident { expr: [], line: 152, }, ], ], ), ], line: 151, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "NaN", ), ], line: 153, }, Operator( ( "<", true, ), ), Symbol( "0", ), ], ), Ident { expr: [], line: 153, }, ], ], ), ], line: 152, }, Variable { names: [ ( "a", false, ), ], values: [ [ Table { data: [], line: 154, column: 5, }, ], ], line: 154, column: 5, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "pcall", ), Call( [ [ Lambda { args: [], body: CodeBlock { start: 79, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "NaN", ), ], line: 155, }, ], ), Symbol( "]", ), ], line: 155, }, ], values: [ [ Symbol( "1", ), ], ], line: 155, column: 6, }, ], end: 86, }, line: 155, column: 15, }, ], ], ), ], line: 155, }, ], ], ), ], line: 154, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "NaN", ), ], line: 156, }, ], ), Symbol( "]", ), ], line: 156, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 155, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 156, }, ], values: [ [ Symbol( "1", ), ], ], line: 157, column: 6, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "pcall", ), Call( [ [ Lambda { args: [], body: CodeBlock { start: 111, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "NaN", ), ], line: 158, }, ], ), Symbol( "]", ), ], line: 158, }, ], values: [ [ Symbol( "1", ), ], ], line: 158, column: 6, }, ], end: 118, }, line: 158, column: 15, }, ], ], ), ], line: 158, }, ], ], ), ], line: 157, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "NaN", ), ], line: 159, }, ], ), Symbol( "]", ), ], line: 159, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 158, }, ], end: 1551, }, ), Ident { expr: [ Symbol( "require", ), Call( [ [ Symbol( "\"checktable\"", ), ], ], ), ], line: 160, }, Ident { expr: [ Symbol( "stat", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 163, }, ], ], ), ], line: 162, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 163, }, ], values: [ [ Symbol( "nil", ), ], ], line: 169, column: 0, }, Variable { names: [ ( "a", false, ), ( "b", false, ), ], values: [ [ Symbol( "'10'", ), ], [ Symbol( "'20'", ), ], ], line: 169, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 170, }, Operator( ( "*", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 170, }, Operator( ( "==", true, ), ), Symbol( "200", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 170, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 170, }, Operator( ( "==", true, ), ), Symbol( "30", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 170, }, Operator( ( "-", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 170, }, Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Symbol( "10", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 170, }, Operator( ( "/", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 170, }, Operator( ( "==", true, ), ), Symbol( "0.5", ), Operator( ( "and", true, ), ), Operator( ( "-", false, ), ), Ident { expr: [ Symbol( "b", ), ], line: 170, }, Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Symbol( "20", ), ], ], ), ], line: 169, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 171, }, Operator( ( "==", true, ), ), Symbol( "'10'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 171, }, Operator( ( "==", true, ), ), Symbol( "'20'", ), ], ], ), ], line: 170, }, Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "randomseed", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 171, }, Variable { names: [ ( "i", false, ), ], values: [ [ Symbol( "0", ), ], ], line: 177, column: 0, }, Variable { names: [ ( "Max", false, ), ], values: [ [ Symbol( "0", ), ], ], line: 178, column: 0, }, Variable { names: [ ( "Min", false, ), ], values: [ [ Symbol( "2", ), ], ], line: 179, column: 0, }, RepeatLoop { condition: [ Ident { expr: [ Symbol( "flag", ), ], line: 185, }, Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 185, }, Operator( ( ">", true, ), ), Symbol( "10000", ), ], body: CodeBlock { start: 1630, code: [ Variable { names: [ ( "t", false, ), ], values: [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "random", ), Call( [], ), ], line: 180, }, ], ], line: 180, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "Max", ), ], line: 180, }, ], values: [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "max", ), Call( [ [ Ident { expr: [ Symbol( "Max", ), ], line: 181, }, ], [ Ident { expr: [ Symbol( "t", ), ], line: 181, }, ], ], ), ], line: 181, }, ], ], line: 181, column: 10, }, Alter { names: [ Ident { expr: [ Symbol( "Min", ), ], line: 181, }, ], values: [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "min", ), Call( [ [ Ident { expr: [ Symbol( "Min", ), ], line: 182, }, ], [ Ident { expr: [ Symbol( "t", ), ], line: 182, }, ], ], ), ], line: 182, }, ], ], line: 182, column: 10, }, Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 182, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 183, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], line: 183, column: 5, }, Alter { names: [ Ident { expr: [ Symbol( "flag", ), ], line: 183, }, ], values: [ [ Ident { expr: [ Symbol( "eq", ), Call( [ [ Ident { expr: [ Symbol( "Max", ), ], line: 184, }, ], [ Symbol( "1", ), ], [ Symbol( "0.001", ), ], ], ), ], line: 184, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "eq", ), Call( [ [ Ident { expr: [ Symbol( "Min", ), ], line: 184, }, ], [ Symbol( "0", ), ], [ Symbol( "0.001", ), ], ], ), ], line: 184, }, ], ], line: 184, column: 19, }, ], end: 1683, }, line: 185, column: 6, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "0", ), Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "Min", ), ], line: 186, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "Max", ), ], line: 186, }, Operator( ( "<", true, ), ), Symbol( "1", ), ], ], ), ], line: 185, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "flag", ), ], line: 187, }, ], ], ), ], line: 186, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Symbol( "10", ), ], step: None, code: CodeBlock { start: 1710, code: [ Variable { names: [ ( "t", false, ), ], values: [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "random", ), Call( [ [ Symbol( "5", ), ], ], ), ], line: 190, }, ], ], line: 190, column: 9, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "1", ), Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "t", ), ], line: 191, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "t", ), ], line: 191, }, Operator( ( "<=", true, ), ), Symbol( "5", ), ], ], ), ], line: 190, }, ], end: 1730, }, line: 192, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 192, }, ], values: [ [ Symbol( "0", ), ], ], line: 194, column: 3, }, Alter { names: [ Ident { expr: [ Symbol( "Max", ), ], line: 194, }, ], values: [ [ Operator( ( "-", false, ), ), Symbol( "200", ), ], ], line: 195, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "Min", ), ], line: 195, }, ], values: [ [ Symbol( "200", ), ], ], line: 197, column: 0, }, RepeatLoop { condition: [ Ident { expr: [ Symbol( "flag", ), ], line: 203, }, Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 203, }, Operator( ( ">", true, ), ), Symbol( "10000", ), ], body: CodeBlock { start: 1741, code: [ Variable { names: [ ( "t", false, ), ], values: [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "random", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "10", ), ], [ Symbol( "0", ), ], ], ), ], line: 198, }, ], ], line: 198, column: 12, }, Alter { names: [ Ident { expr: [ Symbol( "Max", ), ], line: 198, }, ], values: [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "max", ), Call( [ [ Ident { expr: [ Symbol( "Max", ), ], line: 199, }, ], [ Ident { expr: [ Symbol( "t", ), ], line: 199, }, ], ], ), ], line: 199, }, ], ], line: 199, column: 10, }, Alter { names: [ Ident { expr: [ Symbol( "Min", ), ], line: 199, }, ], values: [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "min", ), Call( [ [ Ident { expr: [ Symbol( "Min", ), ], line: 200, }, ], [ Ident { expr: [ Symbol( "t", ), ], line: 200, }, ], ], ), ], line: 200, }, ], ], line: 200, column: 10, }, Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 200, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 201, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], line: 201, column: 5, }, Alter { names: [ Ident { expr: [ Symbol( "flag", ), ], line: 201, }, ], values: [ [ Expr( [ Ident { expr: [ Symbol( "Max", ), ], line: 202, }, Operator( ( "==", true, ), ), Symbol( "0", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "Min", ), ], line: 202, }, Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Symbol( "10", ), ], ), Ident { expr: [], line: 202, }, ], ], line: 202, column: 12, }, ], end: 1791, }, line: 203, column: 6, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "10", ), Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "Min", ), ], line: 204, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "Max", ), ], line: 204, }, Operator( ( "<=", true, ), ), Symbol( "0", ), ], ], ), ], line: 203, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "flag", ), ], line: 205, }, ], ], ), ], line: 204, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'OK'", ), ], ], ), ], line: 205, }, ]