Login
7 branches 0 tags
Ben (Win10) Fixed exception handling closures not being poped from the stack 8b1fa21 3 years ago 631 Commits
nujel / stdlib / math / math.nuj
;; Nujel - Copyright (C) 2020-2021 - Benjamin Vincent Schulenburg
;; This project uses the MIT license, a copy should be included under /LICENSE

[def PI 3.141592653589793]
[def π  3.141592653589793]

[defmacro ++ [i]
  "Increment I by 1 and store the result in I"
  `[set! ~i [+ 1 ~i]]]

[defmacro -- [i]
  "Decrement I by 1 and store the result in I"
  `[set! ~i [+ -1 ~i]]]

[defn +x [α]
  "Return a function that adds α to it's argument, useful for mapping"
  [fn [β]
      [+ α β]]]

[defn >> [val amount]
  "Shifts VAL by AMOUNT bits to the right"
  [ash val [- amount]]]

[defn fib [i]
  "Terribly inefficient, but, useful for testing the GC"
  [if [< i 2] i
      [+ [fib [- i 2]] [fib [- i 1]]]]]

[defn wrap-value [val min max] "Constrains VAL to be within MIN and MAX, wrapping it around"
  [+ min [% [- val min] [- max min]]]]

[defmacro +1 [v]
  `[+ 1 ~v]]

[defn radians [degrees]
  "Convert a quantity in degrees to radians"
  [/ [* π degrees] 180.0]]