diff options
Diffstat (limited to 'core/math.nom')
| -rw-r--r-- | core/math.nom | 178 |
1 files changed, 89 insertions, 89 deletions
diff --git a/core/math.nom b/core/math.nom index 2bc3e6f..8ee5d62 100644 --- a/core/math.nom +++ b/core/math.nom @@ -1,4 +1,4 @@ -#!/usr/bin/env nomsu -V4.12.12.8 +#!/usr/bin/env nomsu -V5.12.12.8 # This file defines some common math literals and functions @@ -12,10 +12,10 @@ use "core/collections.nom" # Literals: test: - assume (all of [inf, NaN, pi, tau, golden ratio, e]) or barf "\ - ..math constants failed" - %nan = (NaN) - assume (%nan != %nan) or barf "NaN failed" + assume (all of [inf, NaN, pi, tau, golden ratio, e]) or barf \ + .."math constants failed" + $nan = (NaN) + assume ($nan != $nan) or barf "NaN failed" [infinity, inf] all compile to "math.huge" [not a number, NaN, nan] all compile to "(0/0)" [pi, Pi, PI] all compile to "math.pi" @@ -26,8 +26,8 @@ test: # Functions: test: assume (("5" as a number) == 5) -((% as a number)'s meaning) = ((tonumber %)'s meaning) -((% as number)'s meaning) = ((tonumber %)'s meaning) +(($ as a number)'s meaning) = ((tonumber $)'s meaning) +(($ as number)'s meaning) = ((tonumber $)'s meaning) test: assume (..) all of [..] @@ -35,38 +35,38 @@ test: arc tangent 5, arc tangent 5 / 10, hyperbolic sine 5, hyperbolic cosine 5 hyperbolic tangent 5, e^ 5, ln 5, log base 2 of 5, floor 5, ceiling 5, round 5 ..or barf "math functions failed" -[absolute value %, | % |, abs %] all compile to "math.abs(\(% as lua expr))" -[square root %, square root of %, √ %, sqrt %] all compile to "\ - ..math.sqrt(\(% as lua expr))" -[sine %, sin %] all compile to "math.sin(\(% as lua expr))" -[cosine %, cos %] all compile to "math.cos(\(% as lua expr))" -[tangent %, tan %] all compile to "math.tan(\(% as lua expr))" -[arc sine %, asin %] all compile to "math.asin(\(% as lua expr))" -[arc cosine %, acos %] all compile to "math.acos(\(% as lua expr))" -[arc tangent %, atan %] all compile to "math.atan(\(% as lua expr))" -[arc tangent %y / %x, atan2 %y %x] all compile to "\ - ..math.atan2(\(%y as lua expr), \(%x as lua expr))" -[hyperbolic sine %, sinh %] all compile to "math.sinh(\(% as lua expr))" -[hyperbolic cosine %, cosh %] all compile to "math.cosh(\(% as lua expr))" -[hyperbolic tangent %, tanh %] all compile to "math.tanh(\(% as lua expr))" -[e^ %, exp %] all compile to "math.exp(\(% as lua expr))" -[natural log %, ln %, log %] all compile to "math.log(\(% as lua expr))" -[log % base %base, log base %base of %] all compile to "\ - ..math.log(\(% as lua expr), \(%base as lua expr))" -(floor %) compiles to "math.floor(\(% as lua expr))" -[ceiling %, ceil %] all compile to "math.ceil(\(% as lua expr))" -[round %, % rounded] all compile to "math.floor(\(% as lua expr) + .5)" +[absolute value $, | $ |, abs $] all compile to "math.abs(\($ as lua expr))" +[square root $, square root of $, √ $, sqrt $] all compile to \ +.."math.sqrt(\($ as lua expr))" +[sine $, sin $] all compile to "math.sin(\($ as lua expr))" +[cosine $, cos $] all compile to "math.cos(\($ as lua expr))" +[tangent $, tan $] all compile to "math.tan(\($ as lua expr))" +[arc sine $, asin $] all compile to "math.asin(\($ as lua expr))" +[arc cosine $, acos $] all compile to "math.acos(\($ as lua expr))" +[arc tangent $, atan $] all compile to "math.atan(\($ as lua expr))" +[arc tangent $y / $x, atan2 $y $x] all compile to \ +.."math.atan2(\($y as lua expr), \($x as lua expr))" +[hyperbolic sine $, sinh $] all compile to "math.sinh(\($ as lua expr))" +[hyperbolic cosine $, cosh $] all compile to "math.cosh(\($ as lua expr))" +[hyperbolic tangent $, tanh $] all compile to "math.tanh(\($ as lua expr))" +[e^ $, exp $] all compile to "math.exp(\($ as lua expr))" +[natural log $, ln $, log $] all compile to "math.log(\($ as lua expr))" +[log $ base $base, log base $base of $] all compile to \ +.."math.log(\($ as lua expr), \($base as lua expr))" +(floor $) compiles to "math.floor(\($ as lua expr))" +[ceiling $, ceil $] all compile to "math.ceil(\($ as lua expr))" +[round $, $ rounded] all compile to "math.floor(\($ as lua expr) + .5)" test: assume ((463 to the nearest 100) == 500) or barf "rounding failed" assume ((2.6 to the nearest 0.25) == 2.5) or barf "rounding failed" -externally (%n to the nearest %rounder) means (..) - =lua "(\%rounder)*math.floor((\%n / \%rounder) + .5)" +externally ($n to the nearest $rounder) means (..) + =lua "(\$rounder)*math.floor((\$n / \$rounder) + .5)" # Any/all -externally [all of %items, all %items] all mean: - for % in %items: - unless %: +externally [all of $items, all $items] all mean: + for $ in $items: + unless $: return (no) return (yes) @@ -82,10 +82,10 @@ externally [all of %items, all %items] all mean: %lua::add ")" return %lua -[not all of %items, not all %items] all parse as (not (all of %items)) -externally [any of %items, any %items] all mean: - for % in %items: - if %: +[not all of $items, not all $items] all parse as (not (all of $items)) +externally [any of $items, any $items] all mean: + for $ in $items: + if $: return (yes) return (no) @@ -101,14 +101,14 @@ externally [any of %items, any %items] all mean: %lua::add ")" return %lua -[none of %items, none %items] all parse as (not (any of %items)) +[none of $items, none $items] all parse as (not (any of $items)) # Sum/product -externally [sum of %items, sum %items] all mean: - %total = 0 - for % in %items: - %total += % - return %total +externally [sum of $items, sum $items] all mean: + $total = 0 + for $ in $items: + $total += $ + return $total #[sum of %items, sum %items] all compile to: unless (%items.type is "List"): @@ -122,11 +122,11 @@ externally [sum of %items, sum %items] all mean: %lua::add ")" return %lua -externally [product of %items, product %items] all mean: - %prod = 1 - for % in %items: - %prod *= % - return %prod +externally [product of $items, product $items] all mean: + $prod = 1 + for $ in $items: + $prod *= $ + return $prod #[product of %items, product %items] all compile to: unless (%items.type is "List"): @@ -140,61 +140,61 @@ externally [product of %items, product %items] all mean: %lua::add ")" return %lua -externally [avg of %items, average of %items] all mean (..) - (sum of %items) / (size of %items) +externally [avg of $items, average of $items] all mean (..) + (sum of $items) / (size of $items) # Min/max -externally [min of %items, smallest of %items, lowest of %items] all mean: - %best = (nil) - for % in %items: - if ((%best == (nil)) or (% < %best)): %best = % - return %best +externally [min of $items, smallest of $items, lowest of $items] all mean: + $best = (nil) + for $ in $items: + if (($best == (nil)) or ($ < $best)): $best = $ + return $best externally [..] - max of %items, biggest of %items, largest of %items, highest of %items + max of $items, biggest of $items, largest of $items, highest of $items ..all mean: - %best = (nil) - for % in %items: - if ((%best == (nil)) or (% > %best)): %best = % - return %best + $best = (nil) + for $ in $items: + if (($best == (nil)) or ($ > $best)): $best = $ + return $best test: - assume ((min of [3, -4, 1, 2] by % = (% * %)) == 1) - assume ((max of [3, -4, 1, 2] by % = (% * %)) == -4) + assume ((min of [3, -4, 1, 2] by $ = ($ * $)) == 1) + assume ((max of [3, -4, 1, 2] by $ = ($ * $)) == -4) -(min of %items by %item = %value_expr) parses as (..) +(min of $items by $item = $value_expr) parses as (..) result of: - %best = (nil) - %best_key = (nil) - for %item in %items: - %key = %value_expr - if ((%best == (nil)) or (%key < %best_key)): - %best = %item - %best_key = %key - return %best - -(max of %items by %item = %value_expr) parses as (..) + $best = (nil) + $best_key = (nil) + for $item in $items: + $key = $value_expr + if (($best == (nil)) or ($key < $best_key)): + $best = $item + $best_key = $key + return $best + +(max of $items by $item = $value_expr) parses as (..) result of: - %best = (nil) - %best_key = (nil) - for %item in %items: - %key = %value_expr - if ((%best == (nil)) or (%key > %best_key)): - %best = %item - %best_key = %key - return %best + $best = (nil) + $best_key = (nil) + for $item in $items: + $key = $value_expr + if (($best == (nil)) or ($key > $best_key)): + $best = $item + $best_key = $key + return $best # Random functions -externally (seed random with %) means: - lua> "math.randomseed(\%);\nfor i=1,20 do math.random(); end" +externally (seed random with $) means: + lua> "math.randomseed(\$);\nfor i=1,20 do math.random(); end" (seed random) parses as (seed random with (=lua "os.time()")) [random number, random, rand] all compile to "math.random()" -[random int %n, random integer %n, randint %n] all compile to "\ - ..math.random(\(%n as lua expr))" +[random int $n, random integer $n, randint $n] all compile to \ +.."math.random(\($n as lua expr))" -[random from %low to %high, random number from %low to %high, rand %low %high] \ -..all compile to "math.random(\(%low as lua expr), \(%high as lua expr))" +[random from $low to $high, random number from $low to $high, rand $low $high] \ +..all compile to "math.random(\($low as lua expr), \($high as lua expr))" externally [..] - random choice from %elements, random choice %elements, random %elements -..all mean (=lua "\%elements[math.random(#\%elements)]") + random choice from $elements, random choice $elements, random $elements +..all mean (=lua "\$elements[math.random(#\$elements)]") |
